問題タブ [virtual-serial-port]

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 に答える
175 参照

java - Visual Serial Port Emulator を使用して既に開いているポートを開くことができない

私は初心者です。VSP Emulator を使用して 2 つの Java プロセスを同時に実行し、同じ Com ポートを開こうとしています。Connector デバイスまたは Splitter デバイスを使用してみました。2 番目のプロセスは、以前に開いたポートを開くことができません。これを行うために設定する必要があるものは他にありますか?

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

c# - 複数の仮想シリアル ポートが受信データを更新しない

C# で開発したシリアル ポート リッスン コンソール アプリケーションがあり、すべて正常に動作していました。

しかし、最近では、受信データは変更されていませんが、実際には受信データが変更されています(モニターから、またはアプリケーションを再起動したときに確認できます)。ポートは常に受信文字列と同じデータを書き込み続けます。しかし、アプリケーションを再起動するとデータが更新されます。つまり、変更時にシリアル ポートが受信データを更新/更新しないということです。

FIFO プロパティを TRUE に設定する前は、アプリケーションは正常に動作していました。ポート設定が FALSE の場合は問題ありませんでした。

これはウェイブリッジ アプリケーションであり、現場には 20 台のウェイブリッジがあります。それぞれが仮想ポートを介してサーバーにデータを送信します。(COM1....COM20)

何か案が?助けてくれてありがとう。

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

c# - C# で仮想シリアル ポートを開くと ArgumentException がスローされる

シリアル ポート経由でデバイスに接続するユーティリティがあります。このアプリケーションをテストするために、デバイス用のシミュレーターを作成しています。

どちらのアプリケーションも、同じ Windows 7 マシンで実行することを目的としています。

私はC#でシミュレーターを書いています。com0com を使用して、仮想ポートのペアを作成しました (この場合、既存のペアがいくつかあるため、CNCA8 と CNCB8 です)。

シミュレーターで CNCB8 を開こうとしています (アプリケーションはまだ実行されていません)。例外が発生します。

System.dll で 'System.ArgumentException' 型の未処理の例外が発生しました

追加情報: 指定されたポート名が COM/com で始まっていないか、有効なシリアル ポートに解決されません。

サンプルコード:

未使用の仮想ポートであるため、この質問は関係ありません (IsOpen は問題がある場合は false を返します): C# SerialPort#Open() メソッドは、ポート名のために ArgumentException をスローしますか?

編集:ポート名が SerialPort.GetPortNames() に表示され、Windows のデバイス マネージャーの「com0com シリアル ポート エミュレーター」の下に表示されることも確認しました。また、B の代わりに CNCA を使用して (いくつかの異なる既存の仮想ポートを使用して)、「HandShake」行を削除して、念のためにボーレートを 115200 に変更してみました (ただし、最終的には 9600 が必要です)。

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

c# - 仮想 COM への書き込み時のタイムアウト例外

.netサンプルを使用してCOMポートに書き込もうとしています

実際の COM への書き込みには問題はありませんが、仮想 COM に書き込もうとするとタイムアウト例外が発生します。

未処理の例外: System.TimeoutException: 書き込みがタイムアウトしました。System.IO.Ports.SerialStream.Write(Byte[] 配列、Int32 オフセット、Int32 カウント、Int32 タイムアウト) で System.IO.Ports.SerialPort.Write(文字列テキスト) で System.IO.Ports.SerialPort.WriteLine(文字列テキスト)

問題をグーグルで調べたところ、これが見つかりまし。そこで言われていることによると、これは問題です:

.net の write() 関数は、次のように CreateFile と WriteFile Async を使用しています。

FILE_FLAG_OVERLAPPE の代わりに NULL を使用したとき

私の質問は、どうすればこの問題を克服できますか? 独自のコードを作成する必要がありますか?

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

c++ - Windows USB 仮想 COM ポートで切断イベントを特定する

仮想シリアル ポート デバイス ドライバーを使用して USB デバイスと通信するアプリケーションを開発しています。シリアル ポート ハンドルが開いているときにデバイスが取り外された (またはクラッシュした) 場合、シリアル ポート ハンドルを閉じた後に再接続する唯一の方法は、デバイスのプラグを抜いてから再度差し込むことです。

十分に迅速に障害を検出できれば、潜在的な回避策があります。問題は、これらの条件下では、次の関数呼び出しがエラーを報告しないことです。

私の経験では、デバイスが取り外されたときにエラーを返す唯一の関数はWriteFileです。当然のことながら、ポート接続がまだ有効かどうかをテストするためだけに意味のないデータを書きたいわけではありません。

私の質問は、ポート接続がまだ有効かどうかを判断するために使用できる方法があるかどうかです。

私が何をしているのか疑問がある場合のために、次のコード フラグメントは、ポート ポーリング スレッドが何をしているかを示しています。

オーバーラップ I/O を使用している場合にも同じ問題が発生しました。

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

python - 端末接続時に atml atmega16 マイクロコントローラーでプログラムの実行が停止する

http://www.qu-bot.comで qu-bot からデータを受信しようとしています。ロボットには、ATML atmega16 マイクロコントローラーが搭載されています。シリアルポートにデータを出力するロボット上で実行されるプログラムを作成しました。ただし、コントローラーに接続するたびにプログラムが停止します。beep ステートメントを追加して、これをテストしました。プログラムが実行されている限り、ロボットはビープ音を鳴らします。ロボットに接続するとビープ音が止まります。qu-bo サポートを試してみたところ、シリアル ポートの dtr フラグを無効にすることが提案されました。私はそれをしましたが、喜びはありませんでした。

他に試せることはありますか?[qu-bot で実行されているコードの開始] 注: これは、quick c と呼ばれるある種の独自の C バリアントで記述されています。// このコードは uart 関数を表示します。

今度は私のpythonシリアルポート読み取りプログラムです。このプログラムは、raspbian と Windows 7 64 ビットの両方で試しました。Windows版を貼り付けています。raspbian バージョンは、Linux とは別の名前です。

PS私はとりわけ次のリンクを調べました。

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

linux - TCP 経由の Linux 上の仮想シリアル ポート

仮想シリアル ポート エミュレーターでできること

  • 仮想シリアル ポート コネクタを作成する
  • コネクタには COM35 などのポートを選択します
  • TCP サーバーの作成
  • 以前に作成した仮想シリアル ポートをサーバーに割り当てます

ここに画像の説明を入力

その後、クライアントは、IP アドレス、TCP ポート、および仮想シリアル ポートの名前を知ることで、TCP サーバーへのストリーム接続を確立できます。

上記の例では、単純に仮想シリアル ポートに接続する MICRO_Test アプリケーション (c++) を作成しました。このポートにデータを書き込むと、すべてのクライアントが受信します。

上の画像のログで確認できます。


これは Windows の場合ですが、Linux マシンで同等の動作を実現する方法はありますか?

総括する:

クライアントは、実際の COM ポートから物理データを読み取り、tcp ストリームを介してサーバーにデータを送信します。

Linux については、socat、tty、ser2net についてよく読んでいます。しかし、Linux で上記のようなアーキテクチャを実現する方法がわかりません。情報を教えていただけませんか?

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

vb.net - 一部のコンピューターで vb.net を介したシリアル ポート通信が機能しない

最近、商用製品用の新しい vb.net アプリケーションを開発しました。一部のラップトップで動作し、一部のラップトップでは動作しません。私のアプリケーションの詳細は次のとおりです。

ターゲット.netフレームワーク= 4(3.5と両方の組み合わせで試しました)

Driver = usbser.sys (マイクロソフト提供)

CPU = 任意の CPU

Windows版=XP以降

このアプリケーションは、私のラップトップ (x86 CPU および x86 WIN7 OS)、x64 チップセットおよび x64 WIN7 OS を搭載した別のラップトップで動作しています。ただし、x86 OS の x64 チップセットでは失敗します。これらのラップトップはすべて、.net Framework 4 以降を搭載しています。アプリケーションがプラットフォームで動作するようにするには、どのような設定を行う必要がありますか? これは、vb.net アプリケーションまたはドライバーのインストール プロセスの問題ですか?

助けてください。私のプロジェクトはこの問題で立ち往生しています。

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

c++ - USB シリアル仮想 COM ポート: 読み取りは機能しないが、書き込みは機能する

私は組み込みハードウェア (TI : Piccolo Control Stick xxx69) を使用しており、これは FTDI USB からシリアル コンバータ ハードウェアへの変換を使用しています。

PC には、仮想 COM ポート (VCOM : 通常は COM7) 経由でハードウェアと通信しようとする単純な VC++ アプリケーションがあります。

  • ポートに正しく接続できます。

  • アプリケーション/PC からハードウェアにデータを送信でき、正しく受信されます。(したがって、PC 上の Tx は正常に動作しています)、アプリケーションはまず API を使用して接続を開き、createfile(... ... ...)次にwritefile(.. ... ..)Windows API を使用してポートに直接書き込みます。

  • 驚いたことに、シリアル ポートからアプリケーションに読み取ることができません。APIを呼び出すとreadfile(... ... ...)、ステータスが TRUE として返されますが、ゼロバイトが読み取られます。カーネル api を表示する API モニター ソフトウェアを使用してみましたNtreadfile(... ... ...)が、エラーが返されますSTATUS_TIMEOUT" [0x00000102]。データがオンラインにあるにもかかわらず、書き込みは機能しますが、読み取りは機能しないため、これは驚くべきことです。

通常のハイパーターミナル ソフトウェアを使用すると、コントローラからデータを正しく読み取ることができ、データが表示されるため、データはオンラインです。【コントローラー側はハイパーターミナルでデータが見えるので大丈夫です。

私はマイクロコントローラーを扱っているため、Windows プログラマーではありません。したがって、この問題を追求するという点で何らかの助けがあれば、非常に役立ちます。

よろしくお願いします、

-ヴァルン

ここに参照があります