覚書
COM10 以上のシリアルポートを指定する方法
最新、出張でAUのデータカード、FOMAでの通信を使ったりし、各社のRS232C~USB変換器(COREGA CG-USBRS232R),(サンワサプライ USB-CVRS9),(IO・DATA USB-RSAQ2,USB-RSAQ5)等をを使っているうちに、COMの番号が10を超えるようになってしまいました。
先日、自分で作ったプログラムでCOM11を開こうとした所、うまくいきません。
悩んで調べてもらった所、
COM10 以上のシリアルポートを指定する方法 が
下記のマイクロソフト サポート オンラインに掲載されていました。
http://support.microsoft.com/kb/115831/ja
CreateFile() を使用すると、シリアルポートのハンドルを得ることができます。この場合、共有モードパラメータには 0 、クリエイトパラメータには OPEN_EXISTING 、テンプレートパラメータには NULL を設定しなければいけません。詳細は "Win32 Programmer's Reference" の "CreateFile()" を参照してください。
CreateFile() は、ファイル名に "COM1" から "COM9" を使用した場合は、正常に終了しますが、"COM10" またはそれ以上のポート番号を使用すると、
"INVALID_HANDLE_VALUE"
というメッセージが返されます。ポート名が、.COM10 となる場合は、CreateFile() で以下の様に設定すれば、シリアルポートを正しく設定することができます。
CreateFile(
"\.COM10", /* 通信デバイスの名前のアドレス */
fdwAccess, /* アクセス (読み取りおよび書き込み) モード */
0, /* 共有モード */
NULL, /* セキュリティ記述子のアドレス */
OPEN_EXISTING, /* 作成方法 */
0, /* ファイル属性 */
NULL /* コピーする属性付きファイルのハンドル */
);
注意 : この構文は COM1 から COM9 でも有効です。ボードによっては、ユーザーがポート名を選べるものもあります。そのような場合でも、自分で付けた名前をポート名の箇所に入れ替えれば、この構文は有効となります。
アプリケーションテクノロジー株式会社
COM10 以上のシリアルポートを指定する方法
最新、出張でAUのデータカード、FOMAでの通信を使ったりし、各社のRS232C~USB変換器(COREGA CG-USBRS232R),(サンワサプライ USB-CVRS9),(IO・DATA USB-RSAQ2,USB-RSAQ5)等をを使っているうちに、COMの番号が10を超えるようになってしまいました。
先日、自分で作ったプログラムでCOM11を開こうとした所、うまくいきません。
悩んで調べてもらった所、
COM10 以上のシリアルポートを指定する方法 が
下記のマイクロソフト サポート オンラインに掲載されていました。
http://support.microsoft.com/kb/115831/ja
CreateFile() を使用すると、シリアルポートのハンドルを得ることができます。この場合、共有モードパラメータには 0 、クリエイトパラメータには OPEN_EXISTING 、テンプレートパラメータには NULL を設定しなければいけません。詳細は "Win32 Programmer's Reference" の "CreateFile()" を参照してください。
CreateFile() は、ファイル名に "COM1" から "COM9" を使用した場合は、正常に終了しますが、"COM10" またはそれ以上のポート番号を使用すると、
"INVALID_HANDLE_VALUE"
というメッセージが返されます。ポート名が、.COM10 となる場合は、CreateFile() で以下の様に設定すれば、シリアルポートを正しく設定することができます。
CreateFile(
"\.COM10", /* 通信デバイスの名前のアドレス */
fdwAccess, /* アクセス (読み取りおよび書き込み) モード */
0, /* 共有モード */
NULL, /* セキュリティ記述子のアドレス */
OPEN_EXISTING, /* 作成方法 */
0, /* ファイル属性 */
NULL /* コピーする属性付きファイルのハンドル */
);
注意 : この構文は COM1 から COM9 でも有効です。ボードによっては、ユーザーがポート名を選べるものもあります。そのような場合でも、自分で付けた名前をポート名の箇所に入れ替えれば、この構文は有効となります。
アプリケーションテクノロジー株式会社