Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Recent Chamber Activity

2023-03-29
2023-03-28
2023-03-25
2023-03-22
2023-03-09
2023-03-07
2023-02-21
2023-02-11
2023-02-09

Recent Wiki Changes

2023-03-29
2023-01-13
2022-12-27
2022-12-20
2022-11-29
2022-11-11

Wiki Guide

Side Bar

Tera Term でシリアルポートに関するバグレポートが多くあり、根強く更新されているものもある

本当にバグがあるのか、デバイスドライバやケーブルや対向装置のせいで動かすことが不可能な指定をして「動かない」と言っているのかわからない

  • #27448 TerraTerm Crash
  • #32320 COM flow with control : missing data in log file
  • #39187 Hardware Flow Control
  • #39369 CH340Gでフロー制御効かない件への対応
  • #42103 HW Flow Control not working
  • #45271 Hardware Flow Control Does not work in Teraterm
  • forum_message:82938 RTS & CTS handshaking not working in Teraterm

動かないというのではないが、気になるticket

  • #36094 XON/XOFF hardcoded limits too high

シリアルに関する資料っぽい情報

  • #31573 シリアル接続 低速通信レート時
    • 「ドライバで対応している転送速度」というものがある。Tera Term では好きに速度を指定できるが、対応している速度でないと正しく動かない。
  • #10945 シリアル通信時のフロー制御不具合
    • BSOD が起きるのはたいていソフトのせいではなくドライバのせい
    • USB-Serail 変換チップのメーカー
      • FTDI
      • Prolific

手持ちの動作確認に使える機器

  • PC1(COMあり)
    • Windows 8.1
    • チップ: GD75232?
    • 受信バッファ 14バイト, 送信バッファ 16バイト
    • ドライバ serenum.sys, serial.sys
PS C:\Users\maya> Get-WmiObject Win32_SerialPort


__GENUS                     : 2
__CLASS                     : Win32_SerialPort
__SUPERCLASS                : CIM_SerialController
__DYNASTY                   : CIM_ManagedSystemElement
__RELPATH                   : Win32_SerialPort.DeviceID="COM1"
__PROPERTY_COUNT            : 47
__DERIVATION                : {CIM_SerialController, CIM_Controller, CIM_LogicalDevice, CIM_LogicalElement...}
__SERVER                    : TX100
__NAMESPACE                 : root\cimv2
__PATH                      : \\TX100\root\cimv2:Win32_SerialPort.DeviceID="COM1"
Availability                : 2
Binary                      : True
Capabilities                :
CapabilityDescriptions      :
Caption                     : 通信ポート (COM1)
ConfigManagerErrorCode      : 0
ConfigManagerUserConfig     : False
CreationClassName           : Win32_SerialPort
Description                 : 通信ポート
DeviceID                    : COM1
ErrorCleared                :
ErrorDescription            :
InstallDate                 :
LastErrorCode               :
MaxBaudRate                 : 115200
MaximumInputBufferSize      : 0
MaximumOutputBufferSize     : 0
MaxNumberControlled         :
Name                        : 通信ポート (COM1)
OSAutoDiscovered            : True
PNPDeviceID                 : ACPI\PNP0501\1
PowerManagementCapabilities : {1}
PowerManagementSupported    : False
ProtocolSupported           :
ProviderType                : RS232 Serial Port
SettableBaudRate            : True
SettableDataBits            : True
SettableFlowControl         : True
SettableParity              : True
SettableParityCheck         : True
SettableRLSD                : True
SettableStopBits            : True
Status                      : OK
StatusInfo                  : 3
Supports16BitMode           : False
SupportsDTRDSR              : True
SupportsElapsedTimeouts     : True
SupportsIntTimeouts         : True
SupportsParityCheck         : True
SupportsRLSD                : True
SupportsRTSCTS              : True
SupportsSpecialCharacters   : False
SupportsXOnXOff             : True
SupportsXOnXOffSet          : True
SystemCreationClassName     : Win32_ComputerSystem
SystemName                  : TX100
TimeOfLastReset             :
PSComputerName              : TX100
  • PC2 ThinkPad X61 + ウルトラベース X6(COMあり)
    • Windows XP
    • チップ: PC87392?
  • PC3(COMあり)
    • Windows XP
    • チップ: MAX3243?
  • PC4(COMなし)
    • Windows 10
  • PC5(COMなし)
    • Windows 11
  • PC6 DELL OptiPlex 790(COMあり)
    • Windows 10
    • 受信バッファ 14バイト, 送信バッファ 16バイト
    • ドライバ serenum.sys, serial.sys
PS C:\Users\maya> Get-WmiObject Win32_SerialPort


