問題タブ [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.

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

iphone - iphone <-> 現実世界の接続

iPhoneとのシリアル通信を開始する方法についての指針はありますか? または、外部ハードウェアとやり取りするための他のアイデアはありますか?

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

serial-port - シリアル ポート通信を処理するための設計パターンはありますか?

コントロールパネルだけでなく、シリアルポートを介してハードウェアパラメータを変更できる新しい切削工具をいくつか使用しています。

ハードウェアのパラメータが変更されると、ハードウェアはそれ自体を再構成するのに数秒かかり、使用できる状態になったことを通知します。

これ以前のセットアップでは、オペレータがカット プレートまたはパーツ コマンドをクリックする必要がありました。ソフトウェアはダイアログを表示し、オペレーターがモーション関連 (速度、遅延など) を変更できるようにし、ハードウェアの構成を表示します。オペレーターがすべてを確認した後、[OK] をクリックすると、マシンが切断を開始します。

新しいハードウェアの場合、送信した変更がある場合は現在の構成を引き出し、ハードウェアの準備ができているかどうかを示すインジケーターと共に新しい構成を示すダイアログを表示します。すべてがシリアル ポート経由で自動化されているわけではないため、オペレータが [OK] をクリックするまでダイアログが表示されたままになることがあります。それ以外の場合は、ハードウェアが正しいことを通知したときに、それ自体をアンロードできます。

私の問題 (および質問) は、シリアル ポートを介してこれを行うと、非常に遅いことです。また、この種の作業を行ったのは初めてです。全体の応答性を高めるための解決策が欠けているのではないかと心配しています。サードパーティから切断ハードウェアを購入するため、シリアルの代わりに使用するオプションはありません。

私がやりたいもう 1 つのことは、ステータス ダイアログを表示し、シリアル通信がシステムの残りの部分を動かなくすることなく実行したままにするオプションを用意することです。

Win32 API または .NET に関するヒントを探しています。

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

c - Cプログラムでシリアル通信を行うには?

vc++ コンパイラを使用して、シリアル ポートにアクセスする方法。Bioscom() 関数は Turbo C で使用できます。

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

c# - シリアル通信のブロック チェック キャラクタ (BCC) を計算する

.NET の SerialPort クラスを介してシリアル経由でデバイスと通信しています。サードパーティのデバイス仕様要件に基づいて、「ブロック チェック文字」を計算する必要があります。私が聞いた唯一の情報は、これは排他的 OR 演算 (XOR)であり、すべての文字に対して実行する必要があるということです。

では、「Bob,001」という文字列がある場合、BCC はどのように計算するのでしょうか?

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

.net - 使用中のシリアル Com ポートをリッスンする

RS232 を使用して周辺機器と通信しているいくつかのレガシー システムを扱っています。私は COM インターフェースの経験があまりありません。COM ポートを開いて使用できるコードがいくつかありますが、他のアプリケーションで使用されているポートを開くことはできません。更新された通信に同じプロトコルを使用できるように、パケットをブラックボックス化する必要があります。

開いている COM ポートへの着信パケットを「仲介者」にして、どのパケットが送信されているかを検出する方法はありますか? 私は .NET を使用していますが、あらゆる種類のソリューションを受け入れることができます。

(私はこれを見つけましが、これは私にはうまくいかないと思います。)

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

windows-mobile - .NETCFSerialPortを読み取る偽のTimeoutException

編集:ハードウェアの問題でした.....重複したデバイスまたはケーブルを入手すると、問題が解決したようです。

こんにちは、私は.NETCFのシリアルポートから大量のデータ(〜1MB)を読み取ろうとして髪を引っ張っています。

GPSデータのダンプを読み取っていますが、m_serial.Read(..)の呼び出しでTimeoutExceptionをランダムに受信しています。

シリアルポートには間違いなくデータストリーミングがあります。ダンプには数分かかります。タイムアウトが発生したら、シリアルケーブルを別のコンピューターに接続するだけで、データが安定してストリーミングされるのを確認できます。

私はこれをいくつかの異なる方法(SerialPort.Read、SerialPort.ReadLine、SerialPort.ReadExisting)で実装しようとしましたが、それらはすべて短時間(ランダムな量)で読み取られ、TimeoutExceptionで失敗します。

どんな助けでも大歓迎です、ありがとう!確かに利用可能なデータがあり、38400ボーでストリーミングしているときにタイムアウトが発生するため、基本的に途方に暮れています。

アップデート:

コードはMotorolaSymbolデバイスでは正常に実行されますが、使用しているintermecデバイスでは正常に実行されないことがわかりました。可能性としてそれを排除するためにすべてのハードウェアを交換しましたが、それでも機能しません。

どちらのデバイスもWindowsMo​​bile5.0です

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

protocols - シリアルプロトコルでのエラー検出/訂正/回復

シリアル プロトコルを設計する必要があり、他の場所で検討したに違いないと思われるいくつかの質問に直面しています。

シリアル プロトコルを設計する際のベスト プラクティスについて、いくつかの推奨事項があるかどうか疑問に思っています。(簡単に検証できる事実を述べるか、主張する場合は信頼できる情報源を引用してください。 ) Web サイトや書籍に関する一般的な推奨事項も歓迎します。

特に、次のような問題に対処する必要があります

  • バイトストリームをパケットに解析する
  • パケットが正しいことを確認する (たとえば、CRC で簡単)
  • 発生する可能性のある適切な種類のエラーを特定する (たとえば、ポイント ツー ポイントのシリアル ストリームでは、散発的な単一ビット エラーと一連のバイトの欠落が発生する可能性が高いが、余分なファントム バイトが発生する可能性は低い; 一方、フラッシュ メモリに保存されたレコードの場合)またはディスクドライブでは、優勢なエラーのタイプが異なります)
  • エラーの修正または回復 (パケットでエラーを検出した場合、修正できますか? そうでない場合、次のパケットの境界に再同期できますか?)
  • 可変長パケットをエラー訂正/回復に対して堅牢にする方法。

