我正在使用 Qt Quick 创建一个嵌入式 Linux 应用程序。基本上,我有一些需要在用户界面中输出的传感器。我试图理解所有这个过程,但我仍然有一些灰色地带。
据我了解,温度传感器将由我的嵌入式 Linux 应用程序中的 I2C 驱动程序控制。这个驱动程序是我在使用 Yocto 时需要添加到我的层中的东西。到目前为止我觉得我理解了这部分。
另一方面,我在 QT 中创建了一个 UI,其中有一个 main.cpp 文件。如果我理解正确的话,这是我整个应用程序的主要入口点?从这个 main.cpp 我可以创建对 I2C 驱动程序的简单调用并读取传感器数据?
我什至无法写出正确的问题,因为我无法理解所有这些二进制文件和代码流程。
我已经有一个可以运行的 Qt 快速应用程序和一个占位符代码来模拟传感器值并更新 UI。
Linux 驱动程序的用户界面可以在文件系统的 /dev 下找到。寻找类似
i2c-0, i2c-1
、... 的设备
这些设备需要由应用程序打开,例如这样:
int file = open("/dev/i2c-0", O_RDWR); // Name your correct device!
如果可行,您可以尝试与您的设备进行通信:
int addr = 0x40; /* Insert correct I2C address */
if (ioctl(file, I2C_SLAVE, addr) < 0) {
/* Check errno for errors */
exit(1);
}
现在您可以
read()
或 write()
连接到您的 I2C 设备:
char buf[3] = { /* Whatever */ };
if (write(file, buf, 3) != 3) {
/* ERROR HANDLING: I2C transaction failed */
}
注意:调用 UART 设备或任何其他 Linux 驱动程序没有区别,因此您可以使用使用 Linux 驱动程序找到的任何代码。
现在将所有这些包装到一个模块中并将其连接到 Qt Quick C++ API。