我试着从一个raspberry pi 3中读取50字节的数据。当使用SMBus时,一个块的长度只有32字节。Python有一个叫做smbus2的库,它提供了smbus访问。这个库还提供了一种方法,可以使用我正在使用的i2c_rdwr
读取超过32字节限制的数据。但是,不是获得这50字节,我只接收到32个字节,字节33 - 49用0xFF填充。
该守则
from smbus2 import SMBus, i2c_msg
bus = SMBus(1)
read = i2c_msg.read(addr, 50)
bus.i2c_rdwr(read)
res = list(read)
print(''.join([chr(i) for i in res]))
它给出:
[some text 32 char long]+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
1条答案
按热度按时间wbrvyc0a1#
如果有人发现了这一点,我们不能在一次传输中发送超过32字节的数据,我们可以拆分数据,发送少于32字节的数据,或者循环字符串并发送每个字节。
我仍然可以使用相同的python脚本,只是arduino不能在一次传输中发送超过32个字节。