Linux 驱动程序如何与我的 QT 应用程序通信

问题描述 投票:0回答:1

我正在使用 QT Quick 创建一个嵌入式 Linux 应用程序。基本上,我有一些需要在用户界面中输出的传感器。我试图理解所有这个过程,但我仍然有一些灰色地带。

据我了解,温度传感器将由我的嵌入式 Linux 应用程序中的 I2C 驱动程序控制。这个驱动程序是我在使用 Yocto 时需要添加到我的层中的东西。到目前为止我觉得我理解了这部分。

另一方面,我在 QT 中创建了一个 UI,其中有一个 main.cpp 文件。如果我理解正确的话,这是我整个应用程序的主要入口点?从这个 main.cpp 我可以创建对 I2C 驱动程序的简单调用并读取传感器数据?

我什至无法写出正确的问题,因为我无法理解所有这些二进制文件和代码流程。

我已经有一个可以运行的 QT 快速应用程序和一个占位符代码来模拟传感器值并更新 UI。

提前非常感谢:)

linux qt embedded linux-device-driver
1个回答
0
投票

Linux 驱动程序可以在设备树中找到。寻找类似

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。

© www.soinside.com 2019 - 2024. All rights reserved.