Openmv与其他单片双向串口通信
目的
为了让openmv进行阈值切换或者只运行某一部分代码,因此需要openmv与其他单片建立双向通信进行更改内部参数。起因
openmv自带接收函数uart.read() 进行接收,但接收回来的数据类型为字符串不能用于数值的比较,需要将字符串打散转化为字符类型,因此我采用强制转换的方法,代码如下
def recive_data():
global tmp_data
if uart.any(): #等待接收
t = uart.read(); #读入数据
tmp_data=int(t) #强制转换为整型变量
print(tmp_data)
注意:因为将字符串强制转换为整型,此代码只能接收以数字所建立的标志位。其他标志会引起代码报错,这也是代码的一个大bug,希望大家多多指教。
以下收发颜色捕捉的完整代码
import json
import ustruct
import sensor, image, time
from pyb import UART
thresholds = [(30, 50, 40, 90, 35, 80), # red_thresholds
(30, 60, -80, -20, 0,40), # green_thresholds
(10, 40, 0, 40, -80, -20)] # blue_thresholds
clock = time.clock()
uart = UART(3,115200)
uart.init(115200, bits=8, parity=None, stop=1)
def sending_data(cx,cy):
global uart;
#frame=[0x2C,18,cx%0xff,int(cx/0xff),cy%0xff,int(cy/0xff),0x5B];
#data = bytearray(frame)
data = ustruct.pack("<bbhhhhb", #格式为俩个字符俩个短整型(2字节)
0x2C, #帧头1
0x12, #帧头2
int(cx), # up sample by 4 #数据1
int(cy), # up sample by 4 #数据2
int(c), #
int<