問題タブ [serial-port]

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 投票する
4 に答える
112497 参照

serial-port - リバース エンジニアリングに適した無料のシリアル ポート モニターは何ですか?

シリアル プロトコルをリバース エンジニアリングしていて、悪いツールに不満を感じています。Windowsのシリアルポートとの間でデータを記録するための優れた無料のツールを知っている人はいますか?

要件:

  • 無料である必要があります
  • ポートを制御してはなりません (つまり、デバイスを開こうとするのではなく、ファイル API またはカーネルをフックする必要があります)。
  • 何らかのフィルタリング機能が必要です
  • 人間が読める形式またはバイナリ ログのいずれかを、できれば解析しやすい形式で書き込みます

何か案は?Portmon は機能しますが、そのログは扱いにくく、そのフィルターは事実上役に立ちません。私もいくつかの商用ツールを試しましたが、その法案に合うものはないようです。

0 投票する
4 に答える
11838 参照

c# - 非同期操作に.NET2.0シリアルポート.BaseStreamを正しく使用する方法

.NET2.0 SerialPortの.BaseStreamプロパティを使用して、非同期の読み取りと書き込み(BeginWrite / EndWrite、BeginRead / EndRead)を実行しようとしています。

私はこれである程度の成功を収めていますが、しばらくすると、(Process Explorerを使用して)アプリが使用しているハンドルが非常に徐々に増加し、場合によっては余分なスレッドが増加し、ハンドル数も増加することに気付きます。

コンテキストスイッチレートも、新しいスレッドが表示されるたびに増加します。

アプリは常に3バイトをPLCデバイスに送信し、その代わりに800バイト程度を取得し、57600のボーレートで送信します。

初期のCSwitchデルタ(これもProcess Explorerから)は約2500で、とにかく非常に高いようです。新しいスレッドが表示されるたびに、この値が増加し、それに応じてCPU負荷が増加します。

誰かが似たようなことをしてくれて、私を助けてくれることを願っています。あるいは、「神の名において、そのようにしないでください」とさえ言ってくれることを願っています。

以下のコードでは、「this._stream」はSerialPort.BaseStreamから取得され、CommsResponseはIAsyncresult状態オブジェクトとして使用するクラスです。

このコードは、シリアルポートを使用する代わりに作成するTCP接続に共通です(シリアルポートとTCPチャネルが派生したCommsChannel基本クラスがあります)。これらの問題はないので、かなり期待しています。 CommsResponseクラスには何の問題もありません。

ありがたいコメントをいただきました。

0 投票する
8 に答える
125432 参照

c# - C# で SerialPort ポート オブジェクトの dataReceived イベントを使用するにはどうすればよいですか?

COM10 に接続された外部センサーから受信したデータを収集する小さなアプリケーションを作成しようとしています。ポートを開き、for ループを使用して一定期間データをファイルにストリーミングする小さな C# コンソール オブジェクトとアプリケーションを正常に作成しました。

このアプリケーションを変換して、代わりに dataReceived イベントを使用してストリーミングしたいと考えています。Top 5 SerialPort Tipsを読んだ後でも、これを機能させることができず、何が欠けているのかわかりません。すべてのコードが Main にあるようにコンソール アプリケーションを書き直して、以下に貼り付けます。ハードウェアによってポートにデータが送信されていることがわかっているにもかかわらず、イベント ハンドラー port_OnReceiveDatazz が呼び出されない理由を教えてください。

ありがとう

@Gabe@Jason Down、および@abatishchevのすべての提案に感謝します。私は困惑しており、イベントハンドラーを機能させることができないようです。端末と関係があるのか​​もしれません。スレッドでポートを読み取り、データを直接ファイルにストリーミングするだけで済みます。


コード


0 投票する
3 に答える
25456 参照

python - pyserial によるバイナリデータ (python シリアルポート)

pyserial の serial.write() メソッドは、文字列データのみを送信するようです。[0xc0,0x04,0x00] のような配列があり、シリアル ポート経由で送受信できるようにしたいですか? raw I/O の別の方法はありますか?

配列を ['\xc0','\x04','\x00'] に変更する必要があるかもしれないと思いますが、それでも null 文字が問題を引き起こす可能性があります。

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

.net - COMポートにアクセスするための.NETライブラリ?

シリアル COM ポートでデータを送受信できるライブラリはありますか?

0 投票する
3 に答える
6849 参照

java - シリアル ポートからテキストを読み取るにはどうすればよいですか?

Java を介して Windows シリアル ポートからデータを読み取ろうとしています。私は javax.comm ライブラリを持っており、データを取得できますが、正しいデータは取得できません。ポートをバイト配列に読み取ってテキストに変換すると、一連の文字が表示されますが、実際のテキスト文字列は表示されません。バイト配列を「UTF-8」と「US-ASCII」の両方として指定しようとしました。これから実際のテキストを取得する方法を知っている人はいますか?

これが私のコードです:

最初の 3 行の出力では、コピー アンド ペーストができません (通常の文字ではないためだと思います)。Hex の出力は次のとおりです。

文字列形式で出力する Hollux GPS デバイスから読み取っています。私はC#でそれをやったので、これは確かに知っています。

私が通信に使用している設定は、C# アプリでの作業から正しいことがわかっています。 ボーレート: 9600 データビット: 8 ストップ ビット: 1 パリティ: なし

0 投票する
10 に答える
110845 参照

linux - Linux 環境でのシリアル ポート データの TCP/IP への変換

Linux システムのシリアル ポートからデータを取得し、それを TCP/IP に変換してサーバーに送信する必要があります。これは難しいですか?基本的なプログラミングの経験はありますが、Linux の経験はあまりありません。これを行うオープンソースアプリケーションはありますか?

0 投票する
5 に答える
13432 参照

.net - System.IO.Ports.SerialPort クラスを使用してシリアル ポートを開くときにエラーが発生しました

System.IO.Ports.SerialPort クラスを使用して、シリアル ポートを開いて読み取ろうとしています。シリアル ポートをツール ウィンドウ (Visual Studio 2008) から Windows フォーム アプリケーションにドラッグしました。

実行時にシリアル ポートのプロパティを簡単に変更できるように、プロパティ グリッドをセットアップしました。ポートを開こうとすると、次のエラーが表示されます。ハイパーターミナルを使用してポートを開いて読み取ることができるため、理由がわかりません。

何か案は?

これは USB 接続なので、実際には仮想シリアル ポートであることに注意してください。

私の設定は次のとおりです。

BaudRate = 9600
DataBits = 8
DiscardNull = false
DtrEnable = false
Handshake = None
Parity = None
ParityReplace = 63
PortName = COM3
ReadBufferSize = 4096
ReadTimeout = -1
ReceivedBytes = 1
TrsEnable = False
StopBits = One
WriteBufferSize = 2048
WriteTimeout = -1

SysinternalsからPortMonをダウンロードしました。2 つのログをキャプチャしました。1 つ目はHyperTerminalがポートを開いたときに発生するログで、2 つ目は .NET SerialPort クラスがポートを開こうとしたときに発生するログです。

ハイパーターミナル:

.NET シリアルポート: