問題タブ [flow-control]

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 に答える
4411 参照

serial-port - JSSC シリアル接続とそのフロー制御

Jssc ライブラリを使用してシリアル プリンターに長いテキストを送信する必要があります。数回後にフルバッファエラーが発生したので、フロー制御の設定である可能性があると考えました。小さい伝送ではすべてが機能するためです。プリンターは、XON/XOFF フロー制御構成または CTS/RTS ハードウェア信号を使用できます。

ソフトウェアフロー制御

ポートを開くための私のjsscコードは次のとおりです。

これは小さなテキスト出力でのみ機能し、出力が長い場合、プリンタはフル バッファ エラーをスローします。

ハードウェアフロー制御

また、プリンターを cts/rts フロー制御に切り替えて、コードを次のように変更しようとしています。

しかし、何も変わりません。長い出力のバッファ エラーが引き続き発生します。

プリンターがバッファーをいっぱいにする前に XOFF 文字または CTS 信号を正しく送信しているかどうかを COM モニターで確認すると、うまく動作します。

最後に、出力ストリームを手動で管理して、CTS シグナルがオフのときに (イベント ハンドラーを使用して) 停止しようとしました。

手動ハードウェア フロー制御テスト

これは私の手動ハードウェア フロー制御テストです。canSend boolean var を使用して出力ストリームを制御します。

フロー制御の設定が完全​​に無視されているようです。何ができますか?それはjsscエラーですか、Windowsドライバーエラーですか?

また、getFlowControlMode() でチェックしようとすると、ハードウェア フロー制御テストの値 3 が正しく取得されます。

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

python - じゃんけんフロー制御

次のじゃんけんのプログラムでは、ループに何か問題があります。セットの長さの入力を使用して、ゲームは各セットに対して N 回プレイされます。結果がプレイヤー 2、コンピューター 0 の場合。プレーヤー 0、コンピューター 2。プレーヤー 2、コンピューター 5。プレーヤー 0、コンピューター 4。追加のゲームがセットに追加されます。機能を何度も変更しましたが、何が問題なのかわかりません。

ご協力いただきありがとうございます

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

node.js - ノードでこれを行うにはどうすればよいですか?

タスクがあり、既に完了している場合はスキップする必要があり、完了していない場合は実行する必要があります。タスクは非同期です。この後、別のタスクに対して同じチェックを行う必要があり、場合によってはそれを実行する必要があります...

つまり、最初のタスクが完了したかどうかに関係なく、2 番目のタスクを実行する必要がありますが、最初のタスクが完了した場合、2 番目のタスクはそれが完了するまで実行できません。

私のコードはここでかなり繰り返されていますが、これは一般的に非常に悪いことです。ノードのヒップネスにはやむを得ないのでしょうか。ノードはヒップすぎて DRY になりませんか?

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

java - 一度に 2 つのスレッドを実行し、その後それらの間で通信する

同じマシン上で通信する送信側と受信側を使用して、ストップ アンド ウェイト ARQ を実装しようとしています。私の問題は、2 つのスレッドを同時に実行し、その後、2 つのスレッド間で通信することです (おそらく を使用しThread.notify()ます)。現時点では、フロー制御プロトコルを実装せずに、2 つのクラス内で 2 つの別々のメイン メソッドを実行すると、コードが機能します。ただし、別のメイン メソッドからコードを実行しようとすると、最初にレシーバー スレッドまたはセンダー スレッドしか実行できず、コードが無期限に待機します。私は一般的にスレッド化に慣れていないので、どんな助けも大歓迎です!

送信者クラス:

受信者クラス:

そして、両方をインスタンス化して実行するだけのメイン:

完全な画像を提供しようとしているだけで、膨大な量のコードをお詫びします

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

.net - IRC アプリケーションのチャット メッセージを表示する WPF ソリューション

IRC チャット プログラムである最初の WPF アプリケーションを作成しています。私はWPFが初めてなので、メッセージをどのように表示すればよいかわかりません。メッセージには太字、イタリック体の単語、さらには画像が含まれている可能性があるか、終了メッセージが単純なメッセージとは異なる色になっている可能性があるためです。

