展开查看
CP343-1通过FC6接收读码器的字符串:“ERROR”到DB2.DBX0.0开始的6个字节,序列位有时是正常的;读一次13位数字字符串后,再读“ERROR”字符串序列就发生变化,如图,怎么才能让ERROR的序列(或类似5位字符序列)不发生变化(占位符始终保持在第一位)?
提问者:zhongshangaopan
343-1 tcp通讯必须接收定长的数据,如果通讯对象发送的数据长度是变长(不固定)的,你最好使用PN口的cpu去做!
FC6接收的数据长度是固定的吗?我项目也发现接收长度不固定,接收的内容会乱。望高手指点!
使用CP343-1模块实现不同网段(例如:我们的网段192.168.0.X客户的服务器网段10.223.91.X)的数据交互,
硬件配置好以后,利用FC5发送 利用FC6接收
数据接收:
FC6接收程序没有像FC5发送程序有激活的ACT信号,通过测试发现如果FC6RECV的数据接收空间定义为10个Byte
,1)利用网络小助手发送2个字节,网络小助手前4次发送,"Revice_DB".ReciveBuff这个空间没有接收到
任何数据,第5次发送的时候"Revice_DB".ReciveBuff这个空间10个字节都有数据,是前5次累加的数据。
2)如果利用网络下助手一次发送10个字节的数据,"Revice_DB".ReciveBuff这个空间接收到的数据
就是当前这次发送的10个字节的数据。
3)如果小助手发送超过10个以上的字节,"Revice_DB".ReciveBuff只显示前十个字节的数据,如果小助手
把超过10个的数据再发送一次,"Revice_DB".ReciveBuff显示的数据是上次没有显示的数据加上这次发送前面
的数据,这次剩下的数据依照这个规律累加下去。
综上所述:
我们需要的是实时接收当前客户服务器的数据,不能出现上次和本次数据的累加数据,因为客户发送的数据命令都是独立的,每一次长短不一样,也不可能等接收区数据空间满,才可以接收。如果接收区满才接收显示接收到的数据,这样是不行的。
我们必须需要的数据是客户服务器当前发送的数据,如果客户再次发送数据,我们接收的数据不能和之前的数据有任何关系,也就是之前的数据需要清掉,接收到的是当前客户发送的实时的独立的数据。
疑问1:如果实现我们需要的功能FC6是否可以使用
2:FC6接收数据的原理是什么
3: FC6的NDR为1时,是否代表数据接收的完成,我们如何知道数据已经接收完成。