所以我在Python和Arduino Uno之间的串行通信存在问题 . 我让Python通过串行通信将数字38(连同其他数字)发送到Arduino,然后返回到Python .
我发送的数组是:
[230, 0, 0, 0, 38]
它打印出来的数组(使用print()时)是:
bytearray(b'\xe6\x00\x00\x00&
&符号是因为在bytearray的打印中存在一个奇怪的细微差别,当数字介于某个范围之间时(抱歉我记不起该范围),它以ASCII而不是十六进制打印出来,所以数组我是发送到Arduino应该仍然拥有所需的所有信息 .
我通过以下方式收到Arduino中的信息:
char values[5];
Serial.readbytes(values, 5);
一旦arduino发现了这些信息,我就会使用Serial.write将它发送回Python,在那里我打印出来以确保我收到了正确的信息 . Python中收到的输出是:
b'\xe6\x00\x00\x00\xf6'
其中0xe6是230(正确)而0xf6是246是不正确的,它应该是38的十六进制值,即0x26 .
有没有人有任何关于如何解决这个问题的建议?任何建议或帮助将不胜感激!
编辑:发现我的问题,我不小心错误地减去'0',因为有一点我认为我必须将信息从ASCII转换为十六进制,但事实证明我没有 . 谢谢您的帮助!
1 回答
test.ino
test.py
这是最小代码示例的样子......它也应该工作......