問題タブ [serial-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.
c# - C# シリアル通信 - 受信データが失われる
コレクター配列が追加ではなく上書きされているため、C# アプリケーションで受信したデータが失われています。
この例pUartData_c
では、新しいデータを受信するたびに上書きされます。一部のシステムでは、データが十分に迅速に受信されるため、これは問題になりません。ただし、他のシステムでは、受信バッファ内のデータは完全ではありません。pUartData_c
受信したデータを上書きするのではなく、に追加するにはどうすればよいですか。Microsoft Visual C# 2008 Express Edition を使用しています。ありがとう。
c# - C#アプリケーションで送信されないシリアルデータ
シリアル(COM1)データが送信されないことがあるように見えるC#アプリケーションがあります。以下は私のコードの簡略化されたスニペットです(textBox書き込みの呼び出しは削除されました):
奇妙なことに、ポートが115.2Kbpsに設定されている場合、この同じコードが問題なく機能します。ただし、9600bpsで実行している場合、このコードで送信する必要のあるデータは送信されないようです。リモートデバイスの受信フラグを監視して、これを確認しました。tryステートメント内から例外はスローされません。データが確実に送信されるようにするために他にすべきこと(フラッシュなど)はありますか?あなたが持っているかもしれないどんな考えや提案もいただければ幸いです。Microsoft Visual C#2008ExpressEditionを使用しています。ありがとう。
avr - USARTを使用してavratmega32をシフトレジスタに接続しますか?
TXDピンを介してUSARTを使用してATMEGA32マイクロコントローラーをシフトレジスタに接続したいのですが、シフトレジスタは受信したデータに対してシリアルからパラレルへの変換を実行します。ただし、ご存知のように、シフトレジスタにはクロッキングが必要です。このクロッキングは、XCKピンを介してボーレート周波数でマイクロコントローラを介して供給されます(ここでは、USARTはマスター同期クロックジェネレータとして機能します)。私の問題は、XCKからこれらのクロック信号を取り出す方法がわからないことです。
ありがとう
c# - C#で複数のシリアルポートをリッスンする方法
私はNoahCoadによるC#でシリアルCOMを使用しています。マシンには、COM1、COM2、COM6、COM7、COM8、COM9、COM10、COM11、COM12、COM13のポートがあり、COM6、COM7、COM8を使用しています。 、COM9、COM10、COM11、COM12とZyXELOmni56Kモデム。私はこれらの7つのポートを7つのモデムで使用しています。
これらのモデムで答えを得るためのクライアントがあります。私はmscomm.ocxを使用してCOMポートをリッスンします。アプリケーションは正常に実行されていますが、1つのモデムが50〜100の要求と応答を処理している場合、動作を停止し、クライアントがサーバーから応答を取得しないためにタイムアウトになります(COMポートモデムを使用)。最初に「RING」を取得し、次に「CONNECT 1200 / V.22b 2400 / NONE」を取得し、次にクライアントの元のパッケージを取得し、このパッケージを処理してクライアントへの回答を生成します。
1つのEXEファイルを使用すると同時に処理されないため、COMポートを開いてリッスンするために7つのEXEファイルを使用します。スレッドを使用する必要があることはわかっていますが、方法がわかりません。
どうすれば7つのCOMポートを同時にリッスンし、問題なく作業を行うことができますか?常にアプリケーションが正しく機能し、すべてのクライアントに同時に返信したいと思っています。これは私のコードです:
java - RXTXを使用したJavaシリアルポート接続の同期
シリアルポートで特定の形式のメッセージを継続的にリッスンするJavaプログラムがあります。送信者アプリケーションがメッセージを送信していない場合、次の形式でハートビートメッセージを送信します。
- バイト1:1
- バイト2:0xFE
- バイト3:0xED
- バイト4-255:0
受信者アプリケーションが送信者の前に開始された場合、すべてが正しく機能しますが、送信者がハートビートをスローしている場合、受信者が開始されると、ハートビートメッセージの途中でリッスンを開始することはほぼ確実です(これは問題です)各メッセージがリードソロモン符号化されているため、255バイトのチャンクで読み取ったためです)。単純なステートマシンである同期関数を作成しました。次の条件で一度に1バイトを読み取ります。
1:を読んだだけの場合は、NEW_MESSAGE状態に切り替えます。
0xFEを読み取ったばかりの場合:POTENTIAL_HEARTBEAT状態に切り替えます。
0xEDを読んだばかりの場合:HEARTBEAT状態に切り替えます
これらの状態が順不同で到達できないことを確認するために関連するチェックが行われ、HEARTBEAT状態に達したら、残りの252 0を読み取り、レシーバーが同期されていると想定します。これまでのテストでは、同期を効果的にトリガーするために正しいバイトが送信されたにもかかわらず、このシンクロナイザーは正しく機能していませんでした。私の質問はこれです:私は自分の方法がまったく好きではないので、シリアル通信を同期するためのより良い方法はありますか?
common-lisp - common lisp でのシリアルポート通信
Windows 上の Common Lisp にシリアルポート通信用のライブラリはありますか?
c# - 2 つのスレッド内でのシリアル接続状態へのアクセス
現在参照されているオブジェクトのステータスをチェックする別のスレッドを設定しようとしています。
メインスレッドは、プログラムを実行し、シリアル接続の状態も処理します。
2 番目のスレッドは、バッファからのコマンドの送受信を継続するために、接続状態にアクセスする必要があります。
これは可能ですか?
c - シリアル通信を使用してPCを介して複数のロボットを制御するにはどうすればよいですか?
ラップトップを使用して複数のロボットを制御したい。ロボットには知能がなく、センサー値を計算して結果をロボットに送り返すPCにセンサー値を送信します(PCを使用したロボットの集中制御)。
ロボットは、Zigbeemuduleを使用したシリアル通信を介してPCと通信しています。
問題:{sen1、sen2、sen3 ..、robot id}のような(ロボットからの)構造を作成して送信する方法。ここで、sen1、sen2 ..はセンサー値であり、robotidは特定のロボットを認識します。編集後.....センサーの送信に使用していたコードは次のようになりました。
センサー値を1つずつ送信します
PC側で、バッファ内のこれらの値を読み取ります
これは、ロボットが1つしかない場合は正常に機能していましたが、現在は複数のロボットがあり、各ロボットが上記の機能を使用してデータを送信しているため、PC側のすべてのロボットのセンサー値が混在しています。一つの解決策は、私が上で述べた構造を作り、それをPCに送ることです。これが私が聞きたいことです。「このような構造を作成して送信する方法」以前は質問を正しくフレーミングできなかったことをお詫びします。
ありがとう...
ftp - 使用するシリアルファイル転送プロトコルは何ですか?
シリアル回線で使用するためのwitchファイル転送プロトコルに関する入力を探しています。最大200Mbサイズのファイルをシリアル回線(RS232)を介して双方向に転送できるようにしたいのですが、get / putを開始できる必要があるのは1台のマシンだけです(マスタースレーブを考えてください)。
プロトコルも次のようにする必要があります。
- クライアントとサーバーの両方を自分で作成する必要があるため、実装が簡単/簡単(限定された組み込みハードウェア)
- かなり堅牢、障害チェック/リカバリなど
- 他のハードウェアに実装するためにサードパーティを入手する必要がある場合に備えて、少なくともある程度標準化されています
カーミット?TFTP?最も簡単な自家醸造?どう思いますか?
winapi - Win32 API:ReadFileがタイムアウトしない
ハードウェアとインターフェースするためのコードを書いています。ハードウェアは、デバイス内のUSB-シリアルコンバーターを備えたUSB経由でPCに接続します(WindowsではCOMポートデバイスとして表示されます)。
Win32APIReadFileシステムコールに問題があります。宣伝どおりに機能させることができないようです。COMMTIMEOUTS構造を次のように設定しました。
Win32 APIのドキュメントによると、次のように述べています。
ReadIntervalTimeout
通信回線に2バイトが到着するまでに経過できる最大時間(ミリ秒単位)。ReadFile操作中、期間は最初のバイトが受信されたときに始まります。2バイトの到着間隔がこの量を超えると、ReadFile操作が完了し、バッファリングされたデータが返されます。ゼロの値は、インターバルタイムアウトが使用されていないことを示します。
MAXDWORDの値は、 ReadTotalTimeoutConstantメンバーと ReadTotalTimeoutMultiplierメンバーの両方のゼロ値と組み合わされ て、バイトが受信されていない場合でも、読み取り操作がすでに受信されたバイトをすぐに返すことを指定します。
私が送信しているコマンドは、1バイトの整数を返すことになっています。ほとんどの場合、コマンドはデバイスによって受信され、適切な値を返します。ただし、場合によっては、値を返さないように見え、さらにバイトが受信されるまで(たとえば、デバイスのボタンを押すことによって)ReadFile()がブロックされます。ボタンが押されると、私が期待していた最初の整数応答がボタン押下コードとともに受信されます。これは、デバイス自体に期待する動作ではありませんが、MSDNのドキュメントによると、本来あるべきではないときにReadFile()がブロックされることに関心があります。ここでReadFile()をブロックするための救済策はありますか?