問題タブ [com0com]
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.
emulation - com0com ヌルモデム エミュレーターで障害/ケーブル切断をシミュレートする方法
簡単に説明すると、アプリケーションで非常に具体的なエラー状況をデバッグする必要があります。アプリケーションは、シリアル ケーブルで接続された 2 台のマシンで構成される二重システムで実行されます。このケーブルを介して、両方のマシンがある種の「ハートビート」信号を交換します。フィールドでの非常にまれな予測不可能なケースでは、物理メディア内の信号の歪みが誤動作を引き起こしました。シリアルケーブルを単に剥ぎ取るだけで、「残忍な」方法で部分的に再現できます。
ここで、便宜上、com0com ヌルモデム エミュレーター ( http://com0com.sourceforge.net/ ) を使用してシリアル ケーブルを正常にエミュレートし、両方のプロセスが仮想 COM ポートを使用して同じマシン上で実行されるようにします。それは完璧に機能します。
私の質問は次のとおりです: com0com を使用して、ケーブルの破損/シリアル ポートの障害/あらゆる種類の信号の歪みをシミュレートするにはどうすればよいですか? たとえば、データの送受信のために仮想ポートの 1 つを意図的にブロックできますか?
c# - リスニング ポートを閉じるとアプリケーションがハングする
com0com を使用して仮想ポート comA/comB の一部を作成し、ハイパーターミナルから comA に入力を入力し、wpf アプリケーションで comB をリッスンしています。次のコードを (トリガーしてConnect
) 実行すると、アプリケーションは正常に接続し、comA からデータを取得できますが、実行するとハングしますDisconnect
。
を使用して読み取り関数を書き込みに変更してみました
の代わりにport.readbyte
、切断すると完全に機能し始めます。readbyte
フリーズを引き起こした可能性のある何かが違うかどうかは誰にも分かりますか? それとも、com0com に関連している可能性がありますか?
android - Windows 8.1 での Bluetooth 経由の Android デバイスとの OBDsim 接続
私はこのトピックについて昨日から取り組んできました。obd-iiスキャナーに関するAndroidアプリケーションを開発したいと考えています。GithubやGoogle Codesには多くのオープンソース プロジェクトがあります。車やodb-iiチップなしでこのアプリケーションを開発するには、obd-iiシミュレーターを見つける必要があります。
OBDSim がサンプル データを作成し、アプリケーションによって送信される要求に応答することがわかりました。多くの問題に遭遇し、多くのドキュメントやブログ投稿を読んでこれらの問題を解決しました。しかし、私には最後の 1 つの問題があり、あなたの助けが必要です。
OBDsim の新しいバージョンは、com0com を使用して Bluetooth 接続用の Windows をサポートします。com0com をインストールすると署名の問題が発生し、関連する Windows 機能を無効にすることでこの問題を解決しました。また、Bluetooth の受信ポートを COM4 に設定しました。これまでのところ、すべてが良好です。その後、com0com を使用して仮想ポートを作成したいと考えています。インストール時にすでに1つのペアが作成されています。それらは CNCA0 と CNCB0 です。このペアの 2 番目のポートを CNCB0 から COM4 に変更しようとしているだけです。しかし、ウィンドウはCOM4が既に使用されているというエラーを出します。それでも、CNCB0 の代わりに COM4 を完了して割り当てます。その後、obdsim.exe を実行すると、次のようなログの作成が開始されます。
この間、Android アプリケーションを起動し、ライブ データの開始ボタンを押しました。Bluetooth接続エラーについてAndroid携帯でエラーが発生しました-読み取りに失敗しました。ソケットが閉じているか、タイムアウトしている可能性があります。これは 1 つのシナリオです。
2 番目のシナリオでは、ブレーク com0com を削除し、OBDsim を COM4 に直接接続します。そして、obdsim.exe を再度実行します。また、前のシナリオと同じ出力があります。Androidアプリケーションの出力を開始すると、このように変化します。
また、アプリケーションに変更が見られません。
問題が何であるか、または私が間違えた、または忘れた何かを知っている場合は、私またはあなたの助けを待っています.
ありがとう。
c++ - com0com IO-CTL コマンドをキャッチする方法は?
com0comドライバーによって作成された 2 つの仮想 COM ポート (例: COM0 と COM1) が接続されています。一部の古いアプリケーション (App1) がデータを COM0 に書き込み、COM1 (App2 内) からデータを読み取り、その逆も同様です。
ボー レート、パリティなど、com0com ドライバー (COM1) によって作成された仮想 COM ポートからいくつかの IO-CTL を取得するにはどうすればよいですか?
もちろん、App1 では何も変更できず、App2 では何でもできます。
python - Windows (仮想) シリアル ポートを閉じる - OS がそれらを解放するのにどのくらいの時間がかかりますか?
com0com 仮想シリアル ポートを利用する Python (2.6) アプリを作成しています。Windows Server 2008 R2 (sp1) で実行されています (Win 7 である私の開発マシンでも同じ問題が発生しています)。
com0com ポート ペアは、アプリを実行する前に作成されます。アプリは (serial.Serial オブジェクトを作成することによって) ポートを開き、それらを利用してから閉じます。
そのポートを再利用しようとするとすぐに失敗します - コンストラクターの呼び出しは問題ありません (つまり、開いている serial.Serial オブジェクトを返します) が、このオブジェクトは使用できないようです。これらのオブジェクトは別のアプリケーションによって使用されているため、アプリケーションが何かを正しく解放していない可能性があります。
com0com ポートを再利用するために待機する必要がある既知の間隔はありますか? com0com ポートが何らかの方法で間違って設定されている可能性がありますか? または、他の何か?
コードの擬似コード超高レベルの概要:
docker - WS2016 Docker コンテナー内の仮想 COM ポートへのアクセス
Windows Server 2016 TP5 (ゲスト vm) を搭載した Win7 (ホスト) および Virtual Box で実行されます。WS2016 では、コンテナーの windowsservercore ベース イメージを使用して docker を実行します。
私はフリート管理システムのようなものを試しています。そこでは、複数のシミュレートされた車両を個別のドッカー イメージ内で起動しようとしています。
これらの車両シミュレーターは、シミュレートされた車両が読み取る仮想 COM ポートにデータを送信するシミュレートされた GPS を使用します。
Windows XP/7/Server 2016 では、仮想 COM ポートを作成するためにcom0com(2.2.2.0 署名済み)を使用することに成功しました。
私の問題は、docker コンテナー内にインストールされた仮想 com ポートを取得することです。代わりに、ホスト上のデバイスとしてそれらにアクセスします。
私の最初の試みは、docker 内で com0com を実行することでした。ドライバのインストールはサイレント モードを使用して正常に動作しますが、インストールされたアプリケーションを使用して仮想 com ポート ペアを作成すると、問題が発生します。コマンドが停止し、アプリケーション イベント ログを表示すると、コマンドを実行しようとするたびに、この種の行がいくつか表示されます。
代わりにホストでデバイスを作成しようとして、代わりにデバイスを渡すと、それらにアクセスできないようです
コンテナ内でcom0com --listを使用すると、デバイスは表示されますが、ホストと同じ名前ではありません
関連付けられた Dockerfile で、com0com setupc.exeを使用して名前を変更し、ホストで識別される名前と同じ名前にします。
ホストで発行されたモードコマンドは、ポートを適切に一覧表示します。一方、コンテナー内からのモード コマンドを使用すると、一覧表示に失敗し、次の 1 つの項目のみが表示されます: CON
次に、--device=//./COM128://./COM128引数を使用して docker run に渡そうとしました
注!:これはデバイスへの正しい「パス」ですか?
これの注目すべき結果はゼロです。com0com setupcコマンドは、モードと同じ、同じ結果を返します。
奇妙なことに、powershell を実行してシリアルポートを一覧表示すると、正しい名前でホスト上で利用可能な期待されるコンポートが取得されますが、それらの 1 つを開こうとすると例外が発生します。
最後に、上記とほぼ同じことを試みましたが、別の仮想comポートソフトウェア(eltima)を使用してホストに設定し、コンテナでpsを使用してポートを開こうとしたときの最終結果は、com0comで構成されたポートの場合と同じです
アップデート:
com0comドライバーをhyper-vコンテナーにインストールでき、それらを共有しようとする必要がないという論文を考慮して、-isolationフラグを使用してdocker runを実行し、代わりにhyper-vでコンテナーを実行する新しいアプローチを試しましたホストから。
hyper-v で実行すると、windowsservercore ベース イメージの代わりに nanoserver ベース イメージを実行するように変更する必要がありました。
現在、インストーラー (NSIS ベース) は 32 ビット アプリケーションであり、nanoserver は 64 ビット アプリケーションしか実行できないため、nanoserver で com0com インストール ツールを実行できないという問題が発生しています。
一目見ただけで、NSIS の新しいバージョン (3.0) を com0com リポジトリに含まれる NSIS スクリプトと一緒に使用できることがわかります。
前進する方法に関するすべてのアイデアは大歓迎です!
PS: msdn コンテナー フォーラムに投稿された同じ質問
python - com0com および pyserial 仮想シリアル ポート。これを使用して、シリアル USB デバイスの取り外しをシミュレートできますか?
私はcom0comとpyserialを使用しています。1 つのポートを開き、pyserial を使用して書き込み、YAT エミュレーターで読み取ります。これはうまくいきます。このセットアップを使用して、シリアル ポートをエミュレートしている USB デバイスの取り外しをシミュレートできますか? プラグを抜いたときにアプリケーション ソフトウェアで実際のデバイスによってめったにスローされない UnauthorizedAccessException を再作成したいと考えています。pyserial を使用して CNCA0 に書き込み、YAT を使用して CNCB0 から正常に読み取った後、pyserial から CNCB0 を閉じようとしましたが、ポートが YAT によって既に取得されている (アクセスが拒否された) ため、もちろんできませんでした。実際のデバイスのプラグを抜くアクションをシミュレートする方法についてのアイデアはありますか?