- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:RS-232Cにおける制御についての質問です。)
RS-232Cにおける制御とは?
このQ&Aのポイント
- RS-232Cにおける制御についての質問です。プラグミング初心者の方がDelphiでRS-232Cの制御を行おうとしており、方法がわからず困っています。
- RS-232Cでは、通信ポート設定やパケット仕様に応じてコマンド、リプライ、イベント、データの4種類のパケットが使用されます。
- 具体的なコマンドとして、'Connect'は回線を確立し、'Set Data Output Interval'はデータの出力間隔を設定するものです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Delphi は未経験なので、VB6およびVB.NETの場合で説明します。 ※以下の説明は、あくまで私の流儀です。 ※通信パケットが不定期に装置からPCに送られる場合を想定してます。 ※データ受信に関して説明します。 ◎RS232C受信用のクラス (1) 先ず、受信バッファにデータが入るまでループして待ちます。 (CPU負荷を減らすためにSleepを入れること) (2) 長時間データがこない場合は、タイムアウトとして仮バッファをクリア。 (3) 受信バッファにデータが在れば、1バイト読込んで仮バッファに追加する。 (フラグを使って“#”~“\r”の間だけ追加するようにすることも可能) (4) 仮バッファに追加したデータが“\r”以外なら(1)に戻る。 (仮バッファに追加する前にチェックして“\r”を含めないようにすることも可能) (5) 仮バッファを本バッファにコピーする。 (6) 仮バッファをクリアする。 (7) パケット受信のイベントを発生させる。 ◎パケット判定用のクラス (1) RS232C受信用クラスがパケット受信イベントを発行するのを待つ。 (2) RS232C受信用クラスの本バッファを取得して、仮パケットに入れる。 (3) 仮パケットの1文字目が“#”以外なら不正データなので仮パケットをクリア。 (4) 仮パケットの2文字目から4文字取り出し、数値に変換する。 (VBの場合なら取り出した文字列の頭に“&H”を付けてVal()関数で数値変換) (5) 数値によりパケットの種類を判定する。 (もし装置へのコマンドによって送られるパケット種類が決まるなら、動作モードを表す変数で対処する) 以上、ここまで。
お礼
ありがとうございました。参考にさせていただきます。