2007-07-10

シリアルポートを扱うのは簡単だ

 FPGAとVHDLの実習で、シリアルポートを使う練習で、ある値を送り続ける課題があった。果たしてさっぱりうまくいかなかった。ハイパーターミナルでは分かりづらいので、自前でCOMポートをモニタするツールを書くことにした。かねてより簡単にCOMポートに読み書きできるのは知っていたが、本当にあっさりと書くことができて拍子抜けした。それにしても、ボーレートやフロー制御の設定にまぎれて、1バイトが何ビットであるかを設定する項目があるのには、時代を感じた。    とりあえず、概略を書いておく。まず、CreateFileで開く。ファイル名は。"COMx"だ。xの部分に、開きたいCOMポートの数字を入れればいい。そして必要に応じてREADやWRITEのアクセス権を指定する。また、MSDNによれば、排他的アクセスで無ければならないとされている。セキュリティは無し。OPEN_EXISTINGで開く。オーバーラップもサポートされている。テンプレートは設定できない。
HANDLE com = CreateFile( L"COM1", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
 現在の設定は、GetCommStateで設定できる。DCB構造体を適切に設定して、SetCommStateで変更できる。あとは、おなじみのReadFileやWriteFileで読み書きすればいい。  時代と言えば、昔はシリアルだから遅い、パラレルにしたほうが早いと言われていたものだ。  シリアルって早くね? 480Mボーぐらいでるんじゃね?

No comments: