Armadilloフォーラム

Armadillo-840mでのタッチパネルの動作について

nozaki-h

2021年12月8日 8時54分

お世話になっております。
現在,Armadillo-840mとノリタケ伊勢電子株式会社製のタッチTFTモジュール「GTWV050VHB00P」を
USB経由で接続し,タッチパネルの動作確認を行っております。

しかし,タッチパネルをタッチした時,
タッチパネルは反応するのですが,
反応が遅かったり,複数回タッチされたような動作になる場合があることを確認しました。

そこで「evtest /dev/input/event0」コマンドを使用し,
タッチパネルをタッチした時の入力イベントを確認したところ,
1回のタッチに対して,入力イベントが大量に発生していました。

添付ファイルは,「evtest /dev/input/event0」コマンドで入力イベントを確認した時の出力情報です。
タッチパネルを一瞬タッチしただけですが,
「type 1 (Key), code 330 (Touch)」イベントや「type 3 (Absolute), code 53 (Position X)」イベントなどが
大量に発生しています。

この動作が正しい動作かどうか判断できておらず,
このような入力イベントになるものなのか,異常な動作なのかご意見をいただけないでしょうか。

以上,お手数をおかけしますが,よろしくお願いします。

ファイル ファイルの説明
evtest_log.txt
コメント

at_shiita.ishigaki

2021年12月16日 10時41分

石垣です。

> タッチパネルをタッチした時の入力イベントを確認したところ,
> 1回のタッチに対して,入力イベントが大量に発生していました。

タッチパネルを使用するために下記howtoにあるような変更を行ったと思うのですが、
https://armadillo.atmark-techno.com/howto/armadillo-840-gt-1p
編集したファイルを添付して頂けますでしょうか。

nozaki-h

2021年12月16日 14時05分

> 石垣です。
>
> > タッチパネルをタッチした時の入力イベントを確認したところ,
> > 1回のタッチに対して,入力イベントが大量に発生していました。
>
> タッチパネルを使用するために下記howtoにあるような変更を行ったと思うのですが、
> https://armadillo.atmark-techno.com/howto/armadillo-840-gt-1p
> 編集したファイルを添付して頂けますでしょうか。
>

ご連絡ありがとうございます。

編集したファイルを添付いたします。
また,ファイルの変更箇所を示した画像ファイルを合わせて添付いたします。

以上,よろしくお願いします。

ファイル ファイルの説明
hid-multitouch.c 編集したファイルです。
hid-ids.txt 編集したファイルです。
ファイルの変更箇所について.png ファイルの変更箇所を示した画像ファイルです。

at_shiita.ishigaki

2021年12月16日 17時23分

石垣です。

> 編集したファイルを添付いたします。
> また,ファイルの変更箇所を示した画像ファイルを合わせて添付いたします。

以下のLinuxカーネルのコンフィグレーションについても設定してありますでしょうか。

Device Drivers  --->
  [*] HID Devices  --->
    Special HID drivers  --->
      <*> HID Multitouch panels    ← 有効化

nozaki-h

2021年12月17日 11時52分

> 石垣です。
>
> > 編集したファイルを添付いたします。
> > また,ファイルの変更箇所を示した画像ファイルを合わせて添付いたします。
>
> 以下のLinuxカーネルのコンフィグレーションについても設定してありますでしょうか。
>

> Device Drivers  --->
>   [*] HID Devices  --->
>     Special HID drivers  --->
>       <*> HID Multitouch panels    ← 有効化
> 

>

カーネルのコンフィグレーションを確認したところ,
「HID Multitouch panels」は有効になっていました。
カーネルのコンフィグレーションを確認した時の画像を添付いたします。

以上,お手数をおかけしますが,よろしくお願いします。

ファイル ファイルの説明
カーネルコンフィグレーション_HID_Multitouch.png

at_shiita.ishigaki

2021年12月17日 16時17分

石垣です。

稼働中のkernelの情報を確認したいので、以下のコマンドを実行し、作成されたlog.txtを添付して頂けますでしょうか。

[armadillo ~]# zcat /proc/config.gz > log.txt

nozaki-h

2021年12月20日 9時19分

> 石垣です。
>
> 稼働中のkernelの情報を確認したいので、以下のコマンドを実行し、作成されたlog.txtを添付して頂けますでしょうか。
>

> [armadillo ~]# zcat /proc/config.gz > log.txt
> 

上記のコマンドを実行して作成したlog.txtを添付いたします。

以上,ご確認をよろしくお願いいたします。

ファイル ファイルの説明
log.txt

nozaki-h

2022年1月24日 7時32分

logファイルを添付してから約1ヶ月程経過していますが何か判明したことはありますでしょうか。
また必要な事がありましたら提供しますので宜しくお願いいたします。

> > 石垣です。
> >
> > 稼働中のkernelの情報を確認したいので、以下のコマンドを実行し、作成されたlog.txtを添付して頂けますでしょうか。
> >

> > [armadillo ~]# zcat /proc/config.gz > log.txt
> > 

>
> 上記のコマンドを実行して作成したlog.txtを添付いたします。
>
> 以上,ご確認をよろしくお願いいたします。

at_shiita.ishigaki

2022年1月24日 17時00分

石垣です。

返事が遅くなり申し訳ありません。

> 上記のコマンドを実行して作成したlog.txtを添付いたします。

