我在使用python脚本(在我的笔记本电脑上)和在AVR微控制器上运行的C程序之间进行通信时遇到了一些问题。他们通过UART进行通信。我的问题是现在我有以下设置。如何将Python编号转换为1字节C类型?
Python的发送数据:
data = port.write(struct.pack("b", val))
Python的读取数据:
v = struct.unpack('B', d)[0]
print "%s: %d" % (time.ctime(time.time()), v)
C(AVR)读取数据:
received = (uint8_t) UDR0;
C(AVR)写入数据(回波):
UDR0 = received;
我的问题是这样设置是我的python脚本正重返数目如下:
发送:0 - 31,得到:224 - 255 发送:32 - 63获得:32 - 63 发送:62 - 95收到:224 - 255 发送:96 - 100收到:224 - 228
我不明白为什么这些数字是如何匹配,但我怀疑这是因为我的数据类型。我想过使用chr()和ord()来转换和从字符转换,但必须有一个更容易(更容易理解)的方式。我开始研究python中的ctypes,并且正在使用c_ubyte函数,但无法弄清楚如何正确使用它。我相当新的python。有没有人有任何建议,我的逻辑是不正确的?
同样,我的猜测是转换和使用签名和无符号数据类型。
谢谢。
您是否使用串行终端程序测试过通信是否正常工作,即您的串行读/写例程在微控制器代码中是否正确? –
不,我没有。考虑到微控制器只是回应它所接收到的内容,这将如何提供帮助? – rangeme