未だに4800bpsなのか・・・・・・

PC用のGPSレシーバ(I-O DATA 高感度USB接続GPSレシーバー「NAVI CLIP」 UMGPS/MF
)の仕様を見ていると、PCへのデータ転送速度が4800bpsとなっている。
この製品はUSB接続の製品なのだが、昔のRS-232C接続の製品もこの速度だったので、未だに変わっていないようだ。
10年ほど前にDebian GNU LinuxをベースにGPSレシーバとFOMA端末を接続した小型システムを開発したことがあるが、その際GPSレシーバとの通信速度が4800bpsというのがネックになった。
というのは当時でもLinuxのシリアルドライバで設定できるRS-232Cの通信速度は9600bpsが最低で、それ以下の速度に設定することが出来なかったため。
ハードウェアとしては16550A互換のUARTなので、150bpsといった低速の通信速度にも対応しているが、Linuxのシリアルドライバがそれに対応していないために、そのままでは4800bpsでの通信が出来ない。
16550Aの通信速度は2バイトのレジスタの内容で決定されるが、Linuxのドライバはその内の1バイトしか書き換えないらしい(9600bps以上ならそれでも設定可能)ので、プログラムで該当のレジスタ(分周レジスタ)を直接書き換えるようにして4800bpsでの通信を可能にしてGPSレシーバから座標データを読み込めるようにした。
この時はC言語でプログラムを書いていたが、レジスタを直接書き換えるのには「outb」関数を使った覚えがある。
#outb(0x80,レジスタのアドレス)ってな感じで。
つか、こんなプログラムを書かないと使えないデバイスってどうよ?と思ったのは内緒(笑)。

似たようなことを一昨年にも書いていた(汗)
「Windows用ddコマンド」

←クリックしてくれると嬉しいです。
PR

コメントを残す