当社で動作確認できているデバイスではないため、正確な事はお伝え出来ませんが、
ログを確認したところ、Armadilloの設定は正しく行えているように思えます。

以下URLの「GT-VP 設定ソフト」を使用して、タッチモードや、感度等の設定を変更してみてはいかがでしょうか。
https://www.noritake-itron.jp/cs/soft/6

このソフトを利用して、目的の動作が得られた場合は、(8.【メモリスイッチについて】 書込/メモリスイッチ書き込み)に記載されているように、
タッチパネルの設定を行うことができると思われます。

nozaki-h

2022年1月25日 9時21分

> 石垣です。
>
> 返事が遅くなり申し訳ありません。
>
> > 上記のコマンドを実行して作成したlog.txtを添付いたします。
>
> 当社で動作確認できているデバイスではないため、正確な事はお伝え出来ませんが、
> ログを確認したところ、Armadilloの設定は正しく行えているように思えます。
>
> 以下URLの「GT-VP 設定ソフト」を使用して、タッチモードや、感度等の設定を変更してみてはいかがでしょうか。
> https://www.noritake-itron.jp/cs/soft/6
>
> このソフトを利用して、目的の動作が得られた場合は、(8.【メモリスイッチについて】 書込/メモリスイッチ書き込み)に記載されているように、
> タッチパネルの設定を行うことができると思われます。

連絡ありがとうございました。

GP-VP設定ソフトで感度等の設定を変更してみたいと思います。

また何かありましたら宜しくお願いいたします。

nozaki-h

2022年2月2日 13時42分

お世話になっております。
現在「GT-VP 設定ソフト」でタッチ感度の変更を行っているのですが,
まだ現象は改善できていない状況です。

お手数をおかけしますが,
タッチパネルのチャタリング対策について教えていただけないでしょうか。

以下のタッチパネルのチャタリング対策に関するトピックを拝見したのですが,
Armadillo-840mとタッチパネルをUSB経由で接続している場合,
Armadillo-840mでも,以下のトピックのようなチャタリング対策を実装することは可能でしょうか。

https://armadillo.atmark-techno.com/forum/armadillo/1518

このトピックのように,
Armadillo-840m側の設定により,
タッチパネル取み込み周期を長くすることで,
現象を改善できないか検討しております。

以上,よろしくお願いします。

> 石垣です。
>
> 返事が遅くなり申し訳ありません。
>
> > 上記のコマンドを実行して作成したlog.txtを添付いたします。
>
> 当社で動作確認できているデバイスではないため、正確な事はお伝え出来ませんが、
> ログを確認したところ、Armadilloの設定は正しく行えているように思えます。
>
> 以下URLの「GT-VP 設定ソフト」を使用して、タッチモードや、感度等の設定を変更してみてはいかがでしょうか。
> https://www.noritake-itron.jp/cs/soft/6
>
> このソフトを利用して、目的の動作が得られた場合は、(8.【メモリスイッチについて】 書込/メモリスイッチ書き込み)に記載されているように、
> タッチパネルの設定を行うことができると思われます。

at_shinya.koga

2022年2月4日 10時30分

アットマークテクノの古賀です。

nozaki-hさん:
>現在「GT-VP 設定ソフト」でタッチ感度の変更を行っているのですが,
>まだ現象は改善できていない状況です。
>
>お手数をおかけしますが,
>タッチパネルのチャタリング対策について教えていただけないでしょうか。
>
>以下のタッチパネルのチャタリング対策に関するトピックを拝見したのですが,
>Armadillo-840mとタッチパネルをUSB経由で接続している場合,
>Armadillo-840mでも,以下のトピックのようなチャタリング対策を実装することは可能でしょうか。
>
>https://armadillo.atmark-techno.com/forum/armadillo/1518

このトピックでは、Armadillo-410 の CPU が内蔵の ADC でタッチパネル出力を計測していますが、お使いのタッチパネルは、USB HID デバイスとして振舞っており、タッチパネル自身が計測を行う方式ですから、同じような対策は困難です。

>このトピックのように,
>Armadillo-840m側の設定により,
>タッチパネル取み込み周期を長くすることで,
>現象を改善できないか検討しております。

もしやるとしたら、アプリケーション側でタッチイベントの到着間隔を見てチャタリング除去する、という方策が考えられます。が、その方策ですと、最初に書いていらした、「反応が遅かったり」には対応できないかも知れません:

nozaki-hさん(2021年12月8日 8時54分):
>しかし,タッチパネルをタッチした時,
>タッチパネルは反応するのですが,
>反応が遅かったり,複数回タッチされたような動作になる場合があることを確認しました。

確認ですが、「GT-VP 設定ソフト」の「タッチパネル(タブ)」画面でタッチ信号をモニタした場合、タッチパネル押下時の状況は、正常でしょうか?
 https://www.noritake-itron.jp/cs/soft/6

nozaki-h

2022年2月4日 10時55分

回答ありがとうございます。

armadillo-840mに実装されているQtを使用してアプリケーションソフトは作成しております。
Qt側でタッチイベントの到着間隔をみてチャタリングをするにはどのように実装すればいいのでしょうか。

お手数を掛けますが回答の程宜しくお願いします。

