RS-232Cでのストップビットについて – プログラミング – Home

RS-232Cでのストップビットについ...
 
通知
すべてクリア

[解決済] RS-232Cでのストップビットについて


ロケットサラダ
 ロケットサラダ
(@ロケットサラダ)
ゲスト
結合: 18年前
投稿: 34
Topic starter  

VC++6.0 MFC です。

パソコンと制御機器で、RS-232Cを使った通信を行うプログラムを作っています。
その中で、ストップビットについて教えて下さい。

制御機器のストップビットの設定が ONESTOPBIT 
パソコンのストップビットの設定が TWOSTOPBITS

この条件でも通信が成功してしまいます。
  
ONESTOPBIT設定の制御機器が、TWOSTOPBITSの信号を受信しても、
タイムアウトなどを考えないと、調歩同期が取れそうな感じがするのですが。
  
TWOSTOPBITS設定のパソコンは、ONESTOPBITの信号では、エラーを出すのかな?
と考えているのですが、どうして成功するのでしょうか?
パソコンはそういう物なのでしょうか?
  
オシロスコープで波形を数えた所、ストップビットの設定はプログラム通りに
なっているようでした。

パソコン IBM Thinkpad
OS  winXP professionalです。

パソコン側の設定は、GetCommState、SetCommStateを使い、
DCB構造体の必要な箇所を修正しています。

 DCB dcb;

 GetCommState(m_hComm, &dcb);

 dcb.StopBits = ONESTOPBIT; //ストップビット 1

 //dcb.StopBits = TWOSTOPBITS; //ストップビット 2又は

 SetCommState(m_hComm, &dcb);


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

2-stopbitに設定すると、
送信: stopbitを2つ送る
受信: stopbitひとつで受信完了とみなす
ってことになってんじゃないすか。
テレタイプ時代の名残で、stopbitが短いと
受信側の打刻が間に合わなかったとかなんとか。


返信引用
ロケットサラダ
 ロケットサラダ
(@ロケットサラダ)
ゲスト
結合: 18年前
投稿: 34
Topic starter  

επιστημηさんありがとうございます。

何か変な感じがしますが、
通信は出来てしまうものなんですね。


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 22年前
投稿: 830
 

変な感じがするかも試練が 16550A のマニュアルにはそう明記されているからなー
ぐぐってみそ
ストップビット数2に設定した場合の挙動
送信側=ストップビット位置に2ビットを置く
受信側=最初のストップビットだけを数える

まあ 8250 の頃からの仕様だろうし (未確認) いまさら変わらんと思うよ


返信引用
ロケットサラダ
 ロケットサラダ
(@ロケットサラダ)
ゲスト
結合: 18年前
投稿: 34
Topic starter  

tetrapodさん詳しくありがとうございます。

16550Aのマニュアル探して読んでみます。

仕様ならしかたないですね。
納得しました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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