T
taiyuntao
Unregistered / Unconfirmed
GUEST, unregistred user!
各位富翁:
我先概述一下我的问题:我在做一个通信的小软件,串口通信,协议modbus-rtu.要求每次查询的寄存器不超过32个,下位机数量会随使用场所变化。因为提供的寄存器地址不连续,我只能分五次查询。现在我的做法如下:
发送:在一个timer里分五次发送完查询的寄存器;
接收:定义一个接收变量将接收到的字符保存,定时去处理这个接收变量。我定时处理的作法是首先i:=pos('1F04XX',接收变量),如果i>0接着截取固定的长度,1F为设备地址,04为功能码,xx为设备回应的数据字节数,但现在我在现场试验过,这样处理截取的数据会出错,常常头是正确的但数据长度明显不正确,还有的是头正确但中间又包含别的头。请富翁们给我支招!
我先概述一下我的问题:我在做一个通信的小软件,串口通信,协议modbus-rtu.要求每次查询的寄存器不超过32个,下位机数量会随使用场所变化。因为提供的寄存器地址不连续,我只能分五次查询。现在我的做法如下:
发送:在一个timer里分五次发送完查询的寄存器;
接收:定义一个接收变量将接收到的字符保存,定时去处理这个接收变量。我定时处理的作法是首先i:=pos('1F04XX',接收变量),如果i>0接着截取固定的长度,1F为设备地址,04为功能码,xx为设备回应的数据字节数,但现在我在现场试验过,这样处理截取的数据会出错,常常头是正确的但数据长度明显不正确,还有的是头正确但中间又包含别的头。请富翁们给我支招!