助言がありますか?

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

serial-port - 「9 ビット」シリアル通信の API/OS サポート

Javaのjavax.commライブラリは「9ビット」シリアル通信をサポートしていますか? (フレーミング情報の帯域外シグナリング メカニズムとしてのパリティ ビットまたは「アドレス ビット」の使用)

win32 通信 API はそれをサポートしていますか?

どちらの点でも答えはノーだと思いますが、誰かが私よりもこれについて経験があると考えました。

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

.net - SerialPort 接続を開いたままにしておく必要がありますか?

シリアル通信を使用していますが、SerialPort を開いたままにしておくべきかどうか迷っています。

コマンドのキューを作成していますが、一度に実行できるのは 1 つだけです。SerialPort を作成し、各コマンドでそれを開いたり閉じたりする必要がありますか、それともポートを開いたままにし、コマンドから呼び出される別のクラスを用意する必要がありますか? それとも本当に重要ですか?

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

.net-3.5 - シリアルポートへの書き込み間に 250 ミリ秒の遅延を強制する方法は?

SerialPort クラスを使用して通信しているデバイス (デジタル インジケーター) があります。デバイスのドキュメントには、書き込みの間に 250 ミリ秒の遅延が必要であると記載されています。システムに余分な遅延を入れずにこれを強制する方法はありますか? これはおそらく、本当に小さなことを心配しすぎているように聞こえるかもしれませんが、これらの指標は 3 つあり、かなり頻繁に読み取っていますが、常にではありません。基本的に、250 ミリ秒以内に再送信しないように強制する良い方法はありますか?しかし、5 秒経過して送信しようとすると、理由もなくさらに 250 ミリ秒遅延したくありません。

考え?