ポートが既に開いていたら – プログラミング – Home

ポートが既に開いていたら
 
通知
すべてクリア

[解決済] ポートが既に開いていたら


aiko
 aiko
(@aiko)
ゲスト
結合: 22年前
投稿: 5
Topic starter  

MSCommを使ってCOM1を開こうとした時に、他のプログラムによって開かれていた場合に、どの
ように対処すればいいのでしょうか?
MSComm1.PortOpen = Not MSComm1.PortOpen
とすればできるみたいな記事があったのですが、これだとプロパティでtrueかfalseかを判定し
ているだけなので、エラーになってしまいます。


引用未解決
トピックタグ
べーちゃん
 べーちゃん
(@べーちゃん)
ゲスト
結合: 23年前
投稿: 49
 

エラーハンドラをかけばいいのです。

>MSComm1.PortOpen = Not MSComm1.PortOpen
>とすればできるみたいな記事があったのですが、これだとプロパティでtrueか
>falseかを判定しているだけなので、エラーになってしまいます。

当然です。これは自分のプログラム内のみで有効な判定法で他のプログラムで
通信ポートを開いている場合は使えません。


返信引用
べーちゃん
 べーちゃん
(@べーちゃん)
ゲスト
結合: 23年前
投稿: 49
 

「使用上の注意」はお読みになられましたか。
ここで発言する方のルールですので、ご理解願います。


返信引用
aiko
 aiko
(@aiko)
ゲスト
結合: 22年前
投稿: 5
Topic starter  

べーちゃん、お返事ありがとうございます。

返事を急ぐあまり
マルチポストしてしまったことをお許しください。
Sub OpenTest()
Dim Res As Integer

On Error GoTo AlreadyOpen
MSComm1.PortOpen = True
Exit Sub

AlreadyOpen:
Res = MsgBox(既に開いてるぞ,vbOkOnly,エラー)
End Sub

これだと、他のエラー(ポート番号が違っているとか)も
すべて同じ処理をしてしまいますが、とりあえず解決しました。

> 当然です。


返信引用
べーちゃん
 べーちゃん
(@べーちゃん)
ゲスト
結合: 23年前
投稿: 49
 

既に解決なさっているようなのですが、ひとつだけ。

>AlreadyOpen:
> Res = MsgBox(既に開いてるぞ,vbOkOnly,エラー)
>End Sub
>
>これだと、他のエラー(ポート番号が違っているとか)も
>すべて同じ処理をしてしまいますが、とりあえず解決しました。

以下のようにコードを変更するとちゃんといくのでは

AlreadyOpen:
Select Case Err.Number
Case comPortOpen - だったと思う
Res = MsgBox(既に開いてるぞ,vbOkOnly,エラー)
Case comPortInvalid - だったと思う2
Res = MsgBox(ぽーとがちゃうで,vbOkOnly,エラー)
End Select
End Sub


返信引用
べーちゃん
 べーちゃん
(@べーちゃん)
ゲスト
結合: 23年前
投稿: 49
 

コードは一応VB6用です


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました