タグ付けされた質問 「serial-port」

古いPCで一般的に見られるハードウェアインターフェイス。通常は9ピンDE-9ソケット/プラグ、ネットワーキングデバイスまたはRJ-45ソケット/プラグ(その他の場合は一般的にイーサネットに使用)を備えたサーバー、または(はるかに広い) 25ピンDB-25ソケット/プラグ。このようなインターフェイスで使用される2つの一般的な標準は、RS-232またはRS-422です。

2
echoとcatを使用してシリアルループバックをテストする予期しない結果
したがって、TxからRxへのワイヤを実行するだけでループバックされる標準のRS232シリアルポートがあります。私は2つの別々のターミナルを実行echoしてループバックをテストしていますcat: cat /dev/ttyS1 echo "hi" > /dev/ttyS1 私の問題は出力にあります。catを実行している端末に「こんにちは」が戻ってくるのを期待しますが、代わりにこれを取得します。 hi [2 newlines] hi [4 newlines] hi [8 newlines] hi [16 newlines] hi [32 newlines] hi ...など、I ctrl+ までc cat。 catを中断した後、再度実行すると、エコーを2回実行するまで「hi」は出力されません。 これは正常ですか?この動作が見られる理由は何ですか? 編集:改行で、私はASCIIを意味します0x0A。この出力にはキャリッジリターンはありません。
17 cat  serial-port  echo 

6
Telnet送信Ctrl-C
telnetを使用して、トラフィックをRS-232ポートにプロキシするターミナルサーバーに接続します。 残念ながら、一部のデバイスを使用する場合、CTRL+ C文字(0x03)を送信することはできません。キャラクターを送信する代わりに、ローカルクライアントがキーストロークをキャッチしたように思われ、私は「some-other-mode」のままです。私が欲しかったのはキャラクターを送ることだけでした。 これをデバッグするために、私は遊んでいます: ^] toggle termdata そして ^] toggle options 動作しないターミナルサーバーでCTRL+ を押すと、次のようになりCます。 telnet 10.10.129.101 2012 Trying 10.10.129.101... Connected to termserv-val3 (10.10.129.101). Escape character is '^]'. ^] telnet> toggle options Will show option processing. ^] telnet> toggle termdata Will print hexadecimal representation of terminal traffic. SENT IAC IP SENT DO …


3
LinuxでATコマンドをモデムに送信する方法は?
Linux(Ubuntu)では、ATコマンドをでモデムに送信しようとしています/dev/ttyACM0。私はそれをやろうとしました: sudo socat - /dev/ttyACM0 しかし、何かを入力すると、このコマンドを繰り返す行が表示されます(私はを期待しますOK)。 私がする時 sudo minicom modem1 それは動作するようです。と入力してATを取得しOKます。がらくたを入力すると、が表示されERRORます。 と思われmodem1minicomのために何とかでモデムを使用するように設定されています/dev/ttyACM0。 socatを使用してATコマンドを送信するにはどうすればよいですか?何かを設定する必要がありますか?多分私modem1はミニコムの構成を使用できますか(私はこの構成を見つける/見る方法がわかりません)? 追加情報 指定されたsocatコマンドは正しいですか?私はいくつかのオプションで遊ぶべきですか?-vオプションを使用すると、次のようになります。 AT > 2013/10/23 17:10:28.917413 length=3 from=0 to=2 AT < 2013/10/23 17:10:28.921598 length=3 from=0 to=2 AT AT ksjdhfjdgfhjkdfh > 2013/10/23 17:10:30.244923 length=17 from=3 to=19 ksjdhfjdgfhjkdfh < 2013/10/23 17:10:30.251383 length=29 from=3 to=31 ksjdhfjdgfhjk\b \bd\b \bf\b \bh\b \b …

