查看完整版本: [-- 上位机和下位机串口通信,怎么确认对方是否接收到数据? --]

QTCN开发网 -> Qt嵌入式开发 -> 上位机和下位机串口通信,怎么确认对方是否接收到数据? [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

ycgxy1650601 2017-09-18 11:07

上位机和下位机串口通信,怎么确认对方是否接收到数据?


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

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

九重水 2017-09-18 15:19
新嫩的感觉,
看看MODBUS协议吧。

lanliuyi61 2017-09-19 15:56
要用modbus协议也得你的下位机就是用的Modbus协议才行。

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


ycgxy1650601 2017-09-19 21:52
九重水:新嫩的感觉,
看看MODBUS协议吧。[表情]  (2017-09-18 15:19) 

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

ycgxy1650601 2017-09-19 21:52
lanliuyi61:要用modbus协议也得你的下位机就是用的Modbus协议才行。
既然要通信 就需要两方有约定才行,你下位机的通信方式你得先知道你才能开发上位机。
 (2017-09-19 15:56) 

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

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

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

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

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

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

基础知识需要补充。

ycgxy1650601 2017-09-20 09:47
谢谢大家


查看完整版本: [-- 上位机和下位机串口通信,怎么确认对方是否接收到数据? --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled