官方淘宝店 易迪拓培训 旧站入口
首页 > 无线通信 > 通信技术学习讨论 > 串口通信如何保证可靠性

串口通信如何保证可靠性

12-30
要做一个串口通信的东西,但是运行环境不好。所以消息可能丢。
使用keil编写。
协议已经确定了。如何去读写数据呢。主要是担心写一个数据可能会丢,读数据可能对方没有发送成功,可能发送了两次,诸如此类的情况。
总觉得这些情况应该有成熟的解决方案,但搜了没有搜到。
请问各位大牛如何解决这个问题,或者有什么书籍 网页有相关介绍。

移植个tcp协议上去如何。。。

可靠性可以通过握手实现。例如要求回传确认收到正确信息之类的。
读数据一般是通过UART中断实现的,串口收到数据后,会给一个中断信号,你去处理这个中断把数据拷到你的存储区进行处理即可。如果没有中断,应该可以查询串口的状态位来获取是否收到数据。写数据直接往端口写就可以呢。

可以参考 Modbus

slip?

crc校验?

在协议帧的最后加一字节作和校验。
怕重复加帧计数。

感谢楼上诸位回答,加校验码,加帧计数,握手协议这些都考虑过,我是想这么底层的常用的东西,是否有现成的成熟的代码。
实现tcp协议太夸张了。那个modbus不知道是否容易上手,另外协议现在是确定的,我应该无法再换成modbus了吧。
除了scanf和printf,还有什么方法可以读写数据。
另外scanf可以实现超时机制吗。

串口芯片没有校验功能?

看两遍modbus协议

modbus还真可以,而且还有现成的库

Top