各位高手,请教下关于ESP32,Micropython串口发送 write( )的使用问题 :
发送需求是:欲发送列表LL中 从索引 0开始计算元素个数为5个 的元素,也就是发送LL[0],LL[1],LL[2],LL[3],LL[4] 这个5个元素(5个元素类型都是0-255之间的数(1个Byte)),多谢!
经测试发现ESP32 micropython串口write(), 无法直接发送 list,bytearray,bytes,元组中的某个元素,只能变成str后才能发送,即:write(str(XXX)),才可以,看到其他例程中出现write(byarry) byarry是个字节数组对象,但我测试却不行! 不知为何 writechar()这个也无法用,写成 writechar(65)或 writechar('a'),都不能发送!不知为何! 真没有想到 单片机中 最简单的串口发送 用这个micropython却要折腾!
micropython官网 关于串口的文档中 已经没有 writechar() 的介绍了,新的固件已经不支持了!
uart.wrtie(),只能发送str或者bytes类型的数据,如果不是需要先转换。
例如可以这样使用:
uart.write(bytes([LL[0],LL[1],LL[2],LL[3],LL[4]]))
引用: dcexpert 发表于 2020-10-7 14:51 uart.wrtie(),只能发送str或者bytes类型的数据,如果不是需要先转换。 例如可以这样使用: ...
感谢回复! 请问: 我可能每次发的字节数不固定,例如:欲发送的字节个数值赋给变量cont ,而欲发送的字节放在bytearray数组 array中,又如何使用write( )发送呢?
引用: yanruiqi5678 发表于 2020-10-7 20:12 感谢回复! 请问: 我可能每次发的字节数不固定,例如:欲发送的字节个数值赋给变量cont ,而欲发送的字 ...
刚试了下写成:uart.write(arry,cont) 是可以解决 发送指定字节数 问题! 吐槽下官方文档:这些根本没有提及 也没有示例!连一个串口应用的例子都没有!
引用: yanruiqi5678 发表于 2020-10-7 20:23 刚试了下写成:uart.write(arry,cont) 是可以解决 发送指定字节数 问题! 吐槽下官方文档: ...
官方团队人很少,开源项目文档不全可以理解,需要自己多尝试一下。
#发送的时候,把各个值在0~255之间的十进制数放到list里
sampleList = [value1,value2,value3,value4]
uart.write(bytes(sampleList))
#接收的时候
sampleData = uart.receive() #此处直接把接收的list传递过来了
value1 = sampleData[0]
value2 = sampleData[1]
.....
本帖最后由 kylenwang 于 2023-12-30 16:36 编辑