問題タブ [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.
windows-7 - 管理者権限なしで Windows に USB シリアル コンバータをインストールすることはできますか?
FT2232C USB シリアル コンバーターを使用してプログラムと通信するハードウェアがあります。デバイスが以前にコンピューターに接続されていて、ドライバーが管理者アカウントを使用してインストールされている場合、すべて正常に機能します。しかし、それは通常のケースではありません。
これらのデバイスは自由に取り付けたり取り外したりできます。また、特定のコンピューターに接続されるデバイスが常に同じであるとは限りません。また、ほとんどのユーザーは管理者権限を持たず、コンピューターは LAN に接続されていません。
これらのコンピュータにファイルを自動的にプッシュし、レジストリ エントリを追加することができます。
デバイス ドライバーが既にインストールされていると Windows に認識させる方法について、何かヒントを持っている人はいますか? 私は現在、ドライバー インストーラーが Windows のインストールに対して行ったすべての変更を追跡し、ユーザーの操作なしでこれらの変更を行う方法について考えています。しかし、おそらくもっと簡単な方法がありますか?
現在は Windows XP について話していますが、そう遠くない将来、Windows 7 (64 ビット) コンピューターもますます増えるでしょう。
android - controlTransferメソッドでパリティを設定する
AndroidのcontrolTransferでパリティを設定する方法を知っている人はいますか?
このメソッドのパラメーターの説明はどこにも見つかりません-参照のいくつかの一般的な情報だけです。
私が見つけた1つの例は言う:
しかし、パリティを変更する必要があります。誰かアイデアがありますか?
どうもありがとう!
macos - USB-to-Serial アダプタが機能しないのはなぜですか?
Mac のシステム情報で USB ハブに接続されていると認識されている USB-to-Serial アダプタがありますが、ターミナルで ls /dev を実行すると usbserial が表示されません。今朝まで動いていましたが、今は動いていません。USBスロットとロットを変更して、再起動を試みました。助言がありますか?
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 を使用しています。
windows - Linux/Windows用カスタムプリンタードライバーの開発
設計した USB/シリアル デバイスをプリンタとして使用して、Linux/Windows での「印刷」アクションが、USB/シリアルポート。
その手順を教えてください。このプロジェクトをどこから始めて、どのように進めたらよいかわかりません。
Windows または Linux のオプションがあります。
android - Android の COM ポートからのデータの読み取り/書き込み
Android タブレットを COM ポート デバイスに接続し、それらにコマンドを送信する必要があります。
どうやら、USB-COMポートアダプタが必要です。どのタイプのアダプターが必要ですか? いくつかの要件?USB-COM ポート アダプタ経由でデバイスを接続する場合、どのように操作すればよいですか? 多分いくつかの例?
c - C でシリアル アダプタに書き込む
私はプロジェクトに取り組んでおり、シリアルポートに書き込む方法を理解しようとしています。私のラップトップにはシリアル ポートがないので、USB からシリアルへのアダプターを購入しました。ここで、C プログラムからシリアル ポートにデータを送信する必要がありますが、ポートのアドレス指定方法がわかりません。これがどのように行われるか誰にも分かりますか?
Windows 98 で作業していたときはoutportb()
、パラレル ポートに対処していましたが、これは Windows 7 では機能しません。
(Windows7 64ビットを使用しています。)
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です。
私のテストと読み取りに基づいて、このコードにはいくつかの疑わしいことがあります。
COMMTIMEOUTSが設定されることはありません。MSのドキュメントには、「タイムアウト値の設定に失敗すると、予期しない結果が発生する可能性がある」と記載されています。しかし、これを設定してみましたが、役に立ちませんでした。
多くのメソッド(ReadStringなど)は、データをすぐに取得しない場合、タイトなループに入り、繰り返しの読み取りでポートをハンマーで叩きます。これは、CPU使用率が高いことを説明しているようです。
多くのメソッドには、GetTickCount()を使用した独自のタイムアウト処理があります。それがCOMMTIMEOUTSの目的ではありませんか?
新しいC#(WinForms)プログラムでは、これらのシリアルルーチンはすべて、MultiMediaTimerイベントからメインスレッドから直接呼び出されます。たぶん、別のスレッドで実行する必要がありますか?
BytesInQueメソッドがボトルネックのようです。CPU使用率が高いときにデバッガーにアクセスすると、通常、プログラムが停止します。また、ClearCommErrorを呼び出す前にこのメソッドにSleep(21)を追加すると、XPの問題は解決するようですが、CPU使用率の問題が悪化します。
コードは不必要に複雑に見えます。
私の質問
これが少数のXPシステムのC#プログラムでのみ機能する理由を誰かが説明できますか?
これを書き直す方法について何か提案はありますか?良いサンプルコードへのポインタは大歓迎です。
java - rxtxComm を使用した RS232 DB9 でのハンドシェイク ラインの処理
rxtxComm を使用して、Arduino (USB シリアル ポート) と通信 (データの送受信) を行いました。rxtxComm ライブラリを使用して DTR のようなハンドシェイク ラインを処理するにはどうすればよいですか? このチュートリアルまたはサンプル コードを教えてください。
- 注:win7 OSを使用しています。今日 (2012 年 4 月 21 日)、USB シリアル (DB9) アダプターを購入しました。LEDアレイをrs232に直接接続することを計画しています...
c# - x64に接続されたUSBデバイスのVIDとPIDを使用してCOMポートを識別します
次のように、指定されたpidとvidによって32ビットwin7OSマシンに接続されたusb comポート名を取得できますが、x64で実行すると、次の行でスタックします。
これは私のコードです
実際のコードはここにあります。では、x64でcomポート名を取得する方法、何か提案はありますか?