串口通讯的难题(高分)(50分)

  • 主题发起人 主题发起人 QSmile
  • 开始时间 开始时间
Q

QSmile

Unregistered / Unconfirmed
GUEST, unregistred user!
1、在串口通讯时当接收事件触发时,程序再去接收缓冲区里有很多字符了。
有没有方法每个字符就触发一次。这样是不是不可以。9600bps 一秒有
1000 多个中断。
2、在串口通讯时用通讯协议,每个数据都要打包。但如果一个包被分成几次接收
职如何处理。有没有比较好的方法。
 
1。你可以把缓冲区的字符一个一个的接收啊!
2。你的题目意思不是很明确,好像和第一题类似!
 
to lbylby:
问题2:
如果我定义一个协议:如下
地址 + 命令 + 数据长度 + 校验和
1Byte 1byte 1byte

如果数据发过来我可能是用两次接收到的。
如何把数据拆分,得到里面真正要的数据内容?

 
用异步接收的办法
 
to 李艾
我是用异步接收方式的。
 
异步有两种问题:一接收数据是定长(为每次接收数值的长度是一样的),二是如果每次接收的数据不一样长的话,可以在结束时加上一个标识,也许你会问如果接收字符中和标识一样的话,那就要看你的数据是什么了. 这样就可以用判断的方法来进行识别你的接收数据了.
如果你用多串口接收数据的话,请标识你的的端口号来接收数据.
我也正在做这方面的项目,如你还有问题请跟贴.
 
我使用 $AA $BB 表示包头 $AA $CC表示包尾, 如果数据中含有 $AA 则用 2个$AA 表示
格式为 $AA $BB 数据 $AA $CC 校验码
 
to tesug:
有点意思
 
多人接受答案了。
 
后退
顶部