Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
シリアル通信 初心者
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=24889#CommentId65409
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
daive
 (社会人)
投稿日時
2015/8/14 13:49:17
簡単に書くと、こんな感じですが(ポーリング型)
各処理を、どの様に&どの様な、イベント処理とするか、ポーリング処理とするかで、
考え方が、変わる部分が発生します。
(vb.net timer 高精度)
VB.NETは、イベント駆動型ですので、ポーリング処理は出来るだけ避けて、
イベント、インターバルタイマーでの処理などを、考えます。
COM受信待ち(ポーリング的処理の場合)
① ↓
データ受信待ち(受信イベント待ち)
↓
1Byte目なら
タイムアウト値セット
↓
タイムアウトチェック(何処で、どの様にタイムアウトチェックするか)
必要に応じて規定bytes目チェック
必要に応じてSTX / ETX チェック、データ受信チェックで行っても良い。
必要に応じてEOT チェック、データ受信チェックで行っても良い。
↓
①へ
各チェック項目を、内部ステータスや、
デバッグ情報出力、画面表示としておくと、
解りやすい。
電文受信チェックメイン(ポーリング的処理の場合)
↓
データ受信チェック(受信完了チェック、電文チェック、BCCチェック、タイムアウトチェック等)
↓
OKなら、ACK送信
NGなら、NAK送信
↓
ACKであればの、処理、EOT受信処理
NAKであればの、処理、EOT受信処理
↓
受信処理終了
(イベント型に書き直すのは、どの様に、どうするか、⇒状態遷移、ステートマシーン)
タイムアウトであれば、
タイムアウト処理
NAKか、受捨てにするかどうかは、要件次第
パリティーエラー処理
NAKか、受捨てにするかどうかは、要件次第
オーバーフロー処理
NAKか、受捨てにするかどうかは、要件次第
端末機器側が、電源ON/OFF時に不正データを送信する機器かどうかの
確認が必要です。
検索ワード
通信 bcc 計算
通信 チェックサム 計算
bccの計算方法は、ネット検索した結果と異なる場合もあります。
基本的考え方は同じでも、実際の計算値は、現物合わせだったりします。
⇒EXCELなどで、検証ルーチンを作るのが簡単だったりします。
>伝送方式:調歩同期式
>伝送速度:9600bps
>伝送コード:ASCII
>データビット:8bit
>パリティチェック:なし
>ストップビット:1bit
との事ですから、1ビット当たり=1/9600秒でデータの送受信ができる事になります。
スタートビット:1ビット
データビット :8ビット
パリティビット:なし
ストップビット:1ビット
より、1キャラクタ当り、10ビット:10/9600秒で、1キャラクタの送受信が
可能という事になります。
1キャラクタ当り、1ms強
タイムアウト時間等は、この値を元に、最短通信間隔を加味して、決定します。
つまり、理屈上は、
100キャラクタ:100ms強で受信できるはずだが、
相手の都合もあるので、必ずしも、100ms強ではない。
という事です。
タイムアウト値は、可変設定にしておくか、設定ファイルとするのが普通。