是否有一个 Python 函数会像 arduino 中的 Wire.available 函数一样响应来获取线上的所有数据,而不必指定要抓取多少字节?
这就是我现在所拥有的,它工作正常,但我必须知道有多少数据从网络中传出,否则会产生意想不到的结果。
for i in range(0, 13):
data += chr(bus.read_byte(address));
谢谢!
是否有一个 Python 函数会像 arduino 中的 Wire.available 函数一样响应来获取线上的所有数据,而不必指定要抓取多少字节?
这就是我现在所拥有的,它工作正常,但我必须知道有多少数据从网络中传出,否则会产生意想不到的结果。
for i in range(0, 13):
data += chr(bus.read_byte(address));
谢谢!
这不是一个完美的解决方案,但我找到了一种方法来确切地知道有多少字节在路上。
在 Arduino 上,我指定了缓冲区的最大大小(128),添加我的数据,然后将其余部分归零,然后发送整个内容。在 Pi 上,我收到整个缓冲区,然后发生的第一件事就是过滤\x00
字符。它并不完美,但它现在有效。
for i in range(0, 128):
data += chr(bus.read_byte(address))
print repr(data)
#prints the whole string as it is received
data = filter(lambda a: a != '\x00')
print repr(data)
#prints the string without any '\x00' characters.
我将 PIGPIO 库用于 raspberrypi 上的 i2c 命令,它的功能更接近有线。
http://abyz.co.uk/rpi/pigpio/python.html#i2c_read_device
我认为这就是您正在寻找的功能。