問題タブ [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 投票する
1 に答える
11118 参照

android - Android USB ホスト通信

Android 3.2 の USB ホスト機能を利用するプロジェクトに取り組んでいます。私は USB/シリアル通信全般に関する知識と才能の嘆かわしい不足に苦しんでいます。また、何をする必要があるかについての良いサンプルコードも見つかりません。

USB 通信デバイスから読み取る必要があります。
例: Putty 経由で (PC 上で) 接続する場合、次のように入力します。

そして、デバイスは私のためにデータを吐き出し始めます。ピッチ/ロール/温度/チェックサム。

元:

Android デバイスから最初の「GO」コマンドを送信すると、「GO」のエコーが受信されます。

その後の読み取りでは他に何もありません。

方法: 1) 「go」コマンドを送信します。2) 結果として生じるデータのストリームを読み込みます。

私が使用している USB デバイスには、次のインターフェイス (エンドポイント) があります。

デバイス クラス: 通信デバイス (0x2)

インターフェース:

インターフェイス #0 クラス: 通信デバイス (0x2) エンドポイント #0 方向: インバウンド (0x80) タイプ: 割り込み (0x3) ポーリング間隔: 255 最大パケット サイズ: 32 属性: 000000011

インターフェイス #1 クラス: 通信デバイス クラス (CDC) (0xa) エンドポイント #0 アドレス: 129 番号: 1 方向: インバウンド (0x80) タイプ: バルク (0x2) ポーリング間隔 (0) 最大パケット サイズ: 32 属性: 000000010

エンドポイント #1 アドレス: 2 番号: 2 方向: アウトバウンド (0x0) タイプ: バルク (0x2) ポーリング間隔 (0) 最大パケット サイズ: 32 属性: 000000010

アクセス許可を処理し、デバイスに接続し、正しいインターフェイスを見つけて、エンドポイントを割り当てることができます。最初のコマンドを送信して後続のデータを読み取るために使用する手法を理解するのに苦労しています。bulkTransfer と controlTransfer のさまざまな組み合わせを試してみましたが、うまくいきませんでした。

ありがとう。

以下に示すように、interface#1 を使用しています。

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

serial-port - rxtxを使用してWindowsでシリアルポート通信をテストする方法は?

シリアルポートに接続するためにJavaでRXTXを使用しています。しかし今、私は通信が正しく機能しているかどうかをテストする必要がありますか?これを行う方法。モデムが必要ですか、それともモデムなしでローカルでテストできますか。

これは私がテストしたいプログラムですhttp://rxtx.qbang.org/wiki/index.php/Two_way_communcation_with_the_serial_port

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

c# - C#でシリアルメッセージを再構築する

私はC#とシリアル通信の世界に不慣れです。いくつかのチュートリアルを読んだ後、私はなんとかコミュニケーションを機能させることができました。私はここで別の同様の質問をしましたが、正しい質問をしたとは思いません。最後の質問で与えられたアドバイスに従い、コードを少し変更して、マイクロコントローラーから次のようなシリアルメッセージを送信するようにしました。

SxxxxxxxxxxxxxxxxxxxxxxxxE

xは、さまざまな数値、プラス記号とマイナス記号、およびコンマを表します。私が送信する文字列は常に同じ長さで、常にSで始まり、Eで終わります(これが悪い場合は変更できます)。私が抱えている問題は、シリアルラインを読み込もうとすると、一度にメッセージの一部しか表示されないため、次のようになります。

この情報をマイクロコントローラーから継続的に送信していますが、特定の時間にのみアクセスしたいので、メッセージのすべての部分を受信し、それを元に戻してから返す関数を作成しようとしています。働き。問題は、現時点ではそれをどのように行うのかわからないということです。

どんな助けでも大歓迎です!

これは私が遊んでいるコードです:

以前はメッセージの終わりを「*」にしていました

ここで例をたどってみたところ、これが私が得たものです。 受信したシリアルメッセージ

これは私が送信しているものです(パテを使用してチェックします) ここに画像の説明を入力してください

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

