Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
COMポートのハンドルについて
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=18632#CommentId50349
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
ザーボン
 (社会人)
投稿日時
2014/7/15 10:34:10
VBをちょっとかじった程度のレベルです。
エクセルのVisual Basic 6.0でWin32APIを用いてRS-232Cで通信するプログラムを作っています。
パソコンにシリアルポートがないのでUSB変換ケーブルで通信します。
CreateFile()でポートを開き、常時受信状態で待機し、1時間毎のデータを受信します。受信するとCloseHandle()でシリアルポートをクローズし表に書き込み、再びポートを開いて受信状態にを繰り返すプログラムです。24時間365日起動させたままです。
この状態で何かしらのエラーやESCを押すなどでプログラムが終了すると、ポートは開きっぱなしになってしまい、再び通信を開始してもCOMポートのハンドルが-1になり、ポートが開けなくなってしまいます。
こうなるとエクセルを立ち上げなおすか、USB変換ケーブルを抜き差ししないとポートが開けません。
ほとんど無知の状態からネットで調べてプログラムを完成させましたが、上記の不具合だけどうしていいかわかりません。
サブクラス化で応用すればOK!みたいなのがありましたが、もっと簡単にできないでしょうか?
今ポートを開いた際、ハンドル値を保持しておき、エラー等でプログラムが終了したら通信開始ボタンを押したタイミングで保持していたハンドル値でポートを閉じて、その後に上記プログラムが開始する様に考えていますがうまくいきません。
以上、説明が下手で申し訳ありませんがアドバイス頂けると助かります。よろしくお願いいたします。