高级会员

- 积分
- 757
- 金钱
- 757
- 注册时间
- 2020-5-11
- 在线时间
- 71 小时
|
10金钱
各位大佬,最近本人使用GY530的RX和TX与Openmv的Usart3进行通信
因为GY530会发送8byte的字节
前四个都是数据比较位,于是我就用如下图函数的接收协议来接收
- def rx_receive(data):
- if R.state==0:
- if data == 0x5A:
- R.state = 1
- R.uart_buf.append(data)
- #print(data)
- print("the data received :",R.rx_data)
- else:
- R.state = 0
- elif R.state==1:
- if data == 0x5A:
- R.state = 2
- R.uart_buf.append(data)
- print("the data received :",R.rx_data)
- else:
- R.state = 0
- elif R.state==2:
- if data == 0x15:
- R.state = 3
- R.uart_buf.append(data)
- print("the data received :",R.rx_data)
- else:
- R.state = 0
- elif R.state==3:
- if data == 0x03:
- R.state = 4
- R.uart_buf.append(data)
- print("the data received :",R.rx_data)
- else:
- R.state = 0
- elif R.state==4:
- if R.rx_data == 0:
- R.uart_buf.append(data)
- R.state = 5
- else:
- R.state = 0
- elif R.state==5:
- if R.rx_data == 0:
- R.uart_buf.append(data)
- R.state = 6
- else:
- R.state = 0
- elif R.state==6:
- if R.rx_data == 0:
- R.uart_buf.append(data)
- R.state = 7
- else:
- R.state = 0
- elif R.state==7:
- if data== (R.uart_buf[0] + R.uart_buf[1] + R.uart_buf[2] + R.uart_buf[3] + R.uart_buf[4] + R.uart_buf[5] + R.uart_buf[6]) & 0xFF :
- R.uart_buf.append(data)
- R.rx_data = 1
- #数据处理部分
- print("the data received :",R.rx_data)
- Rec_data = R.uart_buf
- d = distance(Rec_data)
- print("the data received :",R.rx_data)
- print("the distance is ",d)
- R.uart_buf=[]
- R.state = 0
- #print(R.uart_buf)
- else:
- R.state = 0
复制代码
- def uart_read_buf(uart):
- #uart.write()
- i = 0
- buf_size = uart.any()
- #print("buf_size = ",buf_size)
- while i < buf_size:
- #Rec = uart.readchar()
- #print("I recieved : ",Rec)
- rx_receive(uart.readchar())
- #d = distance(rx_receivzhuzhui = i + 1
复制代码 主函数中是这样写
- while(True):
- uart_read_buf(uart)
复制代码
前面几组数据可以正常接收,但是这几组之后接收就会失败,想问问大家是什么问题,但是如果单看串口,GY530依然在发送,不知道这是什么问题,请大佬指点
|
|