salt_009 2023年10月17日 8時55分 チャタリングに対処するためにgpio-keysを用いて、 スイッチの入力検知するプログラムを作成しています。 スイッチの一つを起動時にONになっているか OFFになっているのかを確認したいのですが、 ON/OFFの変化を待たずに現在のスイッチの状態を 確認する方法はございますか? コメントを投稿するにはログインまたは登録をしてください コメント at_dominique.m… 2023年10月17日 9時13分 salt_009さん、 お世話になっています、 マルティネです。 > スイッチの一つを起動時にONになっているか > OFFになっているのかを確認したいのですが、 > ON/OFFの変化を待たずに現在のスイッチの状態を > 確認する方法はございますか? EVIOCGKEY の ioctl で確認すればできます。 ご使用のアプリケーション言語が分かりませんので、C 言語のコードになりますが、Armadillo Base OS で用意している buttond の場合はこういうふうに確認しています。 https://github.com/atmark-techno/buttond/blob/main/input.c#L57 unsigned char key_states[KEY_MAX/8 + 1] = { 0 }; int max; max = ioctl(fd, EVIOCGKEY(sizeof(key_states)), key_states); xassert(max >= 0, "EVIOCGKEY failed: %m"); max = max * 8; for (int i = 0; i < state->key_count; i++) { struct key *key = &state->keys[i]; if (key->code > max) continue; if (is_bit_set(key_states, key->code)) { if (debug) { printf("key %s (%d) was up on open\n", keyname_by_code(key->code), key->code); } arm_key_press(key, true); } } python 等、他の言語の場合は evdev ライブラリを使って確認も可能なはずです。 よろしくお願いします。 コメントを投稿するにはログインまたは登録をしてください
at_dominique.m… 2023年10月17日 9時13分 salt_009さん、 お世話になっています、 マルティネです。 > スイッチの一つを起動時にONになっているか > OFFになっているのかを確認したいのですが、 > ON/OFFの変化を待たずに現在のスイッチの状態を > 確認する方法はございますか? EVIOCGKEY の ioctl で確認すればできます。 ご使用のアプリケーション言語が分かりませんので、C 言語のコードになりますが、Armadillo Base OS で用意している buttond の場合はこういうふうに確認しています。 https://github.com/atmark-techno/buttond/blob/main/input.c#L57 unsigned char key_states[KEY_MAX/8 + 1] = { 0 }; int max; max = ioctl(fd, EVIOCGKEY(sizeof(key_states)), key_states); xassert(max >= 0, "EVIOCGKEY failed: %m"); max = max * 8; for (int i = 0; i < state->key_count; i++) { struct key *key = &state->keys[i]; if (key->code > max) continue; if (is_bit_set(key_states, key->code)) { if (debug) { printf("key %s (%d) was up on open\n", keyname_by_code(key->code), key->code); } arm_key_press(key, true); } } python 等、他の言語の場合は evdev ライブラリを使って確認も可能なはずです。 よろしくお願いします。 コメントを投稿するにはログインまたは登録をしてください
at_dominique.m…
2023年10月17日 9時13分
salt_009さん、
お世話になっています、
マルティネです。
> スイッチの一つを起動時にONになっているか
> OFFになっているのかを確認したいのですが、
> ON/OFFの変化を待たずに現在のスイッチの状態を
> 確認する方法はございますか?
EVIOCGKEY の ioctl で確認すればできます。
ご使用のアプリケーション言語が分かりませんので、C 言語のコードになりますが、Armadillo Base OS で用意している buttond の場合はこういうふうに確認しています。
https://github.com/atmark-techno/buttond/blob/main/input.c#L57
python 等、他の言語の場合は evdev ライブラリを使って確認も可能なはずです。
よろしくお願いします。