問題タブ [communication]
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.
delphi - シリアル通信中にモデムがハングする
私はWavecomSupremeGSMモデムを持っています。モデムと通信し、受信したテキストメッセージを読み取る簡単なアプリケーションを作成しました。
私のアプリケーションは、メモリに格納されているメッセージの数に関する情報をモデムに照会し、その数が0より大きい場合は、メッセージを読み取ってモデムのメモリからメッセージを削除します。私はこの方法で数秒ごとにモデムに問い合わせます。
ただし、残念ながら、モデムは数分ごとにハングし、送信したATコマンドに応答しません。通信のロックを解除するために私が思いついた唯一の解決策は、シリアルポートを閉じて新しく開くことです。その後、数分間はすべて正常です。その後、モデムがハングしたときにシリアルポートを再度開く必要があります。
もちろんモデムのせいかもしれませんが、私がモデムと通信する方法は大丈夫かどうか疑問に思っています。
何よりもまず、非同期操作のためにモデムのシリアルポートを開きます。次に、DCB構造を次のように設定します。
そして、ATコマンドを送信して、モデムの応答を待つだけです。フロー制御は使用していません。私がすることはすべて、通信イベントを待ち、モデムが応答したときにシリアルポートのキューからデータを読み取り、いくつかのATコマンドの後に#13文字を書き込んで、モデムにメッセージを問い合わせます。
DCB構造を不適切に設定した可能性があると思います。ご覧のとおり、一部のフィールドは変更していません。シリアルポートに関する知識が十分でないため、RTSおよびDTR制御(有効/無効/ハンドシェイク/トグル)を設定する方法がわかりません。
このモデムの扱い方に明らかな間違いがあることに気づいたら、私が間違ったことを説明していただければ幸いです。一方、すべてが正常であれば、モデムがハングする理由がわかっているかもしれません。
前もって感謝します。
delphi - Delphi でシリアル ポートの設定を見つける
こんにちは、シリアル ポートのボー レートとその他の設定を見つける必要があります。Web で調べてみると、 GetCommConfigを使用する必要があるようです。これは、必要なデータであると想定する TCommConfig レコードを返します。問題は、私が書いた関数が間違った値を返すことです。
以下のコードは動作しているように見えますが、ボー レートは常に 1200 であり、Windows デバイス マネージャー (およびポート設定の変更) を見ると間違っています。
私はそれを次のように呼んでみました:
最初の 4 つは有効ですが 1200 を返し、5 番目は無効で 0 を返します
コードをステップ実行すると、最初の 4 つの行は常にResult := CommConfig;にヒットします。、そのため、GetCommConfig は有効なコードを返しているので、何か不足しているに違いありません。
dcb レコードの長さを設定するなど、他にもさまざまなことを試しましたが、1200 ボーという同じ結果になりました。
誰かが私がどこで間違っているのか知っていますか?
java - Java: サイト ユーザー間の効率的な通知が必要
Java バックエンド (Tomcat、Spring) を持つ 2 人のユーザー間で単純な ajax ゲームをしています。対戦相手がターンを行ったことを 1 人のユーザーに通知する良い方法が必要です。すべての通信はデータベースを介して行われ、対戦相手が自分のターンを終了するのを待つのは次のようになります。
どうにかして sleep() でこのループを取り除き、遅延なしで (ただしタイムアウト付きで) 即座に通知を受け取ることはできますか? おそらくいくつかのグローバルな静的変数を作成してそれを介して通信できますが、同様のループが必要になるだけで、タイムアウトが小さくなる可能性があります。
ターンが完了したら、メソッドを呼び出すことはできません。これは、すべて ajax を介してブラウザーにアクセスする必要があり、そこにデータをプッシュすることはできず、プルすることしかできないためです。なので、相手を待つプロセスが必要です。
軽量でシンプルなソリューションを探しています。
ありがとう。
sockets - ソケットは信頼できますか?
ソケットを使用して 2 つのサーバー間でデータを送信するのは良い考えですか、それとも MQ のようなものを使用してデータを移動する必要がありますか。
私の質問: ソケットは信頼できますか? 一度だけ/データの確実な配信が必要な場合は?
他の解決策はありますか?
ありがとう。
networking - 損失の多い一方向チャネルでデータをエンコードするためにどのような手法を使用できますか?
本質的に損失があり、一方向の通信チャネルがあると想像してください。つまり、たとえばランダムビットが切り替わる原因となる、除去できない固有のノイズがいくつかあります。また、これが1つの方法であると想像してください。再送信を要求することはできません。
ただし、データを送信する必要があります。そのチャネルを介して番号とテキストを送信するためにどのような手法を使用できますか?
ランダムなビットをいじっても、元の値に近い値として解釈できるように数値をエンコードすることは可能ですか(不可逆送信)?
文字列(ASCIIなど)をロスレス方式で送信する方法はありますか?
これはただの楽しみです。私はあなたがモールス信号または任意の非常に低い周波数のバイナリ通信を使用できることを知っています。エラーを検出して再試行するためのパリティビットとチェックサムについて知っています。アナログ信号を使った方がいいと思います。損失の多いチャネルを介してこのようなものを送信するための興味深いコンピュータ技術のテクニックがあるかどうか、私はただ興味があります。
c# - USB で接続された Win CE デバイスと通信する方法
ご挨拶。
USB (クレードル) で接続されたデスクトップ PC と Windows CE 5.0 デバイスの間で通信しようとしています。
それらの間の接続を確立する方法が見つからないため、明らかな何かが欠けているように感じます。どの名前空間を調べるか? 単純な通信が必要なだけです。接続し、データを交換し、切断します。ソケットで十分ですが、どのアドレスにアクセスすればよいですか? ハンドヘルドの USB 接続によって割り当てられたものは、デスクトップ マシンではアクセスできません。
通信はデスクトップ PC から開始する必要があります。私のハンドヘルドは、.NET Compact Framework 2.0 で Windows CE 5.0 を実行しています。
私を正しい方向に向けてください:)
.net - レイヤー間のn層アプリケーションの通信はどのように行う必要がありますか?
最近、私はn層アーキテクチャでチェーンの上位の通信を処理するための最良の方法について議論しています。
現在私が行っている方法は、エラーのレイヤー間で例外をスローして処理し、他の通信にイベント/デリゲートを使用することです(プログレスバーなどを更新するため)。これらは最良の方法ですか、それとも私が見落としていた、より良い実践と見なされる別の方法がありますか?
algorithm - Mythical Man Month の通信経路は本当に n^2 なのか?
より近いものではないでしょうか:
n * (n - 1) / 2
上記の式は、この中学校の数学チームの問題に対する答えです。
「部屋に n 人がいて、全員が他の人と握手しています。握手は何回行われましたか?」
これは、ソフトウェア プロジェクト内で通信する人の数にも当てはまりますか?
免責事項
私はその本を (まだ) 読んでいませんが、他のn^2
場所で参照されている公式を見たことがあります。
c# - C#アプリはどのようにしてネットワーク上でファイルを簡単に通信および転送できますか?
C#アプリは、同じネットワーク上にある別のコンピューターに存在するそれ自体のインスタンスと簡単に通信し、ファイルとデータを転送するにはどうすればよいですか?
ネットワーク上のコンピューターが固定ローカルIPアドレスを持ち、それぞれがお互いのIPを知っていると仮定します。IPが不明な場合に通信する方法もありますか?いくつかの発見プロトコルに基づいていますか?
Appleの「Bonjour」サービスは良いプロトコルだと聞きました。Windowsアプリから通信できますか?または、「ソケット」を使用する必要がありますか。私は主に、自分のニーズを簡単に満たすことができるライブラリまたはサンプルコードを探しています。独自のTCPベースのプロトコルやハードコアなものを開発したくありません。
c# - 通信プロトコルの単体テスト
RS-422 ポート経由で FPGA とシリアル通信するためのライブラリを開発しています。このライブラリは、より大きなプロジェクトの一部です。
メッセージの生成など、その一部をテストできることはわかっています。入力を設定すると、バイト配列が期待される配列と一致するかどうかをテストできます。しかし、より一般的なテストを作成したい場合は、どうすれば単体テストを生成できますか? FPGA 動作のシミュレーターを作成する必要がありますか? ライブラリを単独でテストすることは可能ですか?