问题标签 [iio]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux-device-driver - 基于软链接从传感器读取
我如何从这些传感器中读取数据?我刚刚找到了他们的位置,但该文件夹似乎包含指向另一个位置的软链接。我的目标是监控陀螺仪。
c - Linux & C: System() 命令
我目前正在从事一个需要我在 C 代码期间调用 Linux 命令的项目。我在其他来源上发现可以使用 system() 命令执行此操作,然后将 Linux shell 的值保存到我的 C 程序中。
例如,我需要将目录更改为
然后输入
作为命令。这应该将双精度输出到 C 中。
所以我的示例代码是:
我知道这可能不是最好的方法,因此非常感谢任何信息。
linux-kernel - 带 mpu9250 的飞思卡尔 imx6
我正在尝试将飞思卡尔 imx6 SoC 与 mpu92/65 传感器设备连接。我从 android ( https://github.com/NoelMacwan/Kernel-10.4.1.B.0.101/tree/master/drivers/staging/iio/imu ) 获取了 mpu92/65 设备驱动程序,并对驱动程序和设备树。
设备树修改:
inv_mpu_iio 驱动修改:
我已经以上述方式从设备树中检索了平台数据。在探测功能中,我得到了client->irq=0
. 但是我已经提到了设备树中的 IRQ。请有人告诉我我还需要做什么才能提到 gpio2-9 (linux pad) 作为这个 i2c 设备的中断线。
0x68 是 i2c 设备的从地址。驱动程序探测功能正在尝试写入设备以验证最初的芯片类型。因此,从站的数据和地址被发送到适配器驱动程序,在适配器驱动程序启动函数中,对控制和状态寄存器的写入和读取成功执行。
然后适配器驱动程序写入数据寄存器
在此之后生成适配器中断(总线中断得到 i2c3:291)。
在读取状态寄存器后的 ISR 中,该值应为162
(最后一位应0
表示已确认),但对于我的设备,我得到此值163
(最后一位为 1,因此未确认)。然后在确认成功函数-EIO
中抛出错误。对于连接到该总线的所有其他设备,写入数据寄存器后的状态寄存器为162
。
我不知道为什么我会得到上述行为。还有一件事是,即使我没有连接设备,启动功能也能够写入和读取状态和控制寄存器。我不确定正在读取和写入哪个状态寄存器。如果我假设这会写入和读取适配器寄存器,那么我是否也可以假设适配器硬件自动读取和写入连接的设备。如果是这样,那么如果我不连接设备,我将如何获得相同的行为?
请帮帮我。
linux - 从用户空间读取 IIO 设备数据
我正在使用 MPU-9250 Invensense 传感器,并从 android 内核中获取其驱动程序并与 linux 内核集成。驱动程序工作正常,对内核和节点进行了一些修改,/dev/iio:\device0,并且还生成了 sys 文件系统下的文件。所以我假设驱动程序工作正常。
现在我想通过使用 /dev/iio:\device0 节点的应用程序从用户空间读取传感器数据。为此,我需要在 MPU-9250 驱动程序中打开读取关闭功能。但是驱动程序中没有可用的文件操作。
我试图从 sys 文件系统中读取数据,即
在此之后,它应该填充从传感器读取的数据。但是什么都没有显示。所以在此之后我尝试从开发文件系统中读取数据
即便如此,什么也没有显示。
请有人告诉我如何读取数据。
问候
linux - Linux 内核 IIO 事件 sysfs 文件仅可读
我有一个问题,我为上升和下降阈值注册了 IIO 事件。我可以在 events 子文件夹中看到 sysfs 文件并可以读取它们,但是当我尝试编写新阈值时,它显示“权限被拒绝”。
以下设置:
linux - IIO Linux:如何知道缓冲区何时已满?
我正在使用来自用户空间的 IIO 驱动程序来读取 ADC (AD7924) 的值。我已经完成了触发采集工作的所有步骤(创建触发器、分配它、启用 ADC 通道、设置缓冲区的尺寸并启用它)。这是此的代码:
像这样配置的系统将处理采集,并填充完整的缓冲区。一旦它已满,采集停止。
我的问题是:我怎么知道缓冲区何时已满?我尝试在/dev/中的文件iio:device0上使用 poll 或 select 函数来检查文件描述符的变化,但我只能知道采集何时开始(通过检查 POLLIN 事件)。
linux - IIO(字符)设备输出没有输出 - IIO 缓冲区
我正在为 ADC ADS1243 开发 Linux 驱动程序并使用 IIO 框架。我想添加从 ADC 读取数据并将数据存储到 IIO 缓冲区的功能。
我添加了 iio_triggered_buffer_setup() 来探测驱动程序的功能。
我正在使用 sysfs 触发器并ads1243_trigger_handler
成功调用。
}
在处理程序中,我只使用了一些推送到 iio 缓冲区的测试数据。
然后我设置触发器
启用一些扫描元素,设置并启用 iio 设备的缓冲区
触发触发器
然后尝试读取设备(缓冲区)
但是我没有输出。我错过了什么重要的东西吗?
谢谢您的回复!
c - IIO 设备缓冲区始终为空
我在 iio 驱动程序中使用了一个名为 LSM6DSL 的 IMU 传感器。如果我使用以下命令显示原始值,它们可以正常工作:
然后我决定使用 libiio,这样我就可以从 C 程序中读取所有这些值:
这是结果:
我错过了什么吗?如果您需要更多信息,请告诉我。
c - IIO 缓冲区重新填充超时
我想从 C 项目中读取 IMU 传感器的值。有问题的设备是 LSM6DSL,我使用的是 IIO 内核驱动程序。它们工作正常,因为我可以使用以下命令读取值:
问题是,当我想使用函数iio_buffer_refill(struct iio_buffer *buffer)重新填充缓冲区时,它会返回错误代码 110,这是一个超时。在此之前,我启用了一些可以读取的通道,并且缓冲区已成功创建。我对这个问题进行了一些研究,我相信它与设备树中的中断参数有关。
这是我的 i2c 协议的设备树(我从这个链接中举了一个例子):
它真的与设备树有关还是我错过了其他东西?提前谢谢你。
[编辑] 这是创建缓冲区并尝试从中读取的源代码:
events - Android IIO 传感器
如何在Android Nougatiio_events
上捕获应用级别和本机级别(例如来自 adb shell 或通过现有守护程序)的 iio 传感器生成的?(例如环境光传感器的 in_intensity_falling_threshold 事件)
我尝试了经典的方法:SensorManager Listener(我自己编写了一个测试应用程序,但也尝试了来自应用商店的几个传感器测试应用程序)。
但是,似乎 iio 传感器不会触发任何事件(尽管我可以从 sysfs 读取不断变化的数据)。
iio 设备是否也会创建与 Android 中的输入设备相同类型的事件?我应该能够通过 getevent 命令查看事件吗?(如果需要,我可以提供更具体的系统/传感器信息。)