> アットマークテクノの古賀です。
>
> nozaki-hさん:
> >現在「GT-VP 設定ソフト」でタッチ感度の変更を行っているのですが,
> >まだ現象は改善できていない状況です。
> >
> >お手数をおかけしますが,
> >タッチパネルのチャタリング対策について教えていただけないでしょうか。
> >
> >以下のタッチパネルのチャタリング対策に関するトピックを拝見したのですが,
> >Armadillo-840mとタッチパネルをUSB経由で接続している場合,
> >Armadillo-840mでも,以下のトピックのようなチャタリング対策を実装することは可能でしょうか。
> >
> >https://armadillo.atmark-techno.com/forum/armadillo/1518
>
> このトピックでは、Armadillo-410 の CPU が内蔵の ADC でタッチパネル出力を計測していますが、お使いのタッチパネルは、USB HID デバイスとして振舞っており、タッチパネル自身が計測を行う方式ですから、同じような対策は困難です。
>
> >このトピックのように,
> >Armadillo-840m側の設定により,
> >タッチパネル取み込み周期を長くすることで,
> >現象を改善できないか検討しております。
>
> もしやるとしたら、アプリケーション側でタッチイベントの到着間隔を見てチャタリング除去する、という方策が考えられます。が、その方策ですと、最初に書いていらした、「反応が遅かったり」には対応できないかも知れません:
>
> nozaki-hさん(2021年12月8日 8時54分):
> >しかし,タッチパネルをタッチした時,
> >タッチパネルは反応するのですが,
> >反応が遅かったり,複数回タッチされたような動作になる場合があることを確認しました。
>
> 確認ですが、「GT-VP 設定ソフト」の「タッチパネル(タブ)」画面でタッチ信号をモニタした場合、タッチパネル押下時の状況は、正常でしょうか?
>  https://www.noritake-itron.jp/cs/soft/6

at_shinya.koga

2022年2月4日 11時07分

アットマークテクノの古賀です。

nozaki-hさん:
>回答ありがとうございます。
>
>armadillo-840mに実装されているQtを使用してアプリケーションソフトは作成しております。
>Qt側でタッチイベントの到着間隔をみてチャタリングをするにはどのように実装すればいいのでしょうか。

>>もしやるとしたら、アプリケーション側でタッチイベントの到着間隔を見てチャタリング除去する、という方策が考えられます。が、その方策ですと、最初に書いていらした、「反応が遅かったり」には対応できないかも知れません:
>>
>>nozaki-hさん(2021年12月8日 8時54分):
>>>しかし,タッチパネルをタッチした時,
>>>タッチパネルは反応するのですが,
>>>反応が遅かったり,複数回タッチされたような動作になる場合があることを確認しました。

タッチイベントのイベントハンドラで、現在時刻を記録して static 変数などに保存しておき、前回処理した時の呼び出し時刻と十分近ければ、無視する(何もしないで return する)ように変える、というのが安直なやり方かなと思います:
 https://doc.qt.io/qt-5/eventsandfilters.html

ところで、以下については、いかがでしょうか?

古賀(2022年2月4日 10時30分):
>確認ですが、「GT-VP 設定ソフト」の「タッチパネル(タブ)」画面でタッチ信号をモニタした場合、タッチパネル押下時の状況は、正常でしょうか?
> https://www.noritake-itron.jp/cs/soft/6

nozaki-h

2022年2月4日 14時27分

回答ありがとうございます。
タッチイベントのイベントハンドラ上でのチャタリング対策は検討いたします。
また,「GT-VP 設定ソフト」の「タッチパネル(タブ)」画面でタッチ信号をモニタした時の結果は正常でした。
タッチした位置に対して,正しい座標が取得できております。

なお,1回のタッチに対して,複数回タッチされたような動作になる時についてですが,
指でタッチパネル上に配置したボタンに触れた後,指を離さないまま,わずかに横にずらすようにタッチしてしまうと,
複数回ボタンが押されたような動作になってしまうようです。

「GT-VP 設定ソフト」とは別件なのですが,
タッチパネルのライブラリとして,
シングルタッチ向けの「tslib」という別のライブラリがあるという情報を見つけました。
https://armadillo.atmark-techno.com/blog/750/737
現在採用している「armadillo-840m」と「GTWV050VHB00P」の構成で,
上記の情報のようにtslibを使用することは可能か分かりますでしょうか。

現在,Linuxカーネルコンフィグレーションの
「HID Multitouch panels」は有効化しているのですが,
シングルタッチ向けに設定することで,現象が改善しないか検討しております。

以上,お手数をおかけしますが,よろしくお願いします。

> アットマークテクノの古賀です。
>
> nozaki-hさん:
> >回答ありがとうございます。
> >
> >armadillo-840mに実装されているQtを使用してアプリケーションソフトは作成しております。
> >Qt側でタッチイベントの到着間隔をみてチャタリングをするにはどのように実装すればいいのでしょうか。
> …
> >>もしやるとしたら、アプリケーション側でタッチイベントの到着間隔を見てチャタリング除去する、という方策が考えられます。が、その方策ですと、最初に書いていらした、「反応が遅かったり」には対応できないかも知れません:
> >>
> >>nozaki-hさん(2021年12月8日 8時54分):
> >>>しかし,タッチパネルをタッチした時,
> >>>タッチパネルは反応するのですが,
> >>>反応が遅かったり,複数回タッチされたような動作になる場合があることを確認しました。
>
> タッチイベントのイベントハンドラで、現在時刻を記録して static 変数などに保存しておき、前回処理した時の呼び出し時刻と十分近ければ、無視する(何もしないで return する)ように変える、というのが安直なやり方かなと思います:
>  https://doc.qt.io/qt-5/eventsandfilters.html
>
> ところで、以下については、いかがでしょうか?
>
> 古賀(2022年2月4日 10時30分):
> >確認ですが、「GT-VP 設定ソフト」の「タッチパネル(タブ)」画面でタッチ信号をモニタした場合、タッチパネル押下時の状況は、正常でしょうか?
> > https://www.noritake-itron.jp/cs/soft/6

