問題タブ [termios]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
925 参照

linux - pty ファイル記述子の読み取りタイムアウトが失敗しました

PTY を表すファイル記述子に読み取りタイムアウトを設定しようとしています。VMIN = 0 と VTIME = 10 を termios に設定しました。これは、文字が利用可能になったときに返されるか、文字が利用できない場合は 1 秒後に返されることを期待しています。ただし、私のプログラムは読み取り呼び出しに永遠に留まります。

これを機能させない PTY の特別な点はありますか? これを機能させる他の TERMIOS 設定はありますか? stdin ファイル記述子でこれと同じ構成を試したところ、期待どおりに機能しました。

0 投票する
1 に答える
302 参照

c - 1回線のシリアル通信、エコーが間違っている

私は1回線のシリアル通信インターフェースを持っていますが、問題は01010101で送信し、受信するエコーが01010101の10回のうち8回ですが、10回のうち2回は01110101を受信することです。

コード例:

ポートの構成方法:

何が問題ですか?エコーが10回のうち2回混合される可能性はありますか?

0 投票する
0 に答える
272 参照

signals - カスタム コマンドライン インターフェイス内で ctrl-z を処理する方法は?

コマンドラインインターフェースを作ろうとしています。Ctrl+を処理したいZ。それはCtrl+Cをうまく処理します。今のところ、 + を処理する前に + を 2 回押す必要がありCtrlます。+を処理するコードは次のとおりです。ZCtrlZCtrlZ

なぜ 2 回ヒットしなければならないのかはわかっていますが、解決策がわかりません。resetTerminal() のコードは次のとおりです。

無効になる古い端末設定に戻ります。

Ctrl古い端末設定に戻って+Zを伝播し、プログラムを一時停止できるようにする方法がよくわかりません。

何か案は?ありがとう。

0 投票する
1 に答える
1173 参照

ruby - termios gem をインストールしようとすると、make エラーが発生する

ruby 1.9.3-p194 で OS X 10.7 に termios gem をインストールしようとしています。以前は問題なくインストールできましたが、1.9.3-p125 にインストールしようとしても、同じエラーが発生します。

https://gist.github.com/83a4ff80fa882dcd6937

どんな助けでも大歓迎です。

0 投票する
1 に答える
4673 参照

bash - 入力された文字が表示されないようにします(termiosで「echo」属性を無効にするなど)

入力から1文字を読み取るbashスクリプトを書いています。私はを使用してそうしread -n 1 -sます。-n 1単一の文字のみを読み取ることです。-sは「サイレント」モードで、入力した文字は表示されません。

問題は、現在実行されているコマンドが実行されていない場合read(bashスクリプトの他のコマンドが実行されている場合)、その文字が端末に表示されることです。

これは、ターミナルでのプログラムの通常の動作です。これを無効にするには、通常、たとえばtermiosライブラリを使用してエコーモードを無効にします。

どうすればbashスクリプトでこれを達成できますか?

私は純粋なbash/Unixコマンドのソリューションを好みます(python、perlなどの他のスクリプト言語は使用しません)。

0 投票する
1 に答える
939 参照

linux - ARM ボードからシリアル接続を介して GSM モジュールに書き込めません

卒業プロジェクトでは、組み込み Linux (Qtopia) を実行している ARM ボード (OK-6410) に GSM モジュール (ADH8066) を接続し、それと通信することになっています。

モジュールを最初に操作すると、「準備完了」メッセージが送信され、AT コマンドを介して通信できます。ハイパーターミナルを使用して正常に通信し、簡単な SMS を送信することができました。

問題は、ARM ボードから通信しようとすると発生します。

「準備完了」メッセージを受信することはできますが、応答がありません。

これまでに開発したコードは次のとおりです。

得られた応答は次のとおりです。

その後、ブロックしてアイドル状態のままになります。

「準備完了」メッセージをキャプチャできれば、それは「読み取り」が正常に機能していることを意味しませんか? 上に「書きました」と書いてあるのは、「書き込み」がうまくいっているということではないですか?では、なぜモジュールと通信できないのでしょうか?

ありがとう。

0 投票する
2 に答える
380 参照

c++ - termiosおよびuint8_tとのシリアル通信での符号拡張

write()Unixシステムコールを使用してバイトを書き込もうとしていますが、1で始まる8ビット値は32ビット値に変換されます。これを修正するtermiosフラグがあるかどうかを調べてみましたが、見つからないようです。

入力のサンプル:

BIN6:10111110 -------- HEX6:be -------- DEC6:190 -------- ASCII6 :?

BIN7:11101100 -------- HEX7:ec -------- DEC7:236 -------- ASCII7 :?

出力のサンプル:

BIN6:000000011111111111111111111111110111110 -------- HEX:FFFFFFBE -------- DEC:-66 -------- ASCII:¾

BIN7:000000011111111111111111111111111101100 -------- HEX:FFFFFFEC -------- DEC:-20

これを修正する方法はありますか?ありがとう!

0 投票する
1 に答える
1207 参照

c++ - エコーをオフにした後、入力文字を再度エコーする方法は?

端末のログイン画面でパスワードを非表示にするためのこのコードがあります。ログイン後、入力はすべて空白のままです。完了後にデフォルトに戻すなど、通常に設定するにはどうすればよいgetlineですか?

0 投票する
2 に答える
6069 参照

linux - TTY デバイスを設定するコマンドライン

現在の私の仕事は、QNX から Linux に 16550 互換チップのドライバを移植することです。このチップはいくつかの UART を提供し、それぞれが標準の 16550 シリアル ポートと見なされますが、いくつかの拡張機能があります。

現在、QNX では、デバイス ドライバー全体がスタンドアロンの実行可能ファイルにパックされています。これは、ドライバーとして、および提供された UART (ボー レート、ループバック モードなど) の初期コンフィギュレーターとして機能します。デバイス ドライバーがあるため、これは QNX では当然のことです。ユーザー空間で実行され、標準の実行可能ファイルにすぎません。

Linux の OTOH では、ドライバーはカーネル モジュールとして実装され、自由にロードできます。さらに、そのモジュールはプロデューサーによって提供されるため、あまり変更したりパッチを当てたりしたくありません。

私にとっての残りのタスクは、それらの UART のパラメーターを設定するためのメカニズムを提供することです。それらは /dev/ttyPREFIXX デバイスとして認識されます。私は、対象のシリアル ポートで標準の termios (つまり、tcsetattr() または ioctls) を呼び出す標準の C プログラム実行可能ファイルを介してそれを行うつもりです。

私のアプローチは正しいですか?はいの場合、永続的な構成を実現する方法は? 私が事実を認識しているように (この例から: http://www.easysw.com/~mike/serial/serial.htmlから)、termios 関数は OPEN デバイスで動作します。つまり、デバイスを開き、パラメーターを設定し、読み取りまたは書き込みを行ってから、ポートを閉じます。ポートを閉じた後、設定 (ボーレートなど) が失われますか? すでにハードウェアに保存されているため、そうでないことを願っています。

誰かが構成が永続的であることを確認できますか? そうでない場合、そのポートを再度開き、事前に確立されたパラメーターでそれを期待する将来のアプリケーションのために、その永続性を達成する方法は? そうでない場合は、モジュール カーネルを変更していくつかのパラメーターを受け入れ、ロード時に構成を行う必要がありますか?

私が現在意図しているアプローチは、ポートを開き、構成を設定し、ポートを閉じる C 実行可能ファイルを作成することです。後者のアプリケーションが目的の構成のポートを認識できることを願っています。

ありがとうございました。