c# - シリアル ポート デバイス、コマンド、応答、および C#

私は修士論文を書いており、シリアルポートデバイス通信のプログラミングに固執しています。

私は光音響スキャナーを書いています。熱画像を作成できるアプリケーション。

私は USB デバイスを使用して急勾配のモーターを制御し、National Instruments デバイスを使用して信号を取得しています。

私のアプリケーションは、2 つのステッピング モーターを制御しています (制御する必要があります)。

これらのモーターを制御するためにビルドされた USB コントローラーがあります。これはシステムで COM デバイスとして表示されます。ハイパーターミナルと簡単なアプリで制御できるので、通信は問題ありません。

デバイスとアプリケーション間の双方向通信の構築に問題があります。

次のように文字列をデバイスに送信しています。

serial.Write("CAL\r");- これにより、デバイスが調整されます。ただし、「CAL OK」または「BUSY」という 2 つの応答を返すことができます。つまり、キャリブレーションは OK であるか、デバイスが現在別の処理を行っています。

シリアル ポートで DataRecived イベントをリッスンしてから、string.equals を実行できます。

私のアプリケーションはモーターを制御し、応答を待つ必要があります。

簡単なシナリオでは:

  1. アプリケーションを開始
  2. 入力を使用して、スキャンされるサンプルのサイズを入力します。
  3. 輪郭ボタンを押します - アプリケーションが開始され、最初にモーターが左上隅に移動し、次に右上、右下、左下に移動します。(簡単なコマンドを送信することはできますが、1 つを送信し、応答を待ってから、別のコマンドを送信し、GUI の 4 つ目のボタンを有効にする方法は?)
  4. 領域が正しく定義されている場合は、[次へ] をクリックしてスキャンを開始します。
  5. モーターがポイント 1,1 に移動し (そのように呼びましょう)、信号の取得が開始されます。
  6. 収集されたデータが処理され、ポイント 1,2 に移動します
  7. 領域全体が完了し、ユーザーはスキャンが完了したというメッセージを受け取ります。

そのシリアル ポート通信を開始する方法がわかりません。その双方向通信を実装する方法。

COMポートを開き、コマンドを送信し、受信したデータごとに発生するイベントを持つ単純なクラス(シングルトン)があります。

私のクラスでスタックを作成し、その上ですべてのコマンドを送信してから、ループでそれらを取得してデバイスに送信することは良い解決策でしょうか?

しかし、脅威でそれをどのように処理するのでしょうか? 脅威がスリープしてから、すべてのコマンドが処理されているかどうかを確認します。処理されていない場合は、再び脅威がスリープしますか?

アドバイスをいただければ幸いです。

これを編集して、アプリケーションの外観/動作方法を示しています

私は、TabControl を持つ単純なアプリケーションを持っています (アプリケーションのタブを非表示にする変更されたバージョンで、デザイン モードでのみ表示されます)。

最初のタブには、いくつかのテキストと情報 (主に統計) があります。2 番目は取得を許可します。

ユーザーが最初のタブ「取得に移動」のボタンをクリックすると、そのタブが表示されますが、すべてのボタンが無効になっています。

「キャリブレーションを開く」ダイアログをクリックする必要があります。次に、そのダイアログでデバイスを較正し、すべての取得パラメータを入力します (そのダイアログで、測定するサンプルの 4 つのコーナーにモーターを移動する輪郭を実行するオプションがあります)。キャリブレーションが完了したら、そのダイアログを閉じると、すべてのコントロールがメイン フォームでアクティブになります。これで、「取得開始」ボタンをクリックできるようになりました。その後、より急勾配のモーターが特定の位置に移動し (ポイントごとに計算されます)、そのポイントのデータが取得され、処理され、ファイルに保存され、画像ボックスにピクセルとして表示されます。次に、モーターが別のポイントに移動し、プロセスがサンプルの終わりまで繰り返されます。基本的には、正方形のサンプルをスキャンし、レーザーを特定のポイントに移動し、データを収集して、そこから熱画像を作成します。これは、ピクセルごとに画像を作成するようなものです。

