問題タブ [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.
c# - C# serial IO.port : シリアル データ解析の応答速度が不十分ですか?
皆さん、こんにちは。
最初に、組み込み C の方が好きなので、C# は初めてだと言いましょう。
MSP430FR5739 (TI マイクロコントローラ) を使用して信号発生器から 2Hz 信号を読み取ろうとしています。オンボード ADC を使用して 1 MHz サイクルで 1024 サンプルでアナログ値をサンプリングし、USB-to-Serial を使用して 9600 ボーレートで UART 通信を介して送信します。私はそれをすべて完全に機能させています....(ハイパーターミナルとarduinoのシリアルモニターでこれをテストしたため)
送信されたデータは次のようになります:(それぞれが新しい行にあります)
0
0
0
16
51
123
157
227
250
315
338
384
404 .....
ご覧のとおり、各データは新しい行に表示されます....しかし、ここに私の問題があります。
現在、このC#コードを使用して、データを表示するアプリケーションでデータを読み取り、解析しています。これは次のようになります。
【受信データ】[1]
UI アプリケーションの問題は次のとおりです。
2Hz 信号が変化すると (たとえば、正弦波から方形波に変化したり、ピーク-ピーク値が変化したり)、アプリケーションでデータが変化するのに永遠にかかります。ハイパーターミナルまたはarduinoのシリアルモニターを介して信号データを読み取ると、信号の値が変化するとすぐにデータも変化します...しかし、このアプリケーションではそうではありません。シリアルポートを正しく読み取っていると思いますが、何らかのバッファがいっぱいになり、このバッファが信号が変化したポイントに到達して表示するまでに永遠にかかると思います。何が起こっているのかを本当に理解する必要があります....インターネットで解決策を見つけようとしましたが、意味のある解決策は見つかりませんでした。
シリアル コンソールのように、これをリアルタイムで読み取れないのはなぜですか?
android - Android での仮想シリアル通信を使用した 2 つのプロセス (アプリ) 内でのバイトの読み取り/書き込み
シリアル通信用の仮想ポートを開くことができる Android 用の C/C++ アプリケーション (NDK) を作成しました。同じプロセス内でポートからバイトを読み書きします。これは今のところ機能しており、これを行うためにデバイスをルート化する必要はありませんでした。これは、次のことを行う単純なプログラムです。
問題は、これと同じことを 2 つのプロセス (2 つのアプリ) 内で実行したい場合、うまくいかないことです。1 つのプロセスが /dev/ptmx を開き、もう 1 つのプロセスが /dev/pts ディレクトリを開く必要があります。スレーブが /dev/pts ディレクトリを開こうとするたびに、「エラー オープン ファイル」(-1) というエラーが表示されます。デバイスをルート化しましたが、まだ機能していません。スレーブを待つために /dev/ptmx ディレクトリを開いた後にスリープ機能があります。
私は何をすべきか?何か案は?
c - マイクロコントローラは、仮想シリアル ポート経由で値「255ld」を継続的に受信します
これがばかげた質問ではないことを願っていますが、自分の問題に対する答えを自分で見つけることができません。
私は、一連のバイトを受信して保存することになっている Atmega32U4 マイクロコントローラー デバイスに取り組んでいます。私のコードは、LUFA-Library 151115 の CDC 仮想シリアル ドライバー テンプレートに基づいています。コードをテストするために、非常に便利なツール ScriptCommunicator 04.11 を使用します。マイクロコントローラ ユニット (MCU) は USB 経由で PC に接続され、PC ホストによってシリアル com ポート デバイスとして扱われます。私のOSはWindows 7 64ビットです。
現在、6 つの値を受け取って保存する関数を作成しています。そのために、次のコードを使用します。
以前に同様のコード スニペットを使用したことがありますが、すべて正常に動作しているように見えました。現在、次の問題を特定しました。デバイスは値「255ld」を継続的に受信しています。上記のコードを ScriptCommunicator でテストすると、この値を 6 回受け取ります (上記のコードに printf ステートメントが含まれているのはそのためです)。
これは、Windows が MCU をマウスなどの一般的な USB デバイスとして扱っているためではないでしょうか? そうなのだろうか?
または、これの他の理由は何ですか?
問題を回避するにはどうすればよいですか?
ヒントと回答をお寄せいただきありがとうございます。
c++ - C++ を使用して Windows で仮想 COM ポートのドライバーを作成する
私の目標は、2 台のリモート コンピューター間のシリアル接続を作成することです。仮想シリアル ポートから送信したいメッセージは、TCP プロトコルを使用してポータルにリダイレクトされます。次に、ポータルは受信したメッセージを送信し、それを他の PC のシリアル ポートにリダイレクトします。
このために私はテストし、C ++を使用してプログラムのシリアルからイーサネットへのコネクタをシミュレートしたいと考えています。このプログラムを使用すると、TCP/IP プロトコルを使用してリモート サーバーへのローカルのリアルまたは仮想シリアル ポート データのリダイレクトを開始するクライアント接続を作成できます。クライアントは Windows OS 上で実行する必要があります. 今のところ、QT を使用して単純な TCP クライアントを作成し、QString をサーバー (ポータル) に送信できますが、必要なのは、仮想シリアル ポート (COMx) で開いているハイパー ターミナル (Putty など) からいくつかの文字列を書き込むことです。私が作成しなければならないこと。
サーバーは、次の socat コマンドによって作成されます。
これで、受信した文字列をFedora OSのシリアル ポート/dev/ttyS0に転送できます。
ここで、仮想シリアル ポートを作成するために、Web で検索したところ、CreateFile関数が見つかりました。この関数を使用して、QT で次のコードを書きました。
デバイス管理 (Windows 10) に移動すると、[ポート (COM および LPT)] セクションの下に新しいデバイス COM15 が見つかりません。なんで?
使用した機能が正しくありませんか?
C++ を使用して仮想 COM ポートを作成できるドライバーを作成するには、どの関数を使用すればよいですか?