__GENUS                     : 2
__CLASS                     : Win32_SerialPort
__SUPERCLASS                : CIM_SerialController
__DYNASTY                   : CIM_ManagedSystemElement
__RELPATH                   : Win32_SerialPort.DeviceID="COM1"
__PROPERTY_COUNT            : 47
__DERIVATION                : {CIM_SerialController, CIM_Controller, CIM_LogicalDevice, CIM_LogicalElement...}
__SERVER                    : DESKTOP-JBKSIVJ
__NAMESPACE                 : root\cimv2
__PATH                      : \\DESKTOP-JBKSIVJ\root\cimv2:Win32_SerialPort.DeviceID="COM1"
Availability                : 2
Binary                      : True
Capabilities                :
CapabilityDescriptions      :
Caption                     : 通信ポート (COM1)
ConfigManagerErrorCode      : 0
ConfigManagerUserConfig     : False
CreationClassName           : Win32_SerialPort
Description                 : 通信ポート
DeviceID                    : COM1
ErrorCleared                :
ErrorDescription            :
InstallDate                 :
LastErrorCode               :
MaxBaudRate                 : 115200
MaximumInputBufferSize      : 0
MaximumOutputBufferSize     : 0
MaxNumberControlled         :
Name                        : 通信ポート (COM1)
OSAutoDiscovered            : True
PNPDeviceID                 : ACPI\PNP0501\1
PowerManagementCapabilities : {1}
PowerManagementSupported    : False
ProtocolSupported           :
ProviderType                : RS232 Serial Port
SettableBaudRate            : True
SettableDataBits            : True
SettableFlowControl         : True
SettableParity              : True
SettableParityCheck         : True
SettableRLSD                : True
SettableStopBits            : True
Status                      : OK
StatusInfo                  : 3
Supports16BitMode           : False
SupportsDTRDSR              : True
SupportsElapsedTimeouts     : True
SupportsIntTimeouts         : True
SupportsParityCheck         : True
SupportsRLSD                : True
SupportsRTSCTS              : True
SupportsSpecialCharacters   : False
SupportsXOnXOff             : True
SupportsXOnXOffSet          : True
SystemCreationClassName     : Win32_ComputerSystem
SystemName                  : DESKTOP-JBKSIVJ
TimeOfLastReset             :
PSComputerName              : DESKTOP-JBKSIVJ
  • PC7 DELL OptiPlex 7010(COMあり)
    • Windows XP
  • PC8 ThinkPad X200s (COMなし)
    • Windows 7
  • PC9 ThinkPad X201 (COMなし)
    • Windows 10
  • PC10 HP Pavilion dv6000(COMなし)
    • Windows Vista
  • USB-Serial 変換器 バッファロー BSUSRC06
    • チップ: FT232BM
    • 受信バッファ 4096バイト, 送信バッファ 4096バイト
    • ドライバ ftser2k.sys, serenum.sys, ftcserco.dll, ftserui2.dll
  • USB-Serial 変換器 ラトックシステム REX-USB60F
    • チップ: FT232BL
    • 受信バッファ 4096バイト, 送信バッファ 4096バイト
    • ドライバ ftser2k.sys, serenum.sys, ftcserco.dll, ftserui2.dll
    • マニュアル によると「フロー制御なし」「RTS/CTS」「DTR/DSR」「XON/XOFF」に対応
  • シリアルケーブル(ストレート)
    • 9ピンすべて結線
    • 他ピンへの結線なし
    • テスターで確認
  • シリアルリバースアダプタ / ELECOM AD-R9 D-Sub9ピンメス - D-Sub9ピンオス
    • 2-3, 3-2, 4-6, 5-5, 6-4, 7-8, 8-7, SHELL-SHELL 結線
    • 1 と 9 は結線なし
  • シリアルケーブル(クロス) / サンワサプライ KR-ECLK2
    • 2-3, 3-2, 4-6, 5-5, 6-4, 7-8, 8-7, フレーム-フレーム 結線
    • 1 と 9 は結線なし

#45271 テスト

  • 送信側は ttcomtester --device com1 --rts hs --verbose と起動する
  • 受信側は ttcomtester --device com1 --rts on --verbose と起動する
  • 送信と受信を入れ変えるときは引数を変えて ttcomtester を起動し直す
テスト
テスト1 (ttssh2-dev 545) PC1 PC4 + BSUSRC06 ストレートケーブル+変換器
テスト2 (ttssh2-dev 550) PC1 PC4 + REX-USB60F ストレートケーブル+変換器
テスト3 (ttssh2-dev 550) PC1 PC3 ストレートケーブル+変換器
テスト4 (ttssh2-dev 550) PC3 PC4 + REX-USB60F ストレートケーブル+変換器
テスト5 PC1 PC6 クロスケーブル
テスト6 PC6 PC3 クロスケーブル
テスト7 PC6 PC4 + REX-USB60F クロスケーブル

