当前位置:   article > 正文

openmv接收串口数据的数据帧格式命令并作出动作响应_openmv串口数据发送的帧头帧尾

openmv串口数据发送的帧头帧尾

这里openmv接受到的数据帧格式

帧头:0xaa

帧尾:0xdd 

  1. if uart.any(): #进行串口数据的接收
  2. res=uart.read(1) #表示为读取一个十六进制数,这里的uart必须是例化的
  3. res = struct.unpack('B', res)
  4. res = hex(res)
  5. res = int(res)
  6. if rx_buf&0x8000==0:
  7. if res==0xaa:
  8. rx_buf=0
  9. rx_buf|=0x4000
  10. if rx_buf&0x4000:
  11. rx_buf = rx_buf+1
  12. if res==0xdd:
  13. rx_buf|=0x8000

该部分代码为整个过程的核心部分

res=uart.read(1)/#一次只接受一个字节,再由后面对每个接受到的字节进行数据的处理

在直接接收到数据未进行处理的时候显示出来的是字节串的格式,是无法与下面的帧头和帧尾进行比较匹配的,因此需要引入下面的函数

res = struct.unpack('B', res)#struct这里是对数据进行处理

给出下图中函数中关键字的具体用法,这里的B即

b signed char integer 1

struct中支持的格式如下表:

Format C Type Python 字节数

x pad byte no value 1

c char string of length 1 1

b signed char integer 1

B unsigned char integer 1

? _Bool bool 1

h short integer 2

H unsigned short integer 2

i int integer 4

I unsigned int integer or long 4

l long integer 4

L unsigned long long 4

q long long long 8

Q unsigned long long long 8

f float float 4

d double float 8

s char[] string 1

p char[] string 1

P void * long

最后再进行数据的转化

  1. res = hex(res)
  2. res = int(res)

 下面就可以编写所想要的数据帧格式了,希望能有所帮助。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/639707
推荐阅读
相关标签
  

闽ICP备14008679号