我正在使用 Wire 类让两个 Arduino Unos 使用 I2C 进行通信。似乎 Wire 类以 0 值结束传输。因此,如果我发送字节 0x01、0x02、0x00 和 0x04,主设备会收到:0x01、0x02、0xFF、0xFF。
为处理器通信设计的通信网络无法发送 0x00 似乎很奇怪。我见过的所有 I2C 示例都只使用 ASCII。仅限于 ASCII 的处理器间通信似乎没有任何意义。我是否缺少 I2C 的某些内容,或者这只是 Arduino Wire 类的实现限制?
掌握
void loop() {
Wire.requestFrom(2, 4);
while(Wire.available()) {
byte b = (byte) Wire.read();
Serial.println(b);
}
delay(1000);
}
奴隶
void requestEvent() {
char bytes[4] = {0x01,0x02,0x00,0x04};
Wire.write(bytes);
}
结果是:1 2 255 255。
当 0x00 是 0x03 时,我得到了预期:1 2 3 4。