新しく発言する EXIT インデックスへ
"COM10"以上を使用するには?

  "COM10"以上を使用するには? 若井田育夫 2003/12/05 18:53:58 
  OPEN#1:NAME"COM10:" 白石和夫 2003/12/05 20:40:43 
   └OPEN#1:NAME"COM10:"を試しましたが、通信は... 若井田育夫 2003/12/05 21:50:32 
    └通常のファイルかどうかの判断は,WIN32API... 白石和夫 2003/12/05 22:06:40 
     └MS115831によると,COM10以上は,\\.\COM10... 白石和夫 2003/12/06 17:16:06 
      └GetDefaultCommConfigが成功した名前につい... 白石和夫 2003/12/06 17:52:10 
       └Ver.5.16改をupしていただき大変恐縮してお... 若井田育夫 2003/12/08 10:18:52 
        └open#1:"\\.\com10" 白石和夫 2003/12/08 10:43:52 
         └感謝いたします。 若井田育夫 2003/12/08 13:29:42 

  "COM10"以上を使用するには? 若井田育夫 2003/12/05 18:53:58  ツリーへ

"COM10"以上を使用するには? 返事を書く
若井田育夫 2003/12/05 18:53:58
10月にシリアルポートを使用して計測機器と通信する方法について質問させていただきました。おかげさまでうまく使用できています。
シリアルポートを増設して
OPEN #1: NAME "COM9"
まではうまく動作するのですが、
OPEN #1: NAME "COM10"
とすると
"EXTYPE 7101 COM10をオープンできない ファイルI/Oエラー"
となってしまいます。
十進BASIC上はCOMポート数に制限はないようですが、"COM10"以上を利用する方法はないものでしょうか?
OSはWinXp Homeです。デバイスマネージャー上では"COM10"が正常に動作していることになっています。ちなみに、正常に動作していた"COM3"のポート名を"COM10"とか"COM12"とかに変更すると、同じようにエラーとなります。
"COM10"以上の利用方法について教えていただければ幸いです。

  OPEN#1:NAME"COM10:" 白石和夫 2003/12/05 20:40:43  ツリーへ

Re: "COM10"以上を使用するには? 返事を書く
白石和夫 2003/12/05 20:40:43
OPEN #1: NAME "COM10:"
としたらどうなりますか。

   └OPEN#1:NAME"COM10:"を試しましたが、通信は... 若井田育夫 2003/12/05 21:50:32  ツリーへ

Re: OPEN#1:NAME"COM10:" 返事を書く
若井田育夫 2003/12/05 21:50:32
OPEN #1: NAME "COM10:"を試しましたが、通信はできないようです。
EXTYPE 7101 のエラーは出なくなりました。
COMポートに接続した測定器には受信したコマンドを表示するウィンドウがあり、通常だと送ったコマンドが表示されます。測定器で受信できた形跡がないので、COM10を介してコマンドが送信できなかったものと思われます。
次に LINE INPUT #1:A$ を実行して受信を試みましたが、エラーとなり、プログラムが停止します。この際、実行したディレクトリー内に、
"COM10"という名の新しいファイルが作成されます。
このことから、OPEN #1: NAME "COM10:"は、通信ポートCOM10ではなく、ファイル"COM10"を開くコマンドとして実行されたようです。
このとき、ファイル"COM10"は空のファイルで、何も書き込みされていません。最初の OPEN #1: NAME "COM10"の実行の際は、やはり"COM10"という名前のファイルが作成されますが、このファイルには、PRINT #1:文で書いた送信コマンド一部が書き込まれます。"COM10"と"COM10:"の違いはこの辺だけのようです。
また、ネットワークパスを含めた形のファイル名で
OPEN #1: NAME "\\:\COM10"
と指定してみましたが、通信はできませんでした。

    └通常のファイルかどうかの判断は,WIN32API... 白石和夫 2003/12/05 22:06:40  ツリーへ

Re: OPEN#1:NAME"COM10:"を試しましたが、通信は... 返事を書く
白石和夫 2003/12/05 22:06:40
通常のファイルかどうかの判断は,WIN32 APIのGetDefaultCommConfigで行っています。このAPIが成功すればCOMポートと判断しているのですが,それが的確ではないのかも知れません。
適切な判定法があれば,修正したいと思います。

     └MS115831によると,COM10以上は,\\.\COM10... 白石和夫 2003/12/06 17:16:06  ツリーへ

Re: 通常のファイルかどうかの判断は,WIN32API... 返事を書く
白石和夫 2003/12/06 17:16:06
MS115831 によると,COM10以上は,\\.\COM10のように書かないとAPIのCreateFile()で認識しないのだそうです。
ところが,GetDefaultCommConfigは,私のところ(Win2000)では,COM1はOkですが,\\.\COM1は認識しません。多分,COM10と\\.\COM10でも同様だと思います。
おそらく,COM10と書くとCreateFileで蹴られ,\\.\COM10と書くとGetDefaultCommConfigで蹴られるのが原因のように思います。

      └GetDefaultCommConfigが成功した名前につい... 白石和夫 2003/12/06 17:52:10  ツリーへ

Re: MS115831によると,COM10以上は,\\.\COM10... 返事を書く
白石和夫 2003/12/06 17:52:10
GetDefaultCommConfigが成功した名前については,それがCOM10以降であれば先頭に\\.\を付加してCreateFileに渡すことにします。
Ver5.1.6改のテスト版としてupします。

       └Ver.5.16改をupしていただき大変恐縮してお... 若井田育夫 2003/12/08 10:18:52  ツリーへ

Re: GetDefaultCommConfigが成功した名前につい... 返事を書く
若井田育夫 2003/12/08 10:18:52
Ver.5.16改をupしていただき大変恐縮しております。
BASIC.EXEを新しいファイルで上書きし、
open #1:"\\.\com10"
を実行しましたが、うまく動作しないようです。
EXTYPE7101 File not found ファイルI/Oエラー ファイルをopenできない
でプログラムが停止します。
Window Xp Home 付属のハイパーターミナルで通信先にCOM10を選択(接続の設定、接続方法をプルダウンし、comポートの一覧からcom10を選択)しての通信は成功していますので、OS自体が対応していないわけではないようです。
C言語などの情報を見ると、COM10以上の設定は"\\.\COM10"(C++だと"\\\\.\\COM10")としないと認識されない・・・との情報もあるようですが・・・
うまい接続方法が見つかりましたらご教授願えれば幸いです。

        └open#1:"\\.\com10" 白石和夫 2003/12/08 10:43:52  ツリーへ

Re: Ver.5.16改をupしていただき大変恐縮してお... 返事を書く
白石和夫 2003/12/08 10:43:52
open #1:"\\.\com10"
だとGetDefaultCommConfigが反応しないのでエラーになると思います。
OPEN #1:NAME "COM10"で試してください。COM10以上の場合,内部で\\.\を付加してCreateFileを呼びます。

         └感謝いたします。 若井田育夫 2003/12/08 13:29:42  ツリーへ

Re: open#1:"\\.\com10" 返事を書く
若井田育夫 2003/12/08 13:29:42
感謝いたします。
COM10以上の場合、内部で\\.\を付加してCreateFileを呼んでくれるところまで改良していただいているとは思っていませんでした。
ご指示の通り、
OPEN #1:NAME "COM10"(\\.\をつけない!)
のみでCOM10ポートが使用できるようになりました。さらに、私の環境で拡張したCOM14ポートまで全て使用可能であることを確認しました。これで現在使用予定のCOM12ポートまでのプログラムがエラー無しに動きます。ハード的に実装できるCOMポート数まで拡張できると思うと力強いものがあります。しかも、使用者がCOM10以上の使用に関して何の意識もせずに利用できることは、書式の一般性の意味でもすばらしいことです。
今後も十進BASICを取り入れて生きたいと思います。
感謝の言葉もありません。ありがとうございました。


インデックスへ EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。