C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: シリアル通信でのパリティチェック


(過去ログ 58 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■33422 / inTopicNo.1)  シリアル通信でのパリティチェック
  
□投稿者/ まこと (1回)-(2009/02/27(Fri) 18:38:12)

分類:[C#] 

開発環境:Vista , C# 2008

C#を使用したシリアル通信を受信したときのパリティエラーチェックの正しい手順を
教えて頂けませんか

ErrorReceived イベントで取得できますが
「PinChanged、DataReceived、および ErrorReceived の各イベントは、正しい順序で呼
び出されない場合があります」との説明もあります。

受信イベントの中で、バッファ内のデータが正常か異常か判定できればと思っていまし
たが…

DataReceivedのあとにErrorReceivedのイベントが発生した場合
受信イベント内のデータを処理を有効だと思って処理しても
その後でエラーのイベントが発生した場合困ります。

引用返信 編集キー/
■33425 / inTopicNo.2)  Re[1]: シリアル通信でのパリティチェック
□投稿者/ オショウ (101回)-(2009/02/27(Fri) 19:17:59)
> 受信イベントの中で、バッファ内のデータが正常か異常か判定できればと思っていまし
> たが…
>
> DataReceivedのあとにErrorReceivedのイベントが発生した場合
> 受信イベント内のデータを処理を有効だと思って処理しても
> その後でエラーのイベントが発生した場合困ります。

  ええ〜と・・・
  パリティーエラーが発生するようなノイズ環境なんですか?
  FA関係でばしばしシリアル通信していますが、パリティーエラーした
  場合、当然、ビットズレ起こして受信データもぐちゃぐちゃになります。

  ケーブリングがちゃんとノイズ対策してあり、電文にヘッダー・フッター
  やCRCチェックコードがあったりしますと、十分にそこでエラーチェック
  でき、異常データは読み捨てて、再通信させます。

  非常にまれにパリティービットのみ飛んでしまいデータ部は正常・・・
  と言うケースも当然ありますが、一体どの程度の確率なんでしょうか?

  そこまで気を使わないといけないならば、まず環境の改善をしないと、
  安全にシリアル通信できないと思うのですが・・・

● シリアル通信の相手は?

  またボーレートにも当然影響されます。
  エラーの頻度が高いならば、ボーレートを遅くする・・・
  と言う回避策もあります。

以上。参考まで
引用返信 編集キー/
■33449 / inTopicNo.3)  Re[2]: シリアル通信でのパリティチェック
□投稿者/ dogatana (41回)-(2009/02/28(Sat) 12:27:51)
No33425 (オショウ さん) に返信
>   パリティーエラーが発生するようなノイズ環境なんですか?
>   FA関係でばしばしシリアル通信していますが、パリティーエラーした
>   場合、当然、ビットズレ起こして受信データもぐちゃぐちゃになります。

まずはケーブル配線の確認、FG周りの対策からと思いますが、PCそのものが元々
ノイズに弱いですからね。

>   ケーブリングがちゃんとノイズ対策してあり、電文にヘッダー・フッター
>   やCRCチェックコードがあったりしますと、十分にそこでエラーチェック
>   でき、異常データは読み捨てて、再通信させます。

パリティエラーが出てもデータそのものは受信できるので、チェックサム、CRCが
存在するフォーマットであれば、そちらでチェックする方式が簡単ですね。

実験などで簡易的な通信プログラムを作るときは、データビット長だけ合わせといて
パリティは無視します。^^

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -