• 5333阅读
  • 7回复

[提问]上位机和下位机串口通信,怎么确认对方是否接收到数据? [复制链接]

上一主题 下一主题
离线ycgxy1650601
 

只看楼主 倒序阅读 楼主  发表于: 2017-09-18

           Qt写上位机,通过串口与下位机进行通信;比如上位机发送数据给下位机,下位机可能接收到数据或接收不到,怎样做才能确认下位机到底有没有收到数据。
          我的办法:上位机发送数据给下位机,下位机接收到数据就返回对应指令给上位机,上位机接收到指令并进行判断;这样就能确认下位机是否接收到。不知道大家有没有更好的办法?

在这过程中,我也碰到了困难,不知道怎么处理:http://www.qtcn.org/bbs/read-htm-tid-64065.html
离线九重水

只看该作者 1楼 发表于: 2017-09-18
新嫩的感觉,
看看MODBUS协议吧。
离线lanliuyi61

只看该作者 2楼 发表于: 2017-09-19
要用modbus协议也得你的下位机就是用的Modbus协议才行。

既然要通信 就需要两方有约定才行,你下位机的通信方式你得先知道你才能开发上位机。

离线ycgxy1650601

只看该作者 3楼 发表于: 2017-09-19
回 九重水 的帖子
九重水:新嫩的感觉,
看看MODBUS协议吧。[表情]  (2017-09-18 15:19) 

我网上看到过一些例子,请教一下是不是modbus协议:
第一种:下位机和上位机都分别定义相同的结构体变量,变量结构为:桢头、数据长度、指令、数据、校验、帧尾。其中结构体成员的内存大小都是对应的。这是属于MODBUS协议的RTU类型吗?
第二种:下位机和步进电机通过rs485通信,发送'/0CP'类似的代码才能驱动电机。这是属于MODBUS协议的ASCII类型吗?
离线ycgxy1650601

只看该作者 4楼 发表于: 2017-09-19
回 lanliuyi61 的帖子
lanliuyi61:要用modbus协议也得你的下位机就是用的Modbus协议才行。
既然要通信 就需要两方有约定才行,你下位机的通信方式你得先知道你才能开发上位机。
 (2017-09-19 15:56) 

我网上看到过一些例子,请教一下是不是modbus协议:
第一种:下位机和上位机都分别定义相同的结构体变量,变量结构为:桢头、数据长度、指令、数据、校验、帧尾。其中结构体成员的内存大小都是对应的。这是属于MODBUS协议的RTU类型吗?
第二种:下位机和步进电机通过rs485通信,发送'/0CP'类似的代码才能驱动电机。这是属于MODBUS协议的ASCII类型吗?
离线九重水

只看该作者 5楼 发表于: 2017-09-20
串口通信不一定要modbus协议,它只是比较通用而已,上下位机约定一致即可。
它的官网如下,百度一下也可以看到很多翻译的资料:
http://www.modbus.org/
你对照一下就可以看到是不是modus协议了,不过即使不是,应该也很类似了,很多自定义协议都借鉴了modbus
离线lanliuyi61

只看该作者 6楼 发表于: 2017-09-20
回 ycgxy1650601 的帖子
ycgxy1650601:我网上看到过一些例子,请教一下是不是modbus协议:
第一种:下位机和上位机都分别定义相同的结构体变量,变量结构为:桢头、数据长度、指令、数据、校验、帧尾。其中结构体成员的内存大小都是对应的。这是属于MODBUS协议的RTU类型吗?
第二种:下位机和步进电机通过rs485通信, .. (2017-09-19 21:52) 

RS485属于更底层的协议,和MODBUS不是一层的,你的情况应该不用关心RS485这一层。

发送的'/0cp' 这一句已经是MODBUS层的了,如果一个包只有这么短,那就不是MODBUS。  你上面也说了MODBUS有桢头、数据长度、指令、数据、校验、帧尾。

建议你直接和你的开发下位机的人聊一聊,找他学一学。

基础知识需要补充。
离线ycgxy1650601

只看该作者 7楼 发表于: 2017-09-20
谢谢大家
快速回复
限100 字节
 
上一个 下一个