如何用python3在Beaglebone Black上读取I2C上的多个字节?

2024-04-27 09:27:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着从Amphenol T9602 temperature/humidity sensor上读取温度和湿度。基本上,您可以通过在I2C上一行读取4个字节来读取它,其中前两个字节对应于湿度,后两个字节对应于温度。我已经能够使用thisArduino草图让它工作。以下是实际读取数据的重要位:

Wire.beginTransmission(0x28);
Wire.write(0);
Wire.endTransmission();
## Heading ##
Wire.requestFrom(0x28, 4);
*a = Wire.read();
*b = Wire.read();
*c = Wire.read();
*d = Wire.read();

当我修改showdata方法以打印a、b、c、d,然后打印温度和湿度时,输出的示例行就是这样的:

101, 28, 97, 105, 22.78, 57.98

如何在Beaglebone Black上复制此功能?我尝试过使用smbus库,但我所能做到的只是一遍又一遍地读取第一个字节。我可以判断它是第一个字节,因为在标准条件下它总是在0x64左右,但是如果我增加湿度,它会变得更高。与内核命令相同,尽管当我使用i2cget -y 2 0x28 0x0 w尝试读取2个字节时,会得到类似0xa865的结果,其中第一个字节太高,第二个字节可能是第一个字节。另外,我意识到用另一种语言可能更容易实现这一点,但重要的是,这段代码是用Python(最好是3.x)编写的。你知道吗


Tags: read字节读取数据i2csensor温度temperature草图