问题标签 [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.

0 投票
2 回答
944 浏览

android - 适宜和核心运动

我正在尝试让我的游戏在 Android 上运行。我已经用 Apportable 的免费版本移植了它,它运行良好,但我无法实现陀螺仪功能。

CMMotionManager被初始化但运动更新永远不会开始(或者至少handleDeviceMotion:永远不会被调用)。运动管理器的isAccelerometerActive属性始终为 NO,但isAccelerometerAvailable为 YES。

使用[NSOperationQueue mainQueue]也无济于事。

这就是我初始化运动管理器的方式:

它会向 logcat 生成以下消息:

我不知道这意味着什么……我正在 Asus Nexus 7 上测试该应用程序。

我需要做一些特别的事情才能将 CoreMotion 与 Apportable 一起使用吗?

编辑: 这是我创建的一个简单的测试项目来演示这个问题。

0 投票
2 回答
9199 浏览

beagleboneblack - 在 beaglebone black 中快速读取模拟输入

我需要每 5 毫秒读取一次 BBB 中的所有 7 个模拟引脚。我正在使用以下 C 代码执行此操作:

但是,cpu 使用率上升得非常高(20%)。有没有办法以不同的方式读取模拟输入,这样它就不会使用太多的 CPU?有人建议“DMA”,但我在这方面完全迷失了......

任何帮助将不胜感激。

0 投票
0 回答
389 浏览

linux-device-driver - 如何从 Google Glass 获取 RAW IMU 数据?

我正在尝试从 Google Glass IMU 模块获取 RAW 加速和陀螺仪数据。我在 NDK 中尝试了一个Sensormanager 模块,但它有时会通过一些奇怪的偏差调整来提供输出。所以我试图从驱动程序的虚拟文件系统中读取。

  • 当我尝试以一次性模式从 读取时/sys/bus/iio/devices/iio:device0/,我正在获取原始数据,但有时它会丢失一些数据(与传感器管理器输出相比)。
  • 当我尝试以突发模式读取时/sys/bus/iio/devices/iio:device0/,它显示“ /dev/iio:device0: Device or resource busy

那么,有没有其他方法可以在不丢失任何数据的情况下读取原始数据,或者我可以配置传感器管理器以提供原始数据而不进行任何偏差调整?

0 投票
1 回答
777 浏览

c++ - 在不关闭文件描述符的情况下读取 ADC(Beaglebone Black)

是否可以在不关闭文件描述符的情况下读取 Beaglebone Black 或其他嵌入式 Linux 系统的 ADC?

我之前用 select 试过read()select()返回 1,但read()在第一次迭代后返回 0,因此我无法获取任何数据。有任何想法吗?关闭和打开文件描述符是否需要大量 CPU 资源?

我的代码:

0 投票
1 回答
1482 浏览

c - 从目录中读取输入 (4096) 以在 C 中使用

我正在尝试从我的 AIN0 通道读取一个 ADC(12 位,即 0 - 4095)输入,并将其用作“int”,以便我可以在数学函数中使用它。这可能吗?

我指的目录是 Beaglebone Black Debian Wheezy 上的“sys/bus/iio/devices/iio:device0/in_voltage0_raw”。

目前,我有一个 C 文件,它读取用户的输入(通过终端)并执行我需要它执行的数学函数,但我很难将我的头脑围绕在这个活跃/不断变化的 ADC 值上。我也研究过使用“fopen”函数。使用下面的代码,我可以在终端上获取 ADC 值,它会根据输入的电压而变化。有没有办法“抓取”来自 ADC 的输入并在数学中使用它功能,即使ADC值不断变化?

更新代码

我已经对 char ch[5] 进行了更改,我在代码中也更进一步,放置了我想要的数学函数。

0 投票
2 回答
500 浏览

linux - *Linux 驱动程序开发* 有没有办法使用 IIO 框架通过 sysfs 公开额外的设置?

我正在开发的驱动程序有许多我希望用户能够更改的设置并不真正适合 IIO 框架。例如,在我的读取函数中使用 IIO_CHAN_INFO_SAMP_FREQ 枚举会在 /sys/bus/iio/devices/iio:device0/ 中公开一个名为“in_voltage_sampling_frequency”的变量,该变量允许用户随时更改频率。我还希望能够通过类似的机制以不同的模式(字符串)传递。我该怎么做?看起来 IIO 接口不支持 ioctl 调用。

0 投票
0 回答
3080 浏览

linux - 检测盖子旋转 - 联想 Thinkpad Yoga 15

我刚刚以 799 美元的价格购买了联想 Thinkpad Yoga 15 (20DQ001KUS)。这是一个链接:http ://shop.lenovo.com/us/en/laptops/thinkpad/yoga-series/yoga-15/#tab-tech_specs

我真的很想让平板电脑功能在 Linux Mint 17.2 中运行。我一直在做一些谷歌搜索,并在下面找到了一些旧脚本:

https://github.com/admiralakber/thinkpad-yoga-scripts

https://launchpad.net/magick-rotation

在他们的帮助下,我能够编写一个 python 脚本来轮询我的加速度计值(在 /sys/bus/iio/devices/iio:device* 中找到)以确定何时应该旋转屏幕。困难的部分似乎是检测设备何时应处于笔记本电脑或平板电脑模式。如果我将盖子弯曲超过 180 度,或者如果我将设备侧向倾斜以使其与地面垂直,则我的键盘上的灯会关闭,并且键盘本身会完全禁用。这似乎是 BIOS 功能,表明肯定有传感器。这将是理想的,它将解决我当前的所有问题。

不幸的是,我无法在 linux 中找到任何可以告诉我计算机何时应处于平板电脑模式的传感器读数。我需要它来确定何时应打开自动旋转,何时应禁用触摸板/触控板/键盘,以及何时应启动或终止屏幕键盘应用程序。

与此同时,我正在使用盖子的倾斜传感器(也可以在 /sys/bus/iio/devices/iio:device* 中找到)。这很有效,因为它可以检测帐篷模式和平板电脑模式。不幸的是,传感器与重力对齐,因此它无法区分笔记本电脑模式和站立模式(因为盖子/屏幕相对于重力的方向相同)。

旧脚本表明旧型号中有一个特殊键码,当模式从笔记本电脑更改为平板电脑时触发,反之亦然。不幸的是,当我监控 xev/evtest 时,我没有看到任何这样的键码/扫描码被抛出。

简而言之,我希望能够以编程方式确定笔记本电脑屏幕/盖子何时打开超过 180 度。谁能帮我这个?

我当前的脚本链接如下,如果其他人想看看我是怎么做的(或者如果其他人想提出建议),我只花了一天时间,所以它还远未完成。我可能会在稍后的某个时间点将它发布为 GNU 版本,以供其他需要相同功能的人使用。

https://gist.github.com/anonymous/5d2c2d2967eac8774b69

PS 顺便说一句,我仍在尝试从 ALPS 触摸板获得全部功能。使用一些 psmouse DKMS 安装程序,我已经能够获得多点触控功能,例如两指滚动和两/三指点击工作。但是,这 3 个物理按钮不执行任何操作(即使在 xev/evtest 中也是如此)。将 proto=imps 传递给 psmouse 模块会使它们工作,但会破坏多点触控功能。如果有人愿意为此提供建议,我也将不胜感激。

0 投票
1 回答
705 浏览

linux - 不同子系统驱动程序之间的通信(例如:IIO 和充电驱动程序)

我为 ADC 模块编写了一个驱动程序,它是 IIO 子系统的一部分。它读取连接到特定通道的各种硬件外设的电压,这些电压只能从 sysfs 中读取。

我的问题是,我的充电驱动程序也想从 ADC 读取数据,但是没有公开这样的 API,以便充电驱动程序可以与 IIO 子系统驱动程序通信(驱动程序-驱动程序通信)。

我的解决方案 - 是否可以编写一个函数来计算特定通道的 ADC 电压,并将电压发送到充电驱动器。它获取设备详细信息(driver_find_device),可以调用处理函数进行读取操作。

提前致谢。

0 投票
0 回答
260 浏览

linux-kernel - 在“使用”时增加 Linux IIO 生产者的模块 refcnt

我制作了一个作为工业 I/O (IIO) “生产者”的驱动程序(它提供 ADC 读数)。我已经将它编译为一个模块。我有另一个驱动程序,它是一个 IIO“消费者”,它使用来自第一个驱动程序的 ADC 输入(它调用iio_channel_get()它的probe()函数)。

这两个驱动程序都编译为模块,并且可以很好地协同工作。但是我发现rmmod第一个驱动程序是可能的,即使加载了第二个驱动程序并因此使用它的 ADC,这似乎令人惊讶,因为它被第二个驱动程序“使用”。最好是防止在第二个驱动程序使用它时卸载第一个驱动程序。也就是说,在第二个驱动程序调用时增加第一个模块的值refcnt,并在第二个驱动程序调用时iio_channel_get()递减值。这在概念上类似于 char 设备的模块,每个打开它的进程都会增加它的值,因此在所有进程都关闭打开的 char 设备文件之前不能卸载它。refcntiio_channel_release()refcnt

但是我看不到为 IIO 生产者实现此目的的方法(例如,我看不到任何可能在第二个驱动程序调用时调用的 ops 函数iio_channel_get())。那怎么可能呢?

请注意,这不是经典意义上的模块依赖,其中一个模块依赖于另一个模块提供的函数/符号。这是一个 IIO 消费者/生产者依赖项。从一个到另一个的依赖关系是特定于硬件的,并且在硬件的设备树中指定。在不同的硬件上,消费者/生产者依赖可能涉及不同的 IIO 生产者模块。

0 投票
0 回答
1146 浏览

java - 当我为 Invensense MPU-9250 实现 Android HAL 时出错

我正在为 MPU-9250 编写 HAL(硬件抽象层)

我从这里复制了一个包到我的android内核中的drivers/staging/iio/imu下

然后从这里到我的 android 源代码中的 android/device/ti/blaze/libsensors

这是 logcat :

...

...

我很难为 MPU 寻找 linux 驱动程序和 HAL - 9250

所以几乎来源只支持 MPU9150 或 MPU6050 .. 否则 .. 不支持 MPU9250

无论如何,我不知道为什么我无法从 IMU 传感器获取任何数据?你们认为这两个来源对于 MPU-9250 是错误的吗?

另外,如果你们有将mpu-9250添加到android的经验或者知道如何添加mpu-9250,请告诉我参考和提示T^T