- Published on
COM10 以上のシリアルポートのハンドルを得る方法
- Authors
- Name
- Daisuke Kobayashi
- https://twitter.com
会社で作ってる製品を,シリアル通信でリモート操作するソフトがあるんですが,なぜか通信できないことがあった.その時の覚書です.
原因は COM10 以上を指定できるようにコーディングされてなかったからでした.COM10 以上を指定するには下記のような記述が必要です.
char port[11];
memset(port, '\0', sizeof(port));
// COM10 以上を指定すると INVALID_HANDLE_VALUE
// COM9 までは下記の記述で可
// sprintf(port, "COM%d", port_number);
// COM10 以上
sprintf(port, "\\\\.\\COM%d", port_number);
HANDLE handle = CreateFile(port, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
上記のように, COM ポートを指定すると問題なく接続出来ました.
参考: