アプリ版:「スタンプのみでお礼する」機能のリリースについて

VC++でRS232C(COMポート)通信をするソフトを作成していますが、COMポートが開けず通信ができません。ポートが開けない理由を追跡する方法はありますか?

A 回答 (6件)

> この段階ではまだCOMポートに何かしらの電気信号は出ないのでしょうか?



オープンに失敗している以上出ないはずです.
(他のアプリケーションが使用していなければ.)

端末ソフトでオープンすることはできましたか?


> 外付けCOMポート

ということは USB 接続とか,PCMCIA カードとかですか?
それだと内蔵ポートと少し事情が異なるかもしれないので,
まず内蔵ポートがオープンできるか確認してください.

(RS-232C ではありませんが,以前 USB 接続の仮想 COM ポートを使った時,
 どの USB コネクタに挿すかでポート番号が変わったことがありました.)

この回答への補足

>ということは USB 接続とか,PCMCIA カードとかですか?
はい。Interface社のCSIシリーズを使っています。

端末ソフトはただいま試しております。内蔵ポートと異なるところがあるかは、メーカにも聞いて見ます。

アクセスが拒否されるということは、具体的にどういうことなのでしょうか、教えていただけますか?たとえば「他のソフトがそのポートを使用しているため拒否されている」なら、他にCOMポートを使うソフトが立ち上げてなければ拒否されないような・・・という風に考えてしまうのですが・・・。

補足日時:2007/03/06 21:11
    • good
    • 0

> 他にCOMポートを使うソフトが立ち上げてなければ拒否されないような・・・


> という風に考えてしまうのですが・・・。

そのはずなのですが….


> Interface社のCSIシリーズを使っています。

↓これですか? 参考のために型番を教えていただけますか?
http://www.interface.co.jp/catalog/selection/com …

この回答への補足

ありがとうございます。
形式は、CSI-466120です。
強制的にポートを開かせる、または閉じさせる方法があればよいのですが・・・。

補足日時:2007/03/07 12:20
    • good
    • 0
この回答へのお礼

ありがとうございます。とりあえず1Byte通信できるようになりました。

お礼日時:2007/03/15 18:24

> アクセスが拒否されました



・そのポートを他のアプリケーションが使用していませんか?
 端末ソフト (ハイパーターミナルなど) を使って,
 そのポートを開けるかどうか確認してください.

・CreateFile() の引数はどうなってますか? ソースを示してください.
 使用例↓
  hComm = CreateFile(devName, GENERIC_READ | GENERIC_WRITE, 0, NULL,
            OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

この回答への補足

ありがとうございます。
引数は下記の通りです。
この段階ではまだCOMポートに何かしらの電気信号は出ないのでしょうか?

hComm = CreateFile(g.sp.comNo,GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);

補足日時:2007/03/06 19:54
    • good
    • 0

> GetLastError()で調べたら、「指定されたファイルが見つかりません。

」でした。

ファイル名 (ポート番号) は正しく設定していますか?
正しいポート番号がわからなければ,ファイル名として
"COM1",…,"COM9" を順番に試してみてください.(笑)

この回答への補足

回答ありがとうございました。
外付けCOMポートのドライバを更新してみたら、「指定された・・・」は出なくなりました。
しかし今度は「アクセスが拒否されました」と出てしまいました。
これの原因、回避策はありませんか?

補足日時:2007/03/06 18:21
    • good
    • 0

> 原因や対策などのノウハウがあるページなども紹介いただけると助かります。



┌これに書いたリンク先が参考になるのでは?

QNo.2614807:Win32でシリアル通信
http://okwave.jp/qa2614807.html

あと,FormatMessage() を簡単に使えるようにしたエラーメッセージ取得関数は↓こちら.
Windows のエラーメッセージ文字列を取得する.
http://www5d.biglobe.ne.jp/~noocyte/Programming/ …

この回答への補足

GetLastError()で調べたら、「指定されたファイルが見つかりません。」でした。しかし、物理的につながっていて認識もされているポートが開けないのが解せないのですが、対策などありましたら教えてください。

補足日時:2007/03/06 11:28
    • good
    • 0

CreateFile() でエラーになってるんでしょうか?


そうであれば,その直後に GetLastError() でエラー番号を取得して,
FormatMessage() でそれをエラーメッセージに変換して表示させてみれば
原因がつかめると思います.

この回答への補足

早速の回答ありがとうございます。
原因や対策などのノウハウがあるページなども紹介いただけると助かります。

補足日時:2007/03/05 22:17
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!