at_shinya.koga

2022年2月4日 18時05分

アットマークテクノの古賀です。

nozaki-hさん;
>回答ありがとうございます。
>タッチイベントのイベントハンドラ上でのチャタリング対策は検討いたします。
>また,「GT-VP 設定ソフト」の「タッチパネル(タブ)」画面でタッチ信号をモニタした時の結果は正常でした。
>タッチした位置に対して,正しい座標が取得できております。

了解しました。

>なお,1回のタッチに対して,複数回タッチされたような動作になる時についてですが,
>指でタッチパネル上に配置したボタンに触れた後,指を離さないまま,わずかに横にずらすようにタッチしてしまうと,
>複数回ボタンが押されたような動作になってしまうようです。

この動作ですが、「GT-VP 設定ソフト」の「タッチパネル(タブ)」画面にあるドロップダウンメニューで「Single」を選択した状態では起きず、Armadillo-840m の場合にだけ起きるでしょうか?
また、GT-VP 設定ソフト」の「タッチパネル(タブ)」画面のドロップダウンメニューで「Multi 10」を選択した状態だと、どうなるでしょうか?

>「GT-VP 設定ソフト」とは別件なのですが,
>タッチパネルのライブラリとして,
>シングルタッチ向けの「tslib」という別のライブラリがあるという情報を見つけました。
>https://armadillo.atmark-techno.com/blog/750/737
>現在採用している「armadillo-840m」と「GTWV050VHB00P」の構成で,
>上記の情報のようにtslibを使用することは可能か分かりますでしょうか。

環境変数 TSLIB_TSDEVICE に /dev/input/event0 をセットすれば、使えるのではないかと思います:
 http://manpages.ubuntu.com/manpages/trusty/man5/ts.conf.5.html
 https://forum.qt.io/topic/44736/tslib-with-dirverless-usb-touch-module/3

>現在,Linuxカーネルコンフィグレーションの
>「HID Multitouch panels」は有効化しているのですが,
>シングルタッチ向けに設定することで,現象が改善しないか検討しております。

そうですね。ノリタケ伊勢電子の北米事業所のサイト(www.noritake-elec.com)にある GTWV050VHB00P のページからダウンロードできる仕様書を見ると、このタッチパネルは、デフォルトではシングルタッチモードで動作するようですから、Armadillo をシングルタッチ設定にするのは、有効かも知れません:
 https://www.noritake-elec.com/products/lcd-touch-screen/gt-vp

nozaki-h

2022年2月9日 9時43分

お世話になっております。
tslibについて,回答ありがとうございます。
tslibを使用して現象が改善するか現在検討しております。

> >なお,1回のタッチに対して,複数回タッチされたような動作になる時についてですが,
> >指でタッチパネル上に配置したボタンに触れた後,指を離さないまま,わずかに横にずらすようにタッチしてしまうと,
> >複数回ボタンが押されたような動作になってしまうようです。
> この動作ですが、「GT-VP 設定ソフト」の「タッチパネル(タブ)」画面にあるドロップダウンメニューで「Single」を選択した状態では起きず、
> Armadillo-840m の場合にだけ起きるでしょうか?
> また、GT-VP 設定ソフト」の「タッチパネル(タブ)」画面のドロップダウンメニューで「Multi 10」を選択した状態だと、どうなるでしょうか?
上記の動作についてですが,
armadillo-840mに実装されているQtを使用して,
タッチパネルのアプリケーションソフトを作成しているのですが,
タッチパネル上に配置したボタンをタッチした時に発生する動作です。

例えば,タッチパネル上の数値入力ボタン[1]を1回タッチした時,
入力欄に[1]が1個だけ入力されて欲しいのですが,
わずかに横にずらすように1回タッチすると,
入力欄に[1]が大量に入力されてしまう状況です。

「GT-VP 設定ソフト」の「タッチパネル(タブ)」で「Single」を選択した場合,
指でタッチしている間は,指を横に動かす/動かさないに関わらず,
「タッチパネル(タブ)」にタッチ情報「Single:x,y」が常に表示され続けていました。
指を離さないまま指を横に動かすと,
「タッチパネル(タブ)」のタッチ情報「Single:x,y」のx,y部分が変化します。

確認が不足しており申し訳ございませんが,
タッチパネルの仕様書に「シングルタッチモードでは,タッチが続いている間,連続的にタッチデータが送信される」
といった記述を見つけましたので,
「Single」の時に,タッチ中にタッチ情報が常に表示され続けることは正常だと予想しております。

「GT-VP 設定ソフト」の「タッチパネル(タブ)」で「Multi 10」を選択した場合,
指でタッチした後,指を横に動かさない限り,
「タッチパネル(タブ)」にタッチ情報「Single:x,y」が1回だけ表示されました。
その後,指を横に動かすと,
「タッチパネル(タブ)」にタッチ情報「Single:x,y」が複数回表示されました。
その後,指を離すと,
「タッチパネル(タブ)」に「Release」が1回だけ表示されました。

