\r
トグルをに設定したにもかかわらず(以下の例を参照)、Telnetにコマンドの最後にCR()のみを送信させることはできません。対照的に、Telnetは常にCR-LF()を送信します。crlf
<CR><NUL>
\r\n
私の目標:RS-232ポートを介して携帯電話モデムに接続されているリモートデバイスからデータを取得することです。現在、私はTelnetを使用してデータ要求を送信しています。私はこれが可能であると信じるのに十分な理由があり、それを拡張して自動化できる必要があります。
要件:リモートデバイスにはCRでのみ終了するコマンドが必要です。
私の問題の理解:追加のLFはあなたのデバイスが私のコマンドを正しく読み取らないようです。より具体的に言えば、LFは各コマンドに残し、次のコマンドの先頭に追加されると思います。デバイスをリセットした後、最初にリモートデバイスにコマンドを実行したときに実際に正しい応答を受けたので、これを推論しました。しかし、その後のすべての応答は、デバイスがコマンドを理解していないことを示します。
詳細:Telnetを起動して16進値を返すように設定すると(読みやすくするためにプラスset netdata
記号set prettydump
)、CR(hex = 0d)とLF(hex = 0a)で終わる行が表示され、Telnetに要求することもあります。 CRとNULLで行を終了します。つまり、最後の文字は0aではなく00になると予想します。以下のコードスニペットを参照してください(ホストとポートを「x」に置き換えます)。注:「QD」はデバイスに現在の日付を報告するように要求するコマンドであり、「BADD」はコマンドがわからないときのデバイスの応答です。
$ telnet
telnet> toggle crlf
Will send carriage returns as telnet <CR><LF>.
telnet> toggle crlf
Will send carriage returns as telnet <CR><NUL>.
telnet> set netdata
Will print hexadecimal representation of network traffic.
telnet> set prettydump
Will print user readable output for "netdata".
telnet> open x.x.x.x xxxx
Trying x.x.x.x xxxx...
Connected to x.x.x.x.
Escape character is '^]'.
QD
> 0x0 51 44 0d 0a
< 0x0 42 41 44 44 0d 0a
BADD
テストされたプラットフォーム:Telnet、inetutils-telnet、およびPuTTYを使用するUbuntu 18.04.1、Cygwin、PuTTY、およびTeraTermを使用するWindows 10。
同様の投稿:Telnetで"\n"だけを送信する方法はありますか?- しかし、他の投稿の問題は正反対です。行末はLFだけで済みます。
問題の概要:Telnetが行の末尾にのみCRを送信するにはどうすればよいですか?