問題タブ [usbserial]

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

windows-7 - 管理者権限なしで Windows に USB シリアル コンバータをインストールすることはできますか?

FT2232C USB シリアル コンバーターを使用してプログラムと通信するハードウェアがあります。デバイスが以前にコンピューターに接続されていて、ドライバーが管理者アカウントを使用してインストールされている場合、すべて正常に機能します。しかし、それは通常のケースではありません。

これらのデバイスは自由に取り付けたり取り外したりできます。また、特定のコンピューターに接続されるデバイスが常に同じであるとは限りません。また、ほとんどのユーザーは管理者権限を持たず、コンピューターは LAN に接続されていません。

これらのコンピュータにファイルを自動的にプッシュし、レジストリ エントリを追加することができます。

デバイス ドライバーが既にインストールされていると Windows に認識させる方法について、何かヒントを持っている人はいますか? 私は現在、ドライバー インストーラーが Windows のインストールに対して行ったすべての変更を追跡し、ユーザーの操作なしでこれらの変更を行う方法について考えています。しかし、おそらくもっと簡単な方法がありますか?

現在は Windows XP について話していますが、そう遠くない将来、Windows 7 (64 ビット) コンピューターもますます増えるでしょう。

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

android - controlTransferメソッドでパリティを設定する

AndroidのcontrolTransferでパリティを設定する方法を知っている人はいますか?

このメソッドのパラメーターの説明はどこにも見つかりません-参照のいくつかの一般的な情報だけです。

私が見つけた1つの例は言う:

しかし、パリティを変更する必要があります。誰かアイデアがありますか?

どうもありがとう!

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

macos - USB-to-Serial アダプタが機能しないのはなぜですか?

Mac のシステム情報で USB ハブに接続されていると認識されている USB-to-Serial アダプタがありますが、ターミナルで ls /dev を実行すると usbserial が表示されません。今朝まで動いていましたが、今は動いていません。USBスロットとロットを変更して、再起動を試みました。助言がありますか?

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

linux - どの USB-RS232 デバイスがどの tty にあるかを調べる方法は?

同じ USB-RS232 チップに基づく 2 つの異なる USB デバイスがあります。それらを USB に接続すると、それらは /dev/ttyUSB0...3 にマウントされます。

私の問題は、スクリプト内で、どれがどの tty にあるかを見つける方法です。

lsusb を使用すると、それらを区別できます。

dmesg を使用すると、それらがどこにマウントされているかがわかります。

しかし、「usb 4-1」は「Bus 004 Device 002」に対応していないようです。

「Bus 004 Device 001」は常に「USB ルート ハブ」であり、dmesg は 1 以降、lsusb は 2 以降と見なすことができますか?

または、デバイス ID を (スクリプト内で) マウント ポイントに関連付ける方法について別の提案がありますか?

Ubuntu 10.04 LTS を使用しています。

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

windows - Linux/Windows用カスタムプリンタードライバーの開発

設計した USB/シリアル デバイスをプリンタとして使用して、Linux/Windows での「印刷」アクションが、USB/シリアルポート。

その手順を教えてください。このプロジェクトをどこから始めて、どのように進めたらよいかわかりません。

Windows または Linux のオプションがあります。

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

android - Android の COM ポートからのデータの読み取り/書き込み

Android タブレットを COM ポート デバイスに接続し、それらにコマンドを送信する必要があります。

どうやら、USB-COMポートアダプタが必要です。どのタイプのアダプターが必要ですか? いくつかの要件?USB-COM ポート アダプタ経由でデバイスを接続する場合、どのように操作すればよいですか? 多分いくつかの例?

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

c - C でシリアル アダプタに書き込む

私はプロジェクトに取り組んでおり、シリアルポートに書き込む方法を理解しようとしています。私のラップトップにはシリアル ポートがないので、USB からシリアルへのアダプターを購入しました。ここで、C プログラムからシリアル ポートにデータを送信する必要がありますが、ポートのアドレス指定方法がわかりません。これがどのように行われるか誰にも分かりますか?

Windows 98 で作業していたときはoutportb()、パラレル ポートに対処していましたが、これは Windows 7 では機能しません。

(Windows7 64ビットを使用しています。)

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

c++ - ひどいシリアルポート/USBコード(C ++)-修正の提案?

私はシリアルI/Oの経験はあまりありませんが、元のプログラマーが会社を辞めたため、最近、いくつかの非常に欠陥のあるシリアルコードの修正を任されました。

このアプリケーションは、USB上で実行されている仮想COMMポートを介して科学機器とシリアルに通信するWindowsプログラムです。仮想COMMポートのUSBドライバーは、機器で使用するUSB​​チップを製造しているため、FTDIによって提供されます。

