【发布时间】:2018-01-05 11:18:36
【问题描述】:
我的 Arduino 从站上有一个浮点变量,我想将它发送到我的 Raspberry Pi 3 Model B 主站。我知道我可能需要从 Arduino 发送一个字节数组,然后在我的 Raspberry Pi 上正确读取它。到目前为止,我在使用 this 时运气不佳。
我不知道我应该如何阅读它,因为 WiringPi 库只提供 int 值作为回报(发送 0-255 就像一个魅力一样)。
已经完成here,但对于 Python 和 here。 C 有一组不同的 I2C 库,并且不提供 struct 之类的东西。
是否可以使用 WiringPi 从 I2C 读取字节数组并将其转换为 C 中的浮点数?
在 Arduino 上乘以数字(去掉逗号)并在 Raspberry Pi 上除以也可以,但是通过 WiringPi 发送超过 255 的问题仍然存在。
这是我在 Arduino 上发送数据的方式:
void sendData(){
Wire.write((byte*) &floatNumber, 4);
}
以下是我在 Raspberry 上读取 8 位值 (0-255) 的方法(例如,Wire.write(129)):
int fd;
int data;
wiringPiSetup();
fd=wiringPiI2CSetup(0x04);
data=wiringPiI2CRead(fd);
ui->lcdNumber->display(data);
【问题讨论】:
-
你的 PI 代码正在读取一个 int,我认为这是 PI 上的 32 位,所以你应该能够将它转换为浮点数并且它可能会工作。
ui->lcdNumber->display((float)data); -
浮点数没有什么特别之处,它只是一组位,你能将一组位从一个平台移动到另一个平台吗?然后,C语言是C语言,无论您的编译器是否有效,都可以使用C语言,这部分问题与芯片或平台无关(浮点数只是您操作的位的集合) .
-
就像我写的那样,到目前为止,我只成功地移动了 8 位(使用给定的代码),而且我的代码(可能在 Raspberry Pi 端)中缺少一些东西来移动 32 位。跨度>
标签: c arduino raspberry-pi i2c wiringpi