watermelon_ok 发表于 2014-1-25 08:50:41

计算机读取串口传来的MPU6050数据如何分包?

单片机连接了MPU6050,通过串口把数据发给计算机,比如每次发送16个字节,连续多次发送,计算机串口接收时、如何编程能从第一个字节开始接收?计算机串口我设置的也是每次接收16个字节,如果从第一个自己开始接收的话、就可以马上取从第一个字节开始的16个字节去做后续计算了。
发现经常没有从第一个字节接收,要实时搞后续数据处理的话为了检测出属于单次发送的数据包的数据好像还挺复杂的。
弄过上位机的似乎都会遇到这个问题的。
请问大侠们这个问题你们是怎么处理的?

steaven2000 发表于 2014-1-25 09:04:29

你没有听说过通信协议吗?

watermelon_ok 发表于 2014-1-25 09:08:24

steaven2000 发表于 2014-1-25 09:04
你没有听说过通信协议吗?

通信协议听说过一些,下位机发送数据肯定是有包头、包尾什么的,但上位机的计算机串口接收到的都是些字节啊,如何能简单的实现分包?

steaven2000 发表于 2014-1-25 09:19:12

你有了包头和包尾,还不能区分?那你的包头是来吃白饭的啊?

watermelon_ok 发表于 2014-1-25 09:25:10

steaven2000 发表于 2014-1-25 09:19
你有了包头和包尾,还不能区分?那你的包头是来吃白饭的啊?

类似通常的串口通信助手,串口一开始接收就回连续收到很多个包的字节,如果我打开串口的时间不刚好是对应第一个字节的时间的话、就错位读读了两个字节的部分数据组成了16个字节(下位机我是16个字节一个包),我现在是人工多读取几次16个字节的数据后、又来寻找包头来提取包,感觉有些浪费计算资源,不知有没有更好的解决办法?

steaven2000 发表于 2014-1-25 09:28:53

你的程序就这么病怏怏?一定要每次接收到的刚好是一个完整的数据包才能工作?别这么搞笑行不行。。。

watermelon_ok 发表于 2014-1-25 09:32:01

steaven2000 发表于 2014-1-25 09:28
你的程序就这么病怏怏?一定要每次接收到的刚好是一个完整的数据包才能工作?别这么搞笑行不行。。。 ...

刚开始编写啊,请多指教啊,拜托啦~

lyping1987 发表于 2014-1-25 10:29:37

steaven2000 发表于 2014-1-25 09:28
你的程序就这么病怏怏?一定要每次接收到的刚好是一个完整的数据包才能工作?别这么搞笑行不行。。。 ...

用队列吗?是不是一个字节的判断包头,读到包头后读指定长度?确保数据的有效,而串口接收只是把buf内的内容往队列里面push?
页: [1]
查看完整版本: 计算机读取串口传来的MPU6050数据如何分包?