dポイントプレゼントキャンペーン実施中!

VB2010で、シリアル通信をするには

シリアルポートをopenしようとすると、エラーで弾かれてしまいます。
どのように対処したら良いですか?

使っているソースコードは、下記の通り。

Private Sub ButtonRsStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonRsStart.Click
Try '例外処理のはじまり
If SerialPort1.IsOpen = True Then 'ポートはオープン済み
MessageBox.Show("すでに" & SerialPort1.PortName & "は接続されています。", "エラー",
MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
SerialPort1.PortName = "COM1" 'オープンするポート名を格納
SerialPort1.Open() 'ポートオープン
PORT_STATE.Text = "OPEN"
Catch ex As Exception '例外処理
MessageBox.Show(ex.Message, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try

End Sub
---------------

エラーが発生する場所は、「Catch 」になります。
エラーメッセージは、「ポート 'COM1' へのアクセスが拒否されました。」です。

何が原因なのか、さっぱり分かりません。
ヒントになりそうな解答を頂けないでしょうか?

A 回答 (2件)

> どのアプリが「COM1」を、使っているのか判る方法は在りますか?



私も知りませんが、デバイスマネージャでモデムのデバイスのプロパティを見て、COM1になっているかどうかですね。

私のマシンではモデムはCOM3になっていますが、設定の変更をすればCOM1にすることもできますので。

あるいはデバイスマネージャで通信関係らしきデバイスのプロパティを調べてみる位しか思いつきません。

ちなみに、私のマシンではデバイスマネージャで「ポート(COMとLPT)」を見ると、COM1もCOM3
も表示されません。
モデムを見るとCOM3になっています。

COM1を指定してプログラムを動かすと「ポート 'COM1' は存在しません。」と表示します。

COM3を指定すると正しくオープンできます。

COM3を他の通信ソフトでオープンしておいて、COM3を指定してプログラムを動かすと「ポート 'COM3' へのアクセスが拒否されました。」と表示します。

この結果から推測すると、xcode_15さんのマシンはCOM1を他のソフトが使用しているということになります。
    • good
    • 0
この回答へのお礼

ありがとうございます。


電源を立ち上げ直したら、オ-プンしました。
どうも、デバッグ中のアプリで弐重にオープンしていた可能性があります。
(推測ですが・・・)

お礼日時:2010/06/07 09:26

> If SerialPort1.IsOpen = True Then 'ポートはオープン済み



この行にブレークポイントを設定してから実行し、ボタンをクリックしてみてください。

この行が黄色に変わりますから、 F10キーを押して一行ずつ実行してみてください。

多分
> SerialPort1.Open() 'ポートオープン
この行でCatchに飛ぶと思います。

「COM1」は使用できるのでしょうか。

「ポート 'COM1' へのアクセスが拒否されました。」とのことですから、使用できないか使用中ではないでしょうか。

この回答への補足

ご回答を頂きまして、有り難う御座います。

ステップ実行を行っていました。
「COM1」は、別アプリが使っている訳でもないので、使えないというのも理解出来ません。

どのアプリが「COM1」を、使っているのか判る方法は在りますか?

補足日時:2010/06/05 22:34
    • good
    • 1

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