シリアル通信
■ GPSレシーバをPCに接続するとマウスカーソルが暴れる
症状
シリアル(RS-232C)出力のGPSレシーバをPCに繋ぐと、
マウスポインタ―が暴れだして操作できなくなる。
※USB/シリアル変換機能を使用した、USB接続のGPSレシーバ
あるいは、USB/シリアル変換アダプターでも同様の症状が発生することがある。
原因
昔からよく知られている、Windowsの不具合。
シリアルポートにケーブルを接続し、一定時間以内にデータを受信すると
Windowsは「シリアルマウス」が接続されたと誤認識し、シリアル機器を
serial ballpointに割り当てる。
受信したGPSデータは、シリアルマウスの出力データとして扱われるので、
マウスカーソルが暴れる。
対策【基本的な考え方】
誤認識されたGPSレシーバは、COMの
serial ballpointに割り当てられているので、それを「無効」とすれば良い。
これにより、次にGPSレシーバを接続したとき、
serial ballpointへの割当ては行われず、通常のCOMポートに割当てられる。
※「削除」すると、再接続したときに、再びserial ballpointに割当てられてしまう
可能性があるので、不可。
【操作方法】
[コントロールパネル]-[デバイスマネージャ]-[マウスとそのほかのポインティングデバイス]にある[serial ballpoint]を右クリックし、「無効」を選択する。
【問題点】
暴れているマウスカーソルをどのように鎮めて、デバイスマネージャを開くか?
がポイント。
※誤認識されたGPSレシーバをPCから外すと、[デバイスマネージャ]の
[serial ballpoint]項目も消えてしまうので、この操作は、
GPSレシーバをPCに接続したままで行う必要がある。
対策【具体例】
◆シリアル/USB変換ケーブルを使用している場合
- (シリアル/USB変換ケーブルとPCは接続したまま) シリアル/USB変換ケーブルからGPSレシーバを外す。
- (マウスカーソルが静止するので) [デバイスマネージャ]の [serial ballpoint]を「無効」とする。
- GPSレシーバをシリアル/USB変換ケーブルに接続する。
対策でない(?)対策
※一般に対策として言われている以下の方法は、 当社ではその効果を確認しておりません。
◆レジストリを書き換える
MicroSoft社が推奨している方法。
https://answers.microsoft.com/en-us/windows/forum/windows_7-hardware/windows-7-recognized-usb-gps-as-a-serial-mouse-in/0c3f0d94-6181-4a43-9e90-bcea8a21415d?page=2
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\sermouse
のレジストリを書き換えて、シリアルマウスを無効にする。
【当社での結果】
一時的に直ることがありますが、しばらくすると元に戻ります。
◆隠れているserial ballpointを表示し、無効にする
誤認識されているGPSレシーバをPCから外すと
[デバイスマネージャ]の [serial ballpoint]が
消えてしまうので、
隠れているすべてのデバイスを表示
(環境変数:devmgr_show_nonpresent_devices = 1)してから、
[serial ballpoint]を無効にする。
※デバイスマネージャは、コマンドプロンプトから起動(コントロールパネルから起動すると、変更した環境変数が反映されない)。
【当社での結果】
[serial ballpoint]は表示されますが、右クリックで「無効」が表示されません。