我使用Python在基于windows的程序中读取微控制器的值。编码/字节编码和值开始让我困惑。我的情况是:
在这个软件中,我可以在Python解释器接收到的每个byte
调用一个receive
函数一次,在每个line
调用一次(不太清楚是什么),或者在每个message
调用一次,我假设是来自微控制器的整个传输。你知道吗
我正在努力寻找破译这些价值观的最佳方法。微控制器输出与协议相关的特定值。例如,调用应该返回hex
值的函数:
F0, 79, (the phrase standard_firmata.pde) [then] F7
退货:
b'\xf0y\x02\x03S\x00t\x00a\x00n\x00d\x00a\x00r\x00d\x00F\x00i\x00r\x00m\x00a\x00t\x00a\x00.\x00i\x00n\x00o\x00\xf7'
当设置为“每条消息一次”时。这就是我想要的,我可以看到发送的是正确的值,但是包含了太多的man\x00
值(它们似乎在每个字节之后)。另外,第二个byte
是0y
,而它应该是79
。它似乎把它的值印在ASCII
上,而其他的都是十六进制的。你知道吗
我怎样才能忽略所有这些null
字符,并使所有内容都具有正确的格式(我可以使用普通的十六进制值)
当Python表示
bytes
值时,它将对任何具有可打印字符的内容使用ASCII表示。因此,十六进制0x79字节实际上由y
表示:使用ASCII字符可以使表示更具可读性,但不会影响内容。在创建
bytes
值时,可以互换使用\x..
十六进制和ASCII符号。你知道吗数据似乎编码了一个UTF-16消息,little endian:
UTF16每个字符使用2个字节,对于ASCII(和拉丁语1)码点,这意味着每2个字节都是空的。你知道吗
您可以使用简单的比较来测试消息类型:
相关问题 更多 >
编程相关推荐