タッチパネルをシングルタッチモードではなくマルチタッチモードに設定した後,
Qtアプリケーションソフトでの動作が改善するか検討しているのですが,
現状,動作は改善していない状況です。

at_shinya.koga

2022年2月9日 10時28分

アットマークテクノの古賀です。

nozaki-hさん:
>tslibについて,回答ありがとうございます。
>tslibを使用して現象が改善するか現在検討しております。

了解しました。が、tslib を使っても改善できない場合は、Qt のイベントハンドラの使い方を工夫する必要があるかも知れませんね。

>>>なお,1回のタッチに対して,複数回タッチされたような動作になる時についてですが,
>>>指でタッチパネル上に配置したボタンに触れた後,指を離さないまま,わずかに横にずらすようにタッチしてしまうと,
>>>複数回ボタンが押されたような動作になってしまうようです。
>>
>>この動作ですが、「GT-VP 設定ソフト」の「タッチパネル(タブ)」画面にあるドロップダウンメニューで「Single」を選択した状態では起きず、
>>Armadillo-840m の場合にだけ起きるでしょうか?
>>また、GT-VP 設定ソフト」の「タッチパネル(タブ)」画面のドロップダウンメニューで「Multi 10」を選択した状態だと、どうなるでしょうか?
>
>上記の動作についてですが,
>armadillo-840mに実装されているQtを使用して,
>タッチパネルのアプリケーションソフトを作成しているのですが,
>タッチパネル上に配置したボタンをタッチした時に発生する動作です。
>
>例えば,タッチパネル上の数値入力ボタン[1]を1回タッチした時,
>入力欄に[1]が1個だけ入力されて欲しいのですが,
>わずかに横にずらすように1回タッチすると,
>入力欄に[1]が大量に入力されてしまう状況です。

了解しました。HID のマウスで言うと、マウスボタンを長押しした時にボタン押下イベントが繰り返し発生する状況なのですね。

>「GT-VP 設定ソフト」の「タッチパネル(タブ)」で「Single」を選択した場合,
>指でタッチしている間は,指を横に動かす/動かさないに関わらず,
>「タッチパネル(タブ)」にタッチ情報「Single:x,y」が常に表示され続けていました。
>指を離さないまま指を横に動かすと,
>「タッチパネル(タブ)」のタッチ情報「Single:x,y」のx,y部分が変化します。
>
>確認が不足しており申し訳ございませんが,
>タッチパネルの仕様書に「シングルタッチモードでは,タッチが続いている間,連続的にタッチデータが送信される」
>といった記述を見つけましたので,
>「Single」の時に,タッチ中にタッチ情報が常に表示され続けることは正常だと予想しております。

そのようですね。
先ほど、Qt のフォーラムで以下の質問スレッドを見つけたのですが、寄せられた回答を見ると、マウス長押し時に、押下イベント(onPressed)とクリックイベント(onClicked)、および長押しイベント(onPressAndHold)を区別でき、クリックイベントは長押し時に一度だけ発生するように思えます:
 https://forum.qt.io/topic/99394/detect-mouse-press-hold-release/3
もしかすると、この質問スレッドの内容が参考になるかも知れません。

# 僕は、Qt を使った GUI のコードを書いたことがありませんので、外していたら、ごめんなさい。

>「GT-VP 設定ソフト」の「タッチパネル(タブ)」で「Multi 10」を選択した場合,
>指でタッチした後,指を横に動かさない限り,
>「タッチパネル(タブ)」にタッチ情報「Single:x,y」が1回だけ表示されました。
>その後,指を横に動かすと,
>「タッチパネル(タブ)」にタッチ情報「Single:x,y」が複数回表示されました。
>その後,指を離すと,
>「タッチパネル(タブ)」に「Release」が1回だけ表示されました。
>
>タッチパネルをシングルタッチモードではなくマルチタッチモードに設定した後,
>Qtアプリケーションソフトでの動作が改善するか検討しているのですが,
>現状,動作は改善していない状況です。

タッチパネルを、USB でのコマンド送信によりマルチタッチモードに設定しても改善されない、ということで、タッチパネルの設定では改善できない可能性が高そうですね。tslib でソフトウェアによる「チャタリング」除去を行ったとしても、タッチパネルを押して指が滑った際、最初の一回しかイベントが来ないようにするのは難しいような気がします。もしそうであれば、Qt のイベントハンドラ周りでの対応が必要になりますよね。

nozaki-h

2022年3月10日 9時09分

連絡が遅くなり申し訳ございません。
現在,tslibを導入して現象が改善するか調査しています。

以下の記事に従ってarmadillo-840mのatmark-distにtslibを導入しました。
 https://armadillo.atmark-techno.com/blog/750/737
記事との差は以下の2点です。
 ・atmark-dist以下の指示ディレクトリに含まれる"840"は"840m"に読み替えています。
 ・「6. Debianパッケージのtslibライブラリをダウンロードして、展開」
  で紹介されている下記のファイルはリンク切れとなっていたため
  別なサイトから同じファイル名のファイルをダウンロードして利用しました。
  "http://ftp.jp.debian.org/debian/pool/main/t/tslib/libts-0.0-0_1.0-11_ar…"

