シリアル接続 低速通信レート時
workaround
ボーレートには直接数値を入力できるので、75 と入力して通信する
110bps を指定して 75bps で通信するのはおかしいが、手元に再現環境がないので原因がわからない。
もしかしたらBuildCommDCBの仕様が関係あるかもしれないが、1bit の幅がおかしいのなら関係ないかもしれない。
ボーレートとして110を指定すると、システムのmodeコマンドとの互換性を保つためストップビットが2に設定されます。
永田様 ご連絡ありがとうございます。 1ビット幅の時間はオシロスコープでの観測値で、スタートビット、データービットで確認をいたしました。 また受信側はアセンブラで記述したマイコンで、プロトコルは細かく変えてみましたが同様の結果となりました。 送信側のシリアル出力に USB - RS232c 変換器を使っていますので、この変換器に原因があるのかもしれません。 研究の範疇で実害はありませんので、気になさらないでください。 どうもありがとうございました。
None への返信
送信側のシリアル出力に USB - RS232c 変換器を使っていますので、この変換器に原因があるのかもしれません。
Tera Term側では指定された通信速度をそのままドライバに渡しているだけですので、 それで期待された通信速度にならないというのは、ドライバ/ハードウェア側の制限が考えられます。
USB-シリアル変換ケーブルでよく使われるProlificのPL2303シリーズのデータシートを漁ってみたのですが、 例えばPL2303EAでは75bpsには対応していますが、その上の速度は150bpsとなり、110bpsには対応していません。
このようなチップを使ったUSB-シリアル変換ケーブルの場合、110bpsに設定しても75bpsで通信する事が考えられます。
USB-シリアル変換ケーブルの対応通信速度に関しては、その変換ケーブルのメーカーに問い合わせてみて下さい。
場合によっては、ドライバを更新すれば使えるようになるかもしれません。
チップの仕様ソースはこのあたりでしょうか。ドライバによっては利用できる通信速度が違うかもしれませんね。
PL2303EA
http://prolificusa.com/files/DS_PL2303EA_d20120504.pdf
FT232RL
http://www.ftdichip.com/Drivers/VCP.htm ドライバ内の ftd2xx.h
110bps 7bit に設定して接続すると 1bit あたりのパルス幅が 13~14 m秒となり、75bps と等しい。
対向側を 75bps にすると正常に通信する。
2.3 でも発生