请教,串口通信问题.

Boon 2003-10-15 02:30:34
电脑和单片机通信,可能会有丢失数据帧的情况.
有没有办法解决丢失的数据帧不会影响后面数据的接收?
其实也就是串口通信用直接传送数据的方式会分不清命令帧和数据帧,如果不使用ASCII或是BCD等编码来传送数据,能不能解决这个问题?
...全文
81 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingyuw 2003-10-16
  • 打赏
  • 举报
回复
是否丢帧,关键看实际应用。
例如,在一个使用单片机转发串口数据得系统中,如果仅仅是转发,只要设置出口的波特率等于入口的波特率,再使用数据缓冲,就可以完全转发数据帧,并且不会丢帧。但是,如果单片机要对收到数据帧做大量的处理,你就得考虑单片机得处理能力了。即便如此,你也可以通过通信协议来保证不丢帧。如:规定数据帧之间的时间间隔等。
同时,我还想说的是,编码并不能保证不丢帧,关键是通信协议及程序处理方式。

注意:我所说的数据帧指符合某种通信协议(如XMODEM协议)的数据帧。
lzxptc 2003-10-16
  • 打赏
  • 举报
回复
底层丢帧是很常见的而且也是不可避免的。
要解决好问题,关键是设计一个好的高层的通信协议。一旦发生丢帧后可以根据需要进行处理。
Boon 2003-10-16
  • 打赏
  • 举报
回复
如果用ASCII码传送数据,那么所有大于127的帧都是命令帧。这样就可以很好的区分了。
可是如果不用ASCII码能不能解决这个问题?
xingyuw 2003-10-16
  • 打赏
  • 举报
回复
如果程序设计得好,是不会丢帧的。
我们做过19200K,8N1通信方式,不会丢帧。通信协议是自己定的。
136196 2003-10-16
  • 打赏
  • 举报
回复
通信协议就是解决这个问题的,与用什么编码发送数据无关.
liangsiyuan 2003-10-16
  • 打赏
  • 举报
回复
用16进制传送数据,PC和单片机的波特率要一致。

27,370

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