Tera Term 本体への修正

rev10551

https://osdn.net/projects/ttssh2/scm/svn/commits/10551

send mode → s (big data) → send mode ← s (big data) ←
テスト5 1:OK 0:OK 0->1:NG 1:16bytes 1<->0:N/A 1:OK 0:OK 0->1:NG 1:14bytes 1<->0:N/A
テスト7 1:OK 0:OK 0->1:NG 1:14bytes 1<->0:N/A 1:OK 0:※1 0->1:※2 1:4096bytes 1<->0:OK

※1 3文字まで送信側 "send xx, 1 byte", 4文字目から送信側 "send xx, 0 byte"

※2 r で 1 にすると3文字だけ表示される

  • s (big data) の送信がうまくいかない
  • send mode の 0->1 復旧で、0の間に押したキーのデータが表示されない
    • PC3 からの送信時に 3 文字だけ効いている

rev10557

https://osdn.net/projects/ttssh2/scm/svn/commits/10557

send mode → s (big data) → send mode ← s (big data) ←
テスト5 1:※1 0:※2 0->1:※3 1:OK 1<->0:OK 1:※4 0:※2 0->1:※3 1:OK 1<->0:OK
テスト7 1:※4 0:※2 0->1:※3 1:OK 1<->0:OK 1:※1 0:※5 0->1:※6 1:OK 1<->0:OK

※1 基本的に大丈夫だ("send size 1 (finish)" と表示される)が、連続して打っていると "writing.." と表示されるときがある。その時のキーは受信側に表示されない。

※2 0 にした1文字目は送信側に何も表示されない。2文字目から送信側に "writing.." と表示される。

※3 r で 1 にしても 0 の間のデータは表示されない。その後(1の状態で)送信しても送信側 "writing.." となり受信側に表示されない(l で見ると CTS は ON になっているのに)。送信側の close / open で復旧する。

※4 最初は大丈夫だが、しばらく打っていると "write() error 4317,0x10dd 識別操作子が無効です。" と表示され、その後キーを受け付けなくなる。アプリを落とすしかない。PC6 固有の問題?

※5 0 にした3文字目まで送信側に "send size 1 (finish)" と表示される。4文字目は送信側に何も表示されない。5文字目から送信側に "writing.." と表示される。

※6 r で 1 にすると 3 文字だけ表示される。その後(1の状態で)送信しても送信側 "writing.." となり受信側に表示されない(l で見ると CTS は ON になっているのに)。送信側の close / open で復旧する。

  • s (big data) の送信がうまくいくようになった
  • s (big data) の送信時には r でのコントロールが効いている
  • send mode の 0->1 復旧で、0の間に押したキーのデータが表示されない
    • PC3 からの送信時に 3 文字だけ効くが、そのほかはだめ

rev10562

https://osdn.net/projects/ttssh2/scm/svn/commits/10562

send mode → s (big data) → send mode ← s (big data) ←
テスト5 1:OK 0:OK 0->1:※1 1:OK 1<->0:OK 1:OK 0:OK 0->1:※1 1:OK 1<->0:OK
テスト7 1:OK 0:OK 0->1:※1 1:OK 1<->0:OK 1:OK 0:OK 0->1:※1 1:OK 1<->0:OK

※1 受信側が0の間に送信側で押したキーの結果は、受信側を1に復旧しても表示されない

  • send mode で送れるようになりました。
    連続して打って詰まった?ときの動作はこうなりました。受信側に、取りこぼされずに表示されています。
    send 31, sent 0 byte pending
    send size 1 (finish)
    send 32, sent 0 byte pending
    send size 1 (finish)
    send 33, sent 0 byte pending
    send size 1 (finish)
    send 34, sent 1 byte
    send 32, sent 0 byte pending
    send size 1 (finish)
    send 33, sent 0 byte pending
    send size 1 (finish)
    send 31, sent 0 byte pending
    send size 1 (finish)
    

rev10601

https://osdn.net/projects/ttssh2/scm/svn/commits/10601

test1, Tera Term <-> Tera Term

  • 送信側
    • Send File でバイナリでファイルを送信する
  • 受信側
    • バイナリログをとる
  • 設定
    • 115200bps , 8bit , none , 1bit , RTS/CTS , delay0,0
  • 結果
    • PC1 -> PC6 OK
    • PC1 <- PC6 OK

commits

branches/ttcomtester

trunk