シリアル通信でCOM10以上のポートを使用する
最近はあまり使う機会ないのですが、シリアル通信で指定するCOMポート、以前これで嵌ったことがありまして。
COMポートとは?
シリアル通信でデータ伝送を行うインターフェースのことですね。検索すればすぐに出てくると思います。
ポートのオープンでエラーになる
シリアル通信をする際は、まずCOMポートのオープンを行うのですが、いきなりエラーになってしまう。
Win32APIのCreateFile()がINVALID_HANDLE_VALUE
で返ってくる。
んー、ボードのマニュアルではCOM10を指定しろ
と書いてあるのだが、、、
HANDLE h = CreateFile("COM10", ... ); // h = INVALID_HANDLE_VALUE.
いろいろ調べていると、以下のような情報が出てきた!
COM10以上を指定する場合、書式が違う
はい、書き方が違うんですって。
MSDNにも書いてありました。
COM1〜COM9までは、"COM1"
という書き方で問題ないのだが
COM10以上は、"\\.\COM10"
という書き方になるそうです。
プログラムで書くときは、ちゃんとエスケープしてくださいね。
HANDLE h = CreateFile("\\\\.\\COM10", ... );
これで無事オープン出来ました!
尚、この書き方はCOM1~COM9でも有効ということだそうです。
まとめ
COM1〜COM9までは、"COM1"
という書き方でOK。
COM10以上は、"\\.\COM10"
という書き方になる。
最後に、、、
リファレンスはちゃんと読まないとですね、、、(汗