しかし,tslib自体は導入できたと思うのですが,正しく動作しない状況です。
tslibのキャリブレーションを行うts_calibrateを実行した際に,
下記のエラーメッセージが表示されて,実行に失敗します。
(一瞬キャリブレーション画面が出ているようですが,エラーですぐに終了しているようです)

エラーメッセージ:"selected device is not a touchscreen I understand"

実行時のログしては下記となります。
------------------------------------------------------------------------------------
[root@armadillo840-0 (ttySC2) ~]# export TSLIB_TSDEVICE=/dev/input/event0
[root@armadillo840-0 (ttySC2) ~]# export TSLIB_PLUGINDIR=/usr/lib/ts0
[root@armadillo840-0 (ttySC2) ~]# export TSLIB_CALIBFILE=/etc/config/pointercal
[root@armadillo840-0 (ttySC2) ~]# export TSLIB_FBDEVICE=/dev/fb0
[root@armadillo840-0 (ttySC2) ~]# ts_calibrate
xres = 800, yres = 480
selected device is not a touchscreen I understand
Took 4 samples...
Top left : X = 842586364 Y = 59298
Took 4 samples...
Top right : X = 842586364 Y = 59298
Took 4 samples...
Bot right : X = 842586364 Y = 59298
Took 4 samples...
Bot left : X = 842586364 Y = 59298
Took 4 samples...
Center : X = 842586364 Y = 59298
0.378835 0.000003 -0.030429
0.431189 0.000002 -0.018242
Calibration constants: 24827 0 -1994 28258 0 -1195 65536
[root@armadillo840-0 (ttySC2) ~]# flatfsd -s
flatfsd: saving fs to partition 1, tstamp=44
flatfsd: Wrote 39283 bytes to flash in 0 seconds
[root@armadillo840-0 (ttySC2) ~]#
------------------------------------------------------------------------------------

エラーメッセージを見ると,
認識できるタッチスクリーンとして扱われていないようなのですが,
上記のエラーメッセージが表示される場合,
どのような原因が考えられるかご意見をいただけないでしょうか。

以上,よろしくお願いします。

at_shinya.koga

2022年3月11日 14時03分

アットマークテクノの古賀です。

nozaki-hさん:
>連絡が遅くなり申し訳ございません。
>現在,tslibを導入して現象が改善するか調査しています。
>
>以下の記事に従ってarmadillo-840mのatmark-distにtslibを導入しました。
> https://armadillo.atmark-techno.com/blog/750/737
>記事との差は以下の2点です。
> ・atmark-dist以下の指示ディレクトリに含まれる"840"は"840m"に読み替えています。
> ・「6. Debianパッケージのtslibライブラリをダウンロードして、展開」
>  で紹介されている下記のファイルはリンク切れとなっていたため
>  別なサイトから同じファイル名のファイルをダウンロードして利用しました。
>  "http://ftp.jp.debian.org/debian/pool/main/t/tslib/libts-0.0-0_1.0-11_ar…"
>
>しかし,tslib自体は導入できたと思うのですが,正しく動作しない状況です。
>tslibのキャリブレーションを行うts_calibrateを実行した際に,
>下記のエラーメッセージが表示されて,実行に失敗します。
>(一瞬キャリブレーション画面が出ているようですが,エラーですぐに終了しているようです)
>
>エラーメッセージ:"selected device is not a touchscreen I understand"
>
>実行時のログしては下記となります。
>------------------------------------------------------------------------------------
>[root@armadillo840-0 (ttySC2) ~]# export TSLIB_TSDEVICE=/dev/input/event0
>[root@armadillo840-0 (ttySC2) ~]# export TSLIB_PLUGINDIR=/usr/lib/ts0
>[root@armadillo840-0 (ttySC2) ~]# export TSLIB_CALIBFILE=/etc/config/pointercal
>[root@armadillo840-0 (ttySC2) ~]# export TSLIB_FBDEVICE=/dev/fb0
>[root@armadillo840-0 (ttySC2) ~]# ts_calibrate
>xres = 800, yres = 480
>selected device is not a touchscreen I understand
>Took 4 samples...
>Top left : X = 842586364 Y = 59298

>エラーメッセージを見ると,
>認識できるタッチスクリーンとして扱われていないようなのですが,
>上記のエラーメッセージが表示される場合,
>どのような原因が考えられるかご意見をいただけないでしょうか。

GitHub にある tslib のリポジトリを見ると、最新版では、
 selected device is not a touchscreen I understand
というエラーメッセージを出す箇所が存在しません。dmc-raw.c で実装されている dmc_init_device() では、この文字列を含むエラーメッセージを出す行がありますが、当該箇所では、この文字列の前に 'dmc: ' が付いていまし、また、draw-raw.c は DMC 社のタッチスクリーン用の実装のようですから、ここではないと思います。
 https://github.com/libts/tslib/blob/c525c0b5d8eada982c99442454fcf7b8364…

tslib の古いバージョンについて調べてみたところ、1.0 には、上記のエラーメッセージを出す箇所がありました。現在お使いのバージョンは libts-0.0-0_1.0-11 ということで、
 http://old-releases.ubuntu.com/ubuntu/pool/universe/t/tslib/
を見ると、このバージョンの .deb パッケージは2012年5月に作られたもののようですから、おそらく、tslib のリポジトリにある 1.0 (Aug 2006) と 1.1 (Aug 2013) の間の版をビルドしたものなのでしょう。1.0 から 1.1 の間のコミットを見ると、Nov 2008 の、以下のコミットまで input-raw.c に上記のエラーメッセージを出す行が存在していました:
 https://github.com/libts/tslib/commit/548320749f93dde15fef8df07238410c0…