シリアルコードは、管理されていないC ++ DLLに含まれています。これは、古いC ++ソフトウェアと新しいC#/ .Net(WinForms)ソフトウェアの両方で共有されています。

2つの主な問題があります:

多くのXPシステムで失敗する

最初のコマンドが機器に送信されたとき、応答はありません。次のコマンドを発行すると、最初のコマンドから応答が返されます。

典型的な使用シナリオは次のとおりです(呼び出されるメソッドの完全なソースは以下に含まれています)。

障害が発生したシステムでは、ReadString呼び出しはシリアルデータを受信せず、タイムアウトします。ただし、別の別のコマンドを発行してReadStringを再度呼び出すと、新しいコマンドではなく、最初のコマンドからの応答が返されます。

ただし、これはWindows XPシステムの大規模なサブセットでのみ発生します。Windows7では発生しません。運が良ければ、XP開発マシンは正常に動作したため、ベータテストを開始するまで問題は発生しませんでした。ただし、XP開発マシンでXP VM(VirtualBox)を実行することで、問題を再現することもできます。また、この問題は、DLLを新しいC#バージョンで使用する場合にのみ発生します-古いC++アプリで正常に動作します。

これは、ClearCommErrorを呼び出す前に低レベルのBytesInQueメソッドにSleep(21)を追加したときに解決されたようですが、これは他の問題であるCPU使用率を悪化させました。21ミリ秒未満のスリープでは、障害モードが再び表示されます。

高いCPU使用率

シリアルI/Oを実行する場合、CPUの使用は過剰になります(多くの場合、90%を超えます)。これは、新しいC#アプリと古いC ++アプリの両方で発生しますが、新しいアプリではさらに悪化します。多くの場合、UIが非常に応答しなくなりますが、常にそうとは限りません。

これがPort.cppクラスのコードです。ひどい栄光です。長さは申し訳ありませんが、これは私が取り組んでいるものです。最も重要なメソッドは、おそらくOpenConnection、ReadString、ReadChar、およびBytesInQueです。

私のテストと読み取りに基づいて、このコードにはいくつかの疑わしいことがあります。

  1. COMMTIMEOUTSが設定されることはありません。MSのドキュメントには、「タイムアウト値の設定に失敗すると、予期しない結果が発生する可能性がある」と記載されています。しかし、これを設定してみましたが、役に立ちませんでした。

  2. 多くのメソッド(ReadStringなど)は、データをすぐに取得しない場合、タイトなループに入り、繰り返しの読み取りでポートをハンマーで叩きます。これは、CPU使用率が高いことを説明しているようです。

  3. 多くのメソッドには、GetTickCount()を使用した独自のタイムアウト処理があります。それがCOMMTIMEOUTSの目的ではありませんか?

  4. 新しいC#(WinForms)プログラムでは、これらのシリアルルーチンはすべて、MultiMediaTimerイベントからメインスレッドから直接呼び出されます。たぶん、別のスレッドで実行する必要がありますか?

  5. BytesInQueメソッドがボトルネックのようです。CPU使用率が高いときにデバッガーにアクセスすると、通常、プログラムが停止します。また、ClearCommErrorを呼び出す前にこのメソッドにSleep(21)を追加すると、XPの問題は解決するようですが、CPU使用率の問題が悪化します。

  6. コードは不必要に複雑に見えます。

私の質問

  1. これが少数のXPシステムのC#プログラムでのみ機能する理由を誰かが説明できますか?

  2. これを書き直す方法について何か提案はありますか?良いサンプルコードへのポインタは大歓迎です。

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

java - rxtxComm を使用した RS232 DB9 でのハンドシェイク ラインの処理

rxtxComm を使用して、Arduino (USB シリアル ポート) と通信 (データの送受信) を行いました。rxtxComm ライブラリを使用して DTR のようなハンドシェイク ラインを処理するにはどうすればよいですか? このチュートリアルまたはサンプル コードを教えてください。

  • 注:win7 OSを使用しています。今日 (2012 年 4 月 21 日)、USB シリアル (DB9) アダプターを購入しました。LEDアレイをrs232に直接接続することを計画しています...
0 投票する
5 に答える
19878 参照

c# - x64に接続されたUSBデバイスのVIDとPIDを使用してCOMポートを識別します

次のように、指定されたpidとvidによって32ビットwin7OSマシンに接続されたusb comポート名を取得できますが、x64で実行すると、次の行でスタックします。

これは私のコードです

実際のコードはここにあります。では、x64でcomポート名を取得する方法、何か提案はありますか?