問題タブ [mscomm32]
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.
.net - VB.NET での GUI の遅延
シリアル通信を行うプログラムがあります。コマンドを送信した後、プログラムはデータを受信するまでしばらく待機する必要があります。データは ActiveX MsComm を使用して受信されます
http://msdn.microsoft.com/en-us/library/aa259393%28v=vs.60%29.aspx
疑似コードは次のようになります。
timer_tick
データを送信 (ノード 1)
sleep(500) 'その間、ノード 1 のデータを受信
データの送信 (ノード 2)
. . .
問題は、スリープが原因で GUI が遅れることです。いくつかの代替案を考えました
1) タイマーで人工カウンターを使用して、次のコマンドを送信する前に 500 ミリ秒を概算しますが、私にはあまり良い考えではないようです 2) タイマーの代わりにスレッドを使用しますか? バックグラウンドスレッドとして設定する
http://msdn.microsoft.com/en-us/library/system.threading.thread.isbackground(v=vs.71).aspx
3) application.doevents を利用していますか?
私はオプション 2 または 3 にあまり慣れていないため、コードに複雑な要素を導入することをためらっています。この問題により適した、またはオプション 2 または 3 に向けて作業を開始するための代替案を誰かアドバイスできますか?
vb6 - VB6 MSComm、127 を超えるポートが 8002 を返す
システムで開いているポートがあるかどうかを確認する単純な関数があります。1 から 256 までのポートをテストします。奇妙な理由で、127 を超えるポートにデバイスがあると、システムがエラー 8002 を返します。接続デバイスをチェックするための別の C++ アプリケーションが見つかり、読み取り可能です。
この問題は、使用可能なポート数に制限がある MSComm32.OCX に関連しています。この制限を 256 に増やす必要があります。以下の命令のリストを見つけましたが、MSComm32.OCX ファイルで「3D 10 00」を見つけることができませんでした。これは Windows 8 PC にありました。ただし、Windows XP では MSComm32.OCX に「3D 10 00」が含まれていたため、すぐに文字列を見つけて新しいバイト「FF」を追加し、http://mh-nexus.de/en/hxd/ を使用してバイト「10」を削除しました。そしてそれを新しいファイルとして保存しました。