用openmv发送十六进制数据
-
我的编码器是rs485通信的,而且是应答式的,必须发送16进制数据3E 00 00 10 0C编码器才能回传数据,我就加了个485转ttl模块,下面是我写的代码,不知道哪里出错了,在openmv上显示不成功?但是在电脑串口助手上成功了。帮我一下,谢谢你了!
# UART Control 串口通信 import time from pyb import UART uart = UART(3, 115200) uart.init(115200, bits=8, parity=None, stop=1) # init with given parameters def sending_data(): global uart date=bytearray([0x3E,0x00,0x00,0x10,0x0C]) #print(date) uart.write(date) def recive_data(): global uart if uart.any(): tmp_data = uart.readline() #uart.write("RECIVED : %s\n"%tmp_data) print(tmp_data) while(True): sending_data() recive_data() time.sleep(10) ![0_1544269838696_shang.png](正在上传 26%)
-
代码看上去没什么问题。
我不清楚硬件。你的TTL转RS485模块,是全双工的?
-
TTL转RS485模块是半双工的,但是会自动切换流向。
我的代码是不是向编码器发送了 3E 00 00 10 0C ,openmv会不会多发了什么东西?比如b或者\r\n?
我的接收会不会是16进制?如果是的话,openmv的接收函数要不要变?或者接收程序里的某些代码要变?
-
发送的数据,你在软件里都看到了吧。
接受的话,可能不用readline(),因为我不知道你设备返回的数据是不是回车换行。
uart.read(1)可以试一下。
-
这个是我发送的数据时显示的图片,但是还是接受不了回传的16进制数据?又或者发送都错了,所以没回传?
-
下面是我发送的显示图片,发送3E和1E不一样啊
-
什么叫做“发送3E和1E不一样”?