马龙伟

Results 21 comments of 马龙伟

不是吧。我喂狗优先级是30,倒数第二,但是flashdb在格式化的时候,喂狗线程照样运行的啊。其他线程也照样运行

> 我看了一下从机的代码,一方面对于map_buf数组长度有限制,这个还不是主要问题(因为Modbus协议本身就有定义每次最多只允许操作124个寄存器). 但是不管是读取寄存器还是写入寄存器,你都需要把该字段的所有寄存器全部读取一次,这样的操作是否有冗余,这样的操作是为什么?理论上读取寄存器我们只需要读取对应的寄存器就好了,不需要把整个字段的寄存器都读取出来。写入寄存器的时候也不需要读取寄存器啊!所以这一块没有特别搞懂?是否可以优化。 这是我为了应用层代码简单实现的一个方式,你有更好的方式可以自己实现

> > 这是我为了应用层代码简单实现的一个方式,你有更好的方式可以自己实现 > > 借楼,关于这个问题我也有些想法,这边三个issue两个讲的这同一个问题,我就不新建issue了。 首先,现有情况: > > 1. 对于楼主说的情况,会有一些读取效率问题,不过由于都是内存里面复制数据操作,对效率的影响应当是可以接受的 > 2. 对于本身是一个大数组的连续多个寄存器,比如1000个32位数据,需要在maps中定义为20个地址段,get和set接口函数需要定义共40个函数,虽然可以通过宏定义进行一些简化,但是看起来还是很繁琐 > > 我的问题是:有没有可能给map的get接口添加一个index参数来解决这个问题?读取的时候按地址段的index偏移读满map_buf,之后再进行后续处理,这样看起来可以解决掉这两个小问题。我检查了一下03和06指令的逻辑感觉可以实现,但其他的指令我还不清楚不熟悉,所以在这里请教一下大佬有没有这样考虑过。这样做在处理其他指令的时候会有麻烦吗? 可以的,后续会增加一些配置项,但其实并没有想的这么简单。用户再使用这个 index 的时候就没有目前这么简单,直接把 map 中所需要的全部拷贝进去即可。 会考虑放入 address 参数供使用,但也会有一些问题需要解决,如: 如果实在一个地址段的情况下,1000个 32 位共 2000 个寄存器横跨多个...

能具体说明下么 Util 文件夹下的是我提供的简易从机接入接口,文档里也有说明由于局部数组的原因,每一块的长度不能大于一定值

我文档里都有说明啊,为什么多寄存器项目无法使用,寄存器多定义几个数组成员不就行了,它是数组啊,不是单单一个成员。 至于为何是能返回且是0,这个每个人用法都不一,我是尽可能兼容,个人另外的需求的话可以去改下源码。 ![image](https://user-images.githubusercontent.com/28485255/199652540-5c95af7f-59ae-42ec-a784-a4b99dc4ae71.png) ![image](https://user-images.githubusercontent.com/28485255/199652581-ff04f48b-ac5e-4b85-9305-ca67af74fc26.png)

![image](https://user-images.githubusercontent.com/28485255/199652790-ea923708-5d63-49fe-9708-dbc27cf5f7f0.png)

作为从机,数据长度都是根据功能码和跟在后面代表长度的字节决定的呀。 “可以用requst packet推出rsp packet len” 没看懂加在哪里

我例子中的广播处理粘包的例子里面其实是接收数据然后判断数据长度而已,基本也不耗时间。

> mcu 的modbusTCP有例程吗 mcu 的没提供,和 wsl 下的demo一样,调用几个 API 接口就行