上記のエラーメッセージは、input-raw.c で実装されている check_fd() が出しており、入力デバイスが ABS_X, ABS_Y, ABS_PRESSURE を通知するタイプのものである場合にエラーとしているようです:
 https://source.android.google.cn/devices/input/touch-devices?hl=ja
 https://elixir.bootlin.com/linux/v3.4.113/source/include/linux/input.h#…
で、この動作は、tslib の、上述した Nov 2008 のコミットで変わっており、当該ケースでエラーしないように変わっているように思います。もしそうであれば、このコミットが反映されたバージョンを組み込むことで、エラーが起きるのを回避できるかも知れません。

検索してみたところ、tslib で同じエラーメッセージが出ると言っていた人が、その後、新しい版にアップグレードしたところ問題が解消した、と書いているのが見つかりました:
 https://e2e.ti.com/support/processors-group/processors/f/processors-for…
この投稿は Jul 2013 で、tslib 1.1 が出た Aug 2013 と近い時期ですから、同じエラーではないかと思います。ということで、
 http://old-releases.ubuntu.com/ubuntu/pool/universe/t/tslib/
から libts-0.0-0_1.0-11 より新しいバージョンである、以下のどちらかをダウンロードして適用してみると、症状が変わるかも知れません:
 libts-0.0-0_1.0-12_armhf.deb
 libts0_1.11-1_armhf.deb
あるいは、tslib 1.1 のソースを GitHub からダウンロードして、ビルドして使うのもありでしょう:
 https://github.com/libts/tslib/releases/tag/1.1

以上、参考になりましたら幸いです。

nozaki-h

2022年3月15日 9時18分

> お世話になっております。
> 現在,Armadillo-840mとノリタケ伊勢電子株式会社製のタッチTFTモジュール「GTWV050VHB00P」を
> USB経由で接続し,タッチパネルの動作確認を行っております。
>
> しかし,タッチパネルをタッチした時,
> タッチパネルは反応するのですが,
> 反応が遅かったり,複数回タッチされたような動作になる場合があることを確認しました。
>
> そこで「evtest /dev/input/event0」コマンドを使用し,
> タッチパネルをタッチした時の入力イベントを確認したところ,
> 1回のタッチに対して,入力イベントが大量に発生していました。
>
> 添付ファイルは,「evtest /dev/input/event0」コマンドで入力イベントを確認した時の出力情報です。
> タッチパネルを一瞬タッチしただけですが,
> 「type 1 (Key), code 330 (Touch)」イベントや「type 3 (Absolute), code 53 (Position X)」イベントなどが
> 大量に発生しています。
>
> この動作が正しい動作かどうか判断できておらず,
> このような入力イベントになるものなのか,異常な動作なのかご意見をいただけないでしょうか。
>
> 以上,お手数をおかけしますが,よろしくお願いします。
--------------------------------------------------
お世話になっております。
下記の2つのバージョンのtslibでエラーが改善するか確認しました。
・libts-0.0-0_1.0-12_armhf.deb
・libts0_1.11-1_armhf.deb
しかし,近いバージョンのlibts-0.0-0_1.0-12_armhf.debでは症状が改善せず,
離れたバージョンのlibts0_1.11-1_armhf.debでは新たなエラー発生により,
起動しない症状を確認しました。
詳細は以下のとおりです。

・libts-0.0-0_1.0-12_armhf.deb
ts_calibrateは起動に失敗しました。
液晶画面は全面が黒色となり,
画面中央に一瞬メッセージが表示されているようなのですが,
読み取る前に消去されてしまうため確認できませんでした。
エラー内容は「selected device is not a touchscreen I understand」で ,
この症状は元のdebパッケージ(libts-0.0-0_1.0-11_armhf.deb)と同じでした。

・libts0_1.11-1_armhf.deb
ts_calibrateは起動に失敗しました。
ただ,液晶画面は変化しませんでした(既存の画面状態を維持)
その時のログは以下のとおりです。

[root@armadillo840-0 (ttySC2) ~]# export TSLIB_TSDEVICE=/dev/input/event0
[root@armadillo840-0 (ttySC2) ~]# export TSLIB_PLUGINDIR=/usr/lib/ts0
[root@armadillo840-0 (ttySC2) ~]# export
TSLIB_CALIBFILE=/etc/config/pointercal
[root@armadillo840-0 (ttySC2) ~]# export TSLIB_FBDEVICE=/dev/fb0
[root@armadillo840-0 (ttySC2) ~]# ts_calibrate
Couldnt load module input <--- 新たなエラー発生
No raw modules loaded. <--- 新たなエラー発生
ts_config: Success
[root@armadillo840-0 (ttySC2) ~]

新たなエラーが発生する原因を調査しているのですが,
考えられる原因などありましたら,ご意見をいただけないでしょうか。

以上,お手数をおかけしますが,よろしくお願いします。
--------------------------------------------------

at_shinya.koga

2022年3月15日 12時46分

アットマークテクノの古賀です。

