Skip to content
[dk]

~/blog/com10-serial-port-handle.md

COM10 以上のシリアルポートのハンドルを得る方法

会社で作ってる製品を,シリアル通信でリモート操作するソフトがあるんですが,なぜか通信できないことがあった.その時の覚書です.

原因は 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 ポートを指定すると問題なく接続出来ました.

参考:

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

$ related --same-tags

cd .. 記事一覧へ戻る