問題タブ [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.
beagleboneblack - ビーグルボーンブラックでアナログ入力を高速に読み取る
BBB の 7 つのアナログ ピンすべてを 5 ミリ秒ごとに読み取る必要があります。私は次のCコードでそうしています:
ただし、CPU 使用率は非常に高くなります (20%)。CPU をあまり使用しないように、アナログ入力を別の方法で読み取る方法はありますか? 誰かが「DMA」を提案しましたが、私はその点で完全に迷っています...
どんな助けでも大歓迎です。
c++ - ファイル記述子を閉じずに ADC (Beaglebone Black) を読み取る
ファイル記述子を閉じずに、Beaglebone Black または別の組み込み Linux システムの ADC を読み取ることは可能ですか?
前にselectで試してみましたread()
。select()
1 をread()
返しますが、最初の繰り返しの後に 0 を返すため、データを取得できません。何か案は?ファイル記述子を閉じたり開いたりするには、多くの CPU パワーが必要ですか?
私のコード:
c - C で使用するディレクトリからの入力 (4096) の読み取り
AIN0 チャネルから ADC (0 ~ 4095 の 12 ビット) 入力を読み取ろうとしており、それを「int」として使用して、数学関数で使用できるようにしています。これは可能ですか?
私が参照しているディレクトリは、Beaglebone Black Debian Wheezy の「sys/bus/iio/devices/iio:device0/in_voltage0_raw」です。
現在、ユーザーの入力を (端末を介して) 読み取り、必要な数学関数を実行する C ファイルがありますが、このアクティブな/常に変化する ADC 値に頭を悩ませています。「fopen」関数の使用も検討しました。以下のコードを使用すると、端末で ADC 値を取得できます。これは、入力されるボルト数に基づいて変化します。ADC からの入力を「取得」して数学で使用する方法はありますかADC 値が絶えず変化する場合でも機能しますか?
更新されたコード
char ch[5] に変更を加えました。また、必要な数学関数を配置するコードを少し進めました。
linux - まぶたの回転を検出する - Lenovo Thinkpad Yoga 15
Lenovo Thinkpad Yoga 15 (20DQ001KUS) を $799 で購入しました。リンクは次のとおりです: 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
彼らの助けを借りて、加速度計の値 (/sys/bus/iio/devices/iio:device* にあります) をポーリングして、画面をいつ回転させるべきかを判断する Python スクリプトをまとめることができました。難しい部分は、デバイスがいつラップトップ モードまたはタブレット モードになるかを検出することです。蓋を 180 度以上曲げたり、デバイスを地面に対して垂直になるように傾けたりすると、キーボードのライトが消え、キーボード自体が完全に無効になります。これは BIOS 機能のようであり、センサーがあることを示しています。これは理想的であり、私の現在の問題をすべて解決します。
残念ながら、コンピューターをいつタブレット モードにするかを教えてくれるセンサーの読み取り値を Linux で見つけることができませんでした。自動回転をオンにするタイミング、タッチパッド/トラックパッド/キーボードを無効にするタイミング、オンスクリーン キーボード アプリを起動または終了するタイミングを決定するために、これが必要です。
それまでの間、蓋の傾斜センサーを使用しています (/sys/bus/iio/devices/iio:device* にもあります)。これは、テント モードとタブレット モードを検出できるため、ほとんどの場合機能します。残念ながら、センサーは重力に合わせて配置されているため、ラップトップ モードとスタンド モードの違いはわかりません (蓋/画面が重力に対して同じ方向にあるため)。
古いスクリプトは、モードがラップトップからタブレットに、またはその逆に変更されたときにトリガーされる、古いモデルに特別なキーコードがあることを示唆しています。残念ながら、xev/evtest を監視しているときに、そのようなキーコード/スキャンコードがスローされることはありません。
要するに、ラップトップの画面/蓋が180度以上開いていることをプログラムで判断できるようにしたいと考えています。誰でもこれで私を助けることができますか?
私の現在のスクリプトは以下にリンクされています。他の誰かが私のやり方を見たい場合 (または他の誰かが提案をしたい場合)、私はそれに 1 日しか費やしていないので、完成には程遠いです。同じ機能を必要とする他の人のために、後でGNUリリース用に公開する予定です。
https://gist.github.com/anonymous/5d2c2d2967eac8774b69
PS 余談ですが、私はまだ ALPS タッチパッドから完全な機能を取得しようとしています。いくつかの psmouse DKMS インストーラーを使用して、2 本指スクロールや 2/3 本指タップなどのマルチタッチ機能を利用できました。ただし、3 つの物理ボタンは何もしません (xev/evtest でも)。proto=imps を psmouse モジュールに渡すと機能しますが、マルチタッチ機能が壊れます。誰かがそれについてアドバイスを提供したい場合は、私も感謝します.
linux-kernel - 「使用中」のときに Linux IIO プロデューサーのモジュール refcnt をインクリメントする
工業用 I/O (IIO) の「プロデューサー」であるドライバーを作成しました (ADC の読み取り値を提供します)。モジュールとしてコンパイルしました。最初のドライバーからのADC入力を使用するIIO「コンシューマー」である別のドライバーがあります(iio_channel_get()
そのprobe()
関数を呼び出します)。
これらのドライバーは両方ともモジュールとしてコンパイルされ、一緒に問題なく動作します。rmmod
しかし、2 番目のドライバーがロードされて ADC を使用している場合でも、最初のドライバーで可能であることがわかりました。2番目のドライバーが使用している間に最初のドライバーがアンロードされるのを防ぐのは素晴らしいことです。つまり、2 番目のrefcnt
ドライバーが を呼び出したときに最初のモジュールの値を増やし、 2 番目のドライバーが を呼び出したときにiio_channel_get()
を減らします。これは、概念的には、開いているプロセスごとに増加する char デバイスのモジュールに似ています。したがって、すべてのプロセスが開いている char デバイス ファイルを閉じるまで、アンロードできません。refcnt
iio_channel_release()
refcnt
しかし、IIO プロデューサーでこれを実現する方法がわかりません (たとえば、2 番目のドライバーが を呼び出したときに呼び出される可能性のある ops 関数がわかりませんiio_channel_get()
)。どうすればそれができますか?
これは、あるモジュールが別のモジュールによって提供される関数/シンボルに依存する、従来の意味でのモジュールの依存関係ではないことに注意してください。これは、IIO コンシューマー/プロデューサーの依存関係です。相互の依存関係はハードウェア固有であり、ハードウェアのデバイス ツリーで指定されます。異なるハードウェアでは、消費者/生産者の依存関係に別の IIO 生産者モジュールが含まれる場合があります。
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 の場合、これら 2 つの情報源は間違っていると思いますか?
また、mpu-9250 を android に追加した経験がある場合、または mpu-9250 を追加する方法を知っている場合は、リファレンスとヒントを教えてください T^T