ネットで検索していて、いくつかの解決策を見つけました。ソリューションの最初のタイプは、RichTextBox を FlowDocument または単純な FlowDocument と共に使用し、何らかの方法でバインディング システムをハックしてプロパティの値を表示することです。「ハッキング」とは、つまり、これらのコントロールは DependencyObject ではないため、バインディング プロパティを持たないということです。(これが正しい表現かどうかはわかりません)。

単純な TextBlock では、文字列の値を表示するため、メッセージを表示できません。単純な文字列に多くのメッセージがあり、それに新しいメッセージを追加すると、文字列を変更できないため、大量のメモリ コピーが必要になります。さらに、TextBlock を使用する場合、そのコンテンツをマウスで選択してコピーできますか? 読み取り専用の TextBox を使用する場合、たとえば 1 つの単語だけにスタイリングを使用できますか?

そのため、ListView またはリスト (または任意のコレクション) のコンテンツを表示できるものを使用し、そのテンプレートを変更して各メッセージを正しく表示しようとしています。(そしてListViewの選択を何らかの形で無効にします)しかし、メッセージをスタイリッシュに表示して選択可能にするために、どのコントロールを使用すればよいかわかりません。

リストを使用してメッセージを保存するのはクールです。1,000 件までのメッセージが表示された後、最初の 100 件を削除してログ ファイルに保存したいからです。

したがって、この問題を解決する方法について完全に混乱しています。誰かがこの種の問題に対する適切な解決策を持っていることを願っています!

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

node.js - nodejsで軽快にどのように機能しますか?

nodejsでフロー制御に軽快に使用する方法を理解しようとしていますが、実際にどのように機能するかを理解するのに苦労しており、それを説明するドキュメントが実際にはありません(見つけることができます)

たとえば、ドキュメントから次のコードを取得します。

関数が取るコールバック引数を理解するのに苦労しています。実際に何がコールバックとして渡されますか? 次の機能は?その場合、2 番目 (および最後) の関数も callback() を実行するのはなぜですか? 実行する関数がこれ以上ない場合、これのポイントは何ですか? ありがとう!

私は自分の小さなテストを行い、コールバックを取り出しました:

コードは、コールバックを渡した場合と同じように機能するため、コールバック引数が何をするのか本当に理解できていないように感じます。

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

.net - シリアル通信時のフロー制御

USB->シリアル アダプター (Windows 7 64 ビット、VS2013、.Net Framework 3.5 SP1 をターゲット) を介して開発ボックスの外部デバイスと通信するアプリケーションを設計しました。また、Windows XP SP3 および .Net Framework 3.5 SP1 でネイティブ シリアル ポートを備えたテスト ボックスをセットアップしました。外部デバイスは 19200、N、8、1 で通信し、ハードウェア フロー制御をサポートします。デバイスでレポートを開始するときに、フロー制御を [なし] に設定し、DTR をオンまたはオフにするためのチェックボックスを手動で作成すると、DTR がオフになるとデバイスが一時停止するため、フロー制御が機能することはわかっています。

ただし、Windows デスクトップ アプリケーション (Handshake.RequestToSend) を介してハードウェア フロー制御を自動的に機能させるのに問題があります。ハンドシェイクをなしに設定したままにしておくと、通信は「通常」成功します。非常に大きなバッファを設定し、DataReceived ルーチンを可能な限り効率的にしたにもかかわらず、ネイティブ シリアル ポートを備えた低速のテスト ボックスでは、デバイスから大量のデータを要求すると、受信バッファがオーバーランしていると思われることがあります。ドライバー自体でさまざまなフロー制御設定を試しましたが、効果がありませんでした。アプリケーションでハンドシェイクを RequestToSend に設定すると、通信が停止しているように見え、デバイスが最初のステータス要求に応答しません。True/False と DtrEnable および RtsEnable のさまざまな組み合わせを試しましたが、役に立ちませんでした。私' 何時間もインターネットを検索しましたが、これまでに役立つものは何もありませんでした. これが私のコードの一部です:

Private Sub comVoteExt_DataReceived (ByVal sender As SerialPort, ByVal eArgs As SerialDataReceivedEventArgs) comVoteExt.DataReceived を処理します

サブ終了

ハンドシェイクの問題を引き起こしているように見えるものはありますか? ポートが開いて通信を開始したら、デバイスを「ウェイクアップ」する方法はありますか? ポートが開いた後に DTREnable を true に設定しようとしましたが、問題ではないようです。私はかなり困惑しています。