松尾です。 > > 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)の記事を見てもらえればいいかな