WinNT or XPでCOM10以上のシリアルポートを使う方法

 

 自分はロボットを制御するために、VisualC++で作ったプログラムからシリアルポートを使用していたのですが、なんと、CreateFile関数(Win32API)を用いた通常のプログラミングでは

COM10以上ではINVALID_HANDLE_VALUEというメッセージが返されてポートが開けません!

つまりポート名がポート番号が2桁以上になるとポートが開けなくなります。(この現象は自分のWin98環境では起こらない。)

しばらくの間解決法が分からなくて悩みましたが、ついこの間、なんとこの件についてMSDNにそのまま載っていること発見しました。

 

"[SDK32] COM10以上のシリアルポートを指定する方法"

です。MSDNで検索して頂ければ出てくると思いますが、要は、CreateFile関数の第1引数を

CreateFile( "COM10",・・・では無くて、

CreateFile( "\\\\.\\COM10",・・・とすれば良いようです。

これを見つけた時の感想としては、「えぇー!こんな大事なこと、もっと目立つ場所に置いておいてよ〜!(ToT)」
という感じでした。。CreateFileの説明ページからリンク貼っておいてくれればいいのに。。(^^;;

 

top 

 


Homeへ戻る