[ttssh2-dev 589] Re: ticket #45271 / Serial Hard Flow

Back to archive index
matsuo zmats****@gmail*****
2023年 2月 8日 (水) 23:09:25 JST


松尾です。

 >  > ticket の人は協力的そうなので、snapshot を上げて確認をお願いしてみては
 >  > どうでしょうか?
 >
 > お願いしてみました。文面をそのまま使わせていただきました。

返信がありました。

https://osdn.net/projects/ttssh2/ticket/45271#comment:1412:45271:1675785572

Tera Termからの送信ではなく、
受信でフロー制御が効いてないということではないか?
と思いいたりました。

以下、思いついたり調べたりした元情報へのリンクなどです。
こんな考えがある、などご意見いただけないでしょうか。
よろしくお願いします。

---

仮定
- 受信側がTera Term, Hyperterminalが動作しているPC側
- 受信プログラム(Tera Termなど)によって、受信データがdropしている
   - フロー制御ができていないの内容は、PC(Tera 
Term)側で受信データがdropすること

情報からの予想
- ロジアナの信号名はTera Term, Hyperterminalが動作しているPC側
   - 
https://ftp.halifax.rwth-aachen.de/osdn/ticket/g/t/tt/ttssh2/45271/11570/logic.png
- RTS(PCからみてOUT)が0を出力
   - ロジアナの0/1が何か判断できないが、フロー制御(送らないでを出力)中?
   - RTS にトリガをかけて見てほしい
     - CTS の立下りトリガを設定している?
- 送信側(DCE)が送信byteごとにCTS(PCから見てIN)を制御している
   - 不思議?
   - 思ったフロー制御じゃない?
     - https://lipoyang.hatenablog.com/entry/20130530/p1 (これ?)
     - https://en.m.wikipedia.org/wiki/RS-232#RTS,_CTS,_and_RTR

マザーボードの予想
- マザーボードのシリアルがだめ(USB系はok)
   - 16550(A) 互換かな
     - https://ja.m.wikipedia.org/wiki/16550_UART
     - https://en.wikipedia.org/wiki/16550_UART#The_16550_FIFO
   - CH340G や CP2102 はok
     - USB経由だし受信バッファが大きい目(128 Byte~)なのでdropしないのか
- 16550 だとすると
   - 57600bpsでマザーボードのチップは安定受信できるのか?
     - Hyperterminalができているならできるのか?

対策
- OS内のシリアル受信バッファを大きくすればよし?
   - 現在のバッファサイズ
     #define CommInQueSize 8192
     #define CommOutQueSize 2048
     SetupComm(cv->ComID,CommInQueSize,CommOutQueSize);
     - 
https://learn.microsoft.com/ja-jp/windows/win32/api/winbase/nf-winbase-setupcomm
   - 60*1024ぐらいの受信バッファサイズにしたもので試してもらう
   - 多分フロー制御は行われていない
     - OS(ドライバ)の領域
     - 
Hyperterminalなどは受信バッファサイズが大きく設定している(or効率よく受信)?
- TeraTermの思っているフロー制御と違う制御のDCEが通信相手?
   - 上記のRTS,CTSのWikipedia(en)の記事を見てもらえればいいかな



ttssh2-dev メーリングリストの案内
Back to archive index