図またはスクリーンショットを使用して、私のアイデアを説明しようとします。

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

android - Android Bluetoothを使用してシリアル通信を実装するにはどうすればよいですか?

AndroidドキュメントのBluetoothChatコードを確認しました。しかし、理解するのはとても難しいようです。これにも基づいたチュートリアルは見つかりませんでした。

Bluetoothデバイスに文字列を送信したい。アプリケーションはデバイスをスキャンし、選択したデバイスに接続して文字列を渡す必要があります。

助けてください.. :(

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

iphone - iPhoneで/dev/tty.iapへのアクセスが拒否されました

元のiPhone(ios 3.1.3を使用)をジェイルブレイクしてロックを解除し、/ dev / tty.iapを開いて、作成したデバイスと通信し、シリアルポート経由で文字を送信しようとしました(ピン12および13)。

しかし、/ dev / tty.iapを開こうとすると、「アクセスが拒否されました」というエラーが表示されます。

そのため、Cdyiaを介してiPhoneにOpenSSHをインストールし、iPhoneにsshをインストールしました。コマンドライン(ルートとして)を介してtty.iapを開いて読み取ることはできますが、アプリケーションを介して行うことはできません。だから私は/dev/tty.iap(そして狂ったように/ dev /フォルダー全体!)のパーミッションを偶数で変更しましchmod 777 tty.iapchmod -R 777 /dev/

しかし、次のようにそのファイルを開こうとすると、「Permissiondenied」エラーが発生します(プログラミングにxcode 4.2.1を使用しています)。

適切な許可を得るために他に何ができますか?

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

c# - 1 つのポートで複数のデバイスとの C# シリアル通信

私は C# で作業を始めたばかりで、現在 RS-485 を使用して他のデバイスと通信していますが、他のデバイスを実際に応答させることができないようです。すべてCOMポート4経由で接続されているため、シリアル通信を使用して特定のデバイスに書き込む方法があるかどうか疑問に思っていました.私はすでにserial.Write();を知っています. しかし、私の知る限り、送信先のアドレスを選択するオプションはありません。この質問の答えを知っている人はいますか?

よろしくお願いします

回答ありがとうございます。彼らは大いに役立ちました:)

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

java - RXTX 双方向シリアル通信は、最初の実行後にデータを送信しません

RXTX Web サイトから既に作成された例を編集しました。私はJavaとシリアル通信プログラミングも初めてです。

アプリは一度完全に実行されます。PIC からバッファを読み取り、入力した番号を送信します。LED が点灯し、PIC は同じバッファを送り返し、番号を要求します。しかし、入力すると、LED がオフになり、何も点灯せず、番号を求めるメッセージが再び表示されます。

ハイパーターミナルと完全に連携するため、マイクロ コントローラのソフトに問題はありません。

コードは以下のとおりです。

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

java - アプリケーションがシリアル ポート経由で何も送信しない

RXTX Web サイトの例に基づいて、GUI を使用して次のアプリケーションを作成しました。唯一の問題は、実際にはシリアル デバイスに何も送信していないことです。Swing GUI に関連する自動生成コードは一切含めていません。

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

bluetooth - Arduinoシリアル割り込み

私はArduinoMega2560プロジェクトに取り組んでいます。Windows 7 PCでは、Arduino1.0IDEを使用しています。ボーレート115200のシリアルBluetooth通信を確立する必要があります。RXでデータが利用可能になったときに割り込みを受信する必要があります。私が見たすべてのコードは、Arduinoのループ内にSerial.availableの条件を配置する「ポーリング」を使用しています。割り込みとそのサービスルーチンのArduinoのループでこのアプローチをどのように置き換えることができますか?attachInterrupt()はこの目的を提供していないようです。Arduinoをスリープモードから復帰させるために割り込みに依存しています。

ピン13に接続されたLEDをオンにすることになっているこの単純なコードを開発しました。

問題は、サブルーチンが提供されないことです。