2
デバイスを開かずに、シリアルポートが実際にデータを送信しているかどうかを確認するにはどうすればよいですか?
シリアル回線と2つのイーサネットNICを介して接続された高可用性クラスター(Heartbeat)があります。切断されたシリアル回線を認識できる監視スクリプトをセットアップしたいと思います(基本的に同じ質問がSOで回答されましたが、そのような一般的な回答には満足していません)。 シリアルラインはハートビートによって開かれているため、シリアルデバイスを開いて自分でデータを読み取ることはできません。 だから私はいくつかの間接的な手がかりを探し始めました。これまでに見つけた唯一の違いは、の内容です/proc/tty/driver/serial。接続すると次のようになります。 # cat /proc/tty/driver/serial serinfo:1.0 driver revision: 0: uart:16550A port:000003F8 irq:4 tx:2722759 rx:2718165 brk:1 RTS|CTS|DTR|DSR|CD 切断された場合: # cat /proc/tty/driver/serial serinfo:1.0 driver revision: 0: uart:16550A port:000003F8 irq:4 tx:2725233 rx:2720703 brk:1 RTS|DTR / proc / tty / driver / serialの内容に関するドキュメントが見つからなかったため、行の最後にリストされている信号がケーブルの接続/切断の意味を持っていると判断する自信がありません。信号の存在は、特定の信号が「今」オンになっている(または最近過去にあったか?)シリアルHOWTOが存在する追加の信号ケーブルが接続されていることを述べている(CTSフロー制御信号、DSRは「私が通信する準備ができています」、CD「モデムは相互に接続」)「入力」の方向にすべてです。したがって、反対側で誰かが生きている必要があります。 信号の意味がシリアルHOWTOで説明されていると仮定すると、たとえばCD信号の存在に基づいて判断を下すことができます。しかし、私は本当にわかりません。 だから問題は:私の方法は「正しい」のですか、それとも私が知らないもっと良いオプションがありますか? 編集: 私はいくつかの追加の観察を行い、私の同僚と話をしました。回線の終端での信号の存在または不在は、両端でのシリアルポートアクティビティの非常に優れた指標であることがわかります。ただし、ケーブルの物理的な存在を示すものではありません。シリアルポートに書き込むプログラムがある場合は常に、発信信号が存在していました(RTS | DTR)。反対側が書き込み中のとき、着信信号が存在しました(CTS | DSR | CD)。どちらの側も通信しない場合、信号はまったくありません(ケーブルが存在しないことを必ずしも意味しません)。正確な信号はケーブルの配線に依存することを忘れないでください(「部分的なハンドシェイクを備えたヌルモデム」を使用しています)。

2
同一のUSBシリアルデバイスに既知のシンボリックリンクを割り当てるためのudevルール
私は2つの(そして将来的にはもっと多くの)USBシリアルデバイスを持っています(残念ながらシリアル番号まで)-それらは実際にはBTCマイナーです。現在、それらttyUSBXはXが0、1、または2となるようになっています。無関係なUSBシリアルデバイスも他にあるためです(ここで心配する必要はありません)。 ゼロが増分する整数の/devよう/dev/miner0に、内で予測可能な名前を割り当てるudevルールを書きたいと思います。どちらが最終的にどちらになるかは気にしませんが、変化しない予測可能な範囲内にある必要があります。 現在私はこれを持っています: SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="miner%n" 私が望むような名前になってしまうので、これはかなり近いです。唯一の問題は、鉱山労働者と3番目のデバイスがランダムな順序で表示されることがあるのでminer0、miner1とminer2、の2つになる可能性がありますが、(手動で見ることなく)どちらがどちらなのかわかりません。マイナー以外のUSBシリアルデバイスを追加すると(可能性があります)、問題が悪化します。 私が%e望んでいたとおりの参照を見つけましたが、もう存在していないようです。 これらのデバイスに予測可能な名前を付けるにはどうすればよいですか?できれば、USBバス上の場所にも接続しないようにしたいと思います。 詳細情報/背景 名前が何であるかを気にしているわけではありません。デバイスが別のUSBソケットに接続された場合でも、名前がわかっていて変わらないことだけに言及しておきましょう。私は単にudev全体を忘れてのエントリを使用します/dev/serial/by-idが、それらは同じシリアル番号を持っているため、そこには1つしかありません! また、これを行う理由は、マイニングソフトウェアに、プローブおよび検出するデバイスのリストを通知する必要があることです。私はそれをすべて行うことができます(基本的にはttyUSB*範囲内のすべての有効なマイナーを見つけるだけです)が、それは非マイナーデバイスを困らせます。それで、それらだけを使用するように構成できるように、事前にわかっているマイナーの名前が必要です。悲しいことに、それはワイルドカードを受け入れません(そのため、使用する/dev/miner*ように指示するだけでは問題外と思われます)。したがって、この問題です。

1
GNUスクリーンでLinuxシリアルポートログインを自動化するために、対話型シェルの前にキーストロークを送信する方法は?
シリアルポート経由で既知の固定ユーザー名とパスワードを使用して、Linux開発ボードにログインする必要がよくあります。 通常のコマンドは次のとおりです。 screen /dev/ttyS0 115200 そしてscreen、セッション内は次のようになります。 <enter> somehost login: root<enter> Password: root<enter> user@host# このログイン手順を自動化して、毎回ユーザー名とパスワードを入力する必要がないようにする方法は? expect必要に応じて使用することもできます。私はもう試した: expect -c "spawn screen /dev/ttyS${1:-0} ${2:-115200}; send "\r"; expect \"* login: \"; send \"root\"; expect \"Password: \"; send \"root\"; interact" しかし、私のexpectスキルはそれを完全にはカットせず、これはハングします。 また、ロゴを作成してすぐにログインすると、2回目はパスワードを要求せず、プロンプトに直接移動します。 user@host# そのため、スクリプトでもそれを考慮する必要があります。参照:https : //stackoverflow.com/questions/9464887/modify-expect-based-ssh-script-to-work-on-machines-that-dont-require-a-password SSHに関する同様の質問:https : //stackoverflow.com/questions/459182/using-expect-to-pass-a-password-to-ssh
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.