串口通信如何保证可靠性
12-30
要做一个串口通信的东西,但是运行环境不好。所以消息可能丢。
使用keil编写。
协议已经确定了。如何去读写数据呢。主要是担心写一个数据可能会丢,读数据可能对方没有发送成功,可能发送了两次,诸如此类的情况。
总觉得这些情况应该有成熟的解决方案,但搜了没有搜到。
请问各位大牛如何解决这个问题,或者有什么书籍 网页有相关介绍。
使用keil编写。
协议已经确定了。如何去读写数据呢。主要是担心写一个数据可能会丢,读数据可能对方没有发送成功,可能发送了两次,诸如此类的情况。
总觉得这些情况应该有成熟的解决方案,但搜了没有搜到。
请问各位大牛如何解决这个问题,或者有什么书籍 网页有相关介绍。
移植个tcp协议上去如何。。。
可靠性可以通过握手实现。例如要求回传确认收到正确信息之类的。
读数据一般是通过UART中断实现的,串口收到数据后,会给一个中断信号,你去处理这个中断把数据拷到你的存储区进行处理即可。如果没有中断,应该可以查询串口的状态位来获取是否收到数据。写数据直接往端口写就可以呢。
可以参考 Modbus
slip?
crc校验?
在协议帧的最后加一字节作和校验。
怕重复加帧计数。
感谢楼上诸位回答,加校验码,加帧计数,握手协议这些都考虑过,我是想这么底层的常用的东西,是否有现成的成熟的代码。
实现tcp协议太夸张了。那个modbus不知道是否容易上手,另外协议现在是确定的,我应该无法再换成modbus了吧。
除了scanf和printf,还有什么方法可以读写数据。
另外scanf可以实现超时机制吗。
串口芯片没有校验功能?
看两遍modbus协议
modbus还真可以,而且还有现成的库
相关文章:
- 请教RS232串口通信实例(05-08)
- 怎样由香农的信道容量公式看出有效性和可靠性的矛盾问题?(05-08)
- 485可靠性求助(05-08)
射频专业培训教程推荐