串口USART UART 接收结束标志是怎么回事 这是一种自己定义的协议 没有通用协议
2017-09-29 15:38
281 查看
原文链接:http://www.openedv.com/posts/list/53847.htm
毫无疑问是的,
0D 0A这是自行定义的一种数据帧结束标志,不定义这个不没法判断你这一帧数据什么时候结束了,
0D 0A是什么东西咧,它就是我们的回车键的ASCII码, 0D回车,0A换行
像在windows超级终端里一条数据输入完按回车正好来了个0D 0A,表示数据发完了
串口如何检测数据接收完毕或串口接收超时,这个问题是个老大难问题,没有好的协议支持,就要浪费单片机大量的资源去解决这个问题。
比如浪费一个定时器,每次在中断里接到一个字节就开启定时器去记时,9600大概1MS一个字节,定时器到3MS中断检查有没收到数据了就表示数据帧结束了,
又比如串口绑在DMA通道上,通过串口的空闲中断来判断接收完成
问题在于现在有大量的工业通讯协议如MODBUS等没有帧结束标志,实在令人发指
f(USART_RX_STA&0x40) { if(Res!=0x0a) { USART_RX_STA=0;// } else { USART_RX_STA|=0x80; } } ======================================= 关于原子历程里面的这段函数 如果数据包里含有0x01 0x02 0x03 0x0d 0x03 0x05 0x0d 0x0a 这种数据是不是就接收不到我想要的数据了啊 有点疑问 |
最佳答案
毫无疑问是的,0D 0A这是自行定义的一种数据帧结束标志,不定义这个不没法判断你这一帧数据什么时候结束了,
0D 0A是什么东西咧,它就是我们的回车键的ASCII码, 0D回车,0A换行
像在windows超级终端里一条数据输入完按回车正好来了个0D 0A,表示数据发完了
串口如何检测数据接收完毕或串口接收超时,这个问题是个老大难问题,没有好的协议支持,就要浪费单片机大量的资源去解决这个问题。
比如浪费一个定时器,每次在中断里接到一个字节就开启定时器去记时,9600大概1MS一个字节,定时器到3MS中断检查有没收到数据了就表示数据帧结束了,
又比如串口绑在DMA通道上,通过串口的空闲中断来判断接收完成
问题在于现在有大量的工业通讯协议如MODBUS等没有帧结束标志,实在令人发指
相关文章推荐
- 有n个人到图书馆还书,还有n个人到图书馆借书,若他们要还和借的书是同一种书且图书馆内现在没有此书,求他们要怎么排队才能保证每个人都能借到书
- mina的编码和解码以及断包的处理,发送自己定义协议,仿qq聊天,发送xml或json
- eclipse有时新建一个PHP文件或者是HTML文件没有快捷键太麻烦了,总要用鼠标点 怎么创建自己的快捷键呢?
- objective-C中没有"接口"与"泛型"这样的说法,但有正式协议protocal 和 一种特殊的指针id类型
- 安装好DEDE织梦程序以后,后台模板不对,添加栏目的时候最下面没有了 确认和取消 按钮 怎么回事?
- 某网站出现自己电脑的搜索记录,这是怎么回事呢?
- 突然发现自己怎么这么没有效率呢?
- android手机有些文件没有后缀名是怎么回事
- error:本地函数定义是非法的 此行有一个“{”没有匹配项,在注释中遇到意外的文件结束
- 笔记本开机只有电池灯亮还可以听见工作声音就是屏幕也没有反应是怎么回事
- SMPP是一种通用的短信接口协议
- 使用AudioTrack来播放pcm数据,发现播放出来的声音是吱吱的那种杂音。这是怎么回事呢? 没有出现录的声音
- linux 网卡eth0检测时没有IP地址,怎么回事??
- 觉得自己没有理想了该怎么办
- oracle 10G 没有 PIVOT 函数怎么办,自己写一个不久有了
- 一种常见的Java编程错误:没有同时定义equals()和hashCode()方法
- 关于eclipse的debug模式,没有从自己定义的断点开始,而从一些java类开始的
- 怎样让IE支持自己定义协议
- Python学习笔记之疑问 2:python的函数定义为什么没有开始和结束符
- 一种常见的Java编程错误:没有同时定义equals()和hashCode()方法