消息关闭
    暂无新消息!
有没有写过类似的程序,指导指导,谢谢

14个回答

︿ 1
  已采纳
已采纳
缓存数组是肯定要有的,而且要十分小心不要溢出导致乱七八糟的数据产生。空间宽裕缓存可以取大点。接收中断判断帧头帧尾,然后判断CRC是否正常,如果正常就可以取任意操作缓存中接收到的每一byte数据。但值得注意的是,这帧数据中所需数据也可能会和帧头帧尾重合的数据。所以再加上数据帧长度判断会更可靠。
︿ 2
51单片机就是接受一个字节一个中断,在接收中断程序中实现你的判断
︿ 1
串口是极低速接口,遍接收遍判断并无不可。况且,多数 51 单片机也是依赖代码逐字节接收的。由于通讯极慢,如果仅仅循环等待接收完成标志和搬移数据,太浪费了。
︿ 1
二楼可否详细说下如何判断接受完了呢,串口接收中断超时吗,还是有别的办法,比如特定内容的结尾,或定长的报文
︿ 1
串口中断是一个字节一个中断,你如果在中断函数里面边接受变判断,你不怕在判断的过程中第二个中断无法处理导致数据丢失吗?最好还是在中断函数里面把数据存在缓冲区里面,然后在主函数里面进行判断
︿ 1
看看这三个帖子,希望对你有帮助。
http://blog.csdn.net/wuhenyouyuyouyu/article/details/53377946
http://blog.csdn.net/wuhenyouyuyouyu/article/details/54377176
http://blog.csdn.net/wuhenyouyuyouyu/article/details/62435683
︿ 0
边接收边处理不靠谱,严格来说应该开一个缓存(比如数组),接收完再处理。串口接收最常用的就是环形缓冲(FIFO,就是一个环形数组),串口接收是字节型的,得自己编码,加上帧头帧尾校验等。否则无法知道接收完一帧。