nozaki-hさん:
>下記の2つのバージョンのtslibでエラーが改善するか確認しました。
>・libts-0.0-0_1.0-12_armhf.deb
>・libts0_1.11-1_armhf.deb
>しかし,近いバージョンのlibts-0.0-0_1.0-12_armhf.debでは症状が改善せず,
>離れたバージョンのlibts0_1.11-1_armhf.debでは新たなエラー発生により,
>起動しない症状を確認しました。
>詳細は以下のとおりです。

>・libts0_1.11-1_armhf.deb
>ts_calibrateは起動に失敗しました。
>ただ,液晶画面は変化しませんでした(既存の画面状態を維持)
>その時のログは以下のとおりです。

>[root@armadillo840-0 (ttySC2) ~]# ts_calibrate
>Couldnt load module input <--- 新たなエラー発生
>No raw modules loaded. <--- 新たなエラー発生
>ts_config: Success
>[root@armadillo840-0 (ttySC2) ~]
>
>新たなエラーが発生する原因を調査しているのですが,
>考えられる原因などありましたら,ご意見をいただけないでしょうか。

libts0_1.11-1_armhf.deb には /etc/ts.conf が収録されているのが、libts-0.0-0_1.0-12_armhf.deb との違いですね。
エラーメッセージからすると、libts0_1.11-1_armhf.deb に収録されている ts.conf の先頭にある、以下の行が関係しているのかも知れません:

# Access plugins
################
 
# Uncomment if you wish to use the linux input layer event interface
module_raw input

ts.conf のこの行は、GtiHub にある最新ソースでも同じですね:
 https://github.com/libts/tslib/blob/master/etc/ts.conf

試しに、この行('module_raw input')の行頭に # を付けて、この行をコメントアウトしてから ts_calibrate を実行すると、どうなるでしょうか?

nozaki-h

2022年3月15日 15時03分

> アットマークテクノの古賀です。
>
> nozaki-hさん:
> >下記の2つのバージョンのtslibでエラーが改善するか確認しました。
> >・libts-0.0-0_1.0-12_armhf.deb
> >・libts0_1.11-1_armhf.deb
> >しかし,近いバージョンのlibts-0.0-0_1.0-12_armhf.debでは症状が改善せず,
> >離れたバージョンのlibts0_1.11-1_armhf.debでは新たなエラー発生により,
> >起動しない症状を確認しました。
> >詳細は以下のとおりです。
> …
> >・libts0_1.11-1_armhf.deb
> >ts_calibrateは起動に失敗しました。
> >ただ,液晶画面は変化しませんでした(既存の画面状態を維持)
> >その時のログは以下のとおりです。
> …
> >[root@armadillo840-0 (ttySC2) ~]# ts_calibrate
> >Couldnt load module input <--- 新たなエラー発生
> >No raw modules loaded. <--- 新たなエラー発生
> >ts_config: Success
> >[root@armadillo840-0 (ttySC2) ~]
> >
> >新たなエラーが発生する原因を調査しているのですが,
> >考えられる原因などありましたら,ご意見をいただけないでしょうか。
>
> libts0_1.11-1_armhf.deb には /etc/ts.conf が収録されているのが、libts-0.0-0_1.0-12_armhf.deb との違いですね。
> エラーメッセージからすると、libts0_1.11-1_armhf.deb に収録されている ts.conf の先頭にある、以下の行が関係しているのかも知れません:
>

> # Access plugins
> ################
> 
> # Uncomment if you wish to use the linux input layer event interface
> module_raw input
> 

>
> ts.conf のこの行は、GtiHub にある最新ソースでも同じですね:
>  https://github.com/libts/tslib/blob/master/etc/ts.conf
>
> 試しに、この行('module_raw input')の行頭に # を付けて、この行をコメントアウトしてから ts_calibrate を実行すると、どうなるでしょうか?

お世話になっております。

ご指摘の通りにコメントアウトしてみましたがエラーは改善されませんでした。
表示されるエラーメッセージについて変化ありませんでした。

考えられる原因などありましたら,ご意見をいただけないでしょうか。

at_shinya.koga

2022年3月15日 16時55分

アットマークテクノの古賀です。

nozaki-hさん:
>>>新たなエラーが発生する原因を調査しているのですが,
>>>考えられる原因などありましたら,ご意見をいただけないでしょうか。
>>
>>libts0_1.11-1_armhf.deb には /etc/ts.conf が収録されているのが、libts-0.0-0_1.0-12_armhf.deb との違いですね。
>>エラーメッセージからすると、libts0_1.11-1_armhf.deb に収録されている ts.conf の先頭にある、以下の行が関係しているのかも知れません:
>>

>># Access plugins
>>################
>>
>># Uncomment if you wish to use the linux input layer event interface
>>module_raw input
>>

>>
>>ts.conf のこの行は、GtiHub にある最新ソースでも同じですね:
>> https://github.com/libts/tslib/blob/master/etc/ts.conf
>>
>>試しに、この行('module_raw input')の行頭に # を付けて、この行をコメントアウトしてから ts_calibrate を実行すると、どうなるでしょうか?
>
>お世話になっております。
>
>ご指摘の通りにコメントアウトしてみましたがエラーは改善されませんでした。
>表示されるエラーメッセージについて変化ありませんでした。

了解しました。お役に立てず、申し訳ありません。

>考えられる原因などありましたら,ご意見をいただけないでしょうか。

ごめんなさい。分かりません。
ここから先は、このフォーラムよりは、tslib の作者や、あるいは Qt のフォーラムで質問して頂く方が、有効なコメントを得られる可能性が高いのではないかと思います。