2011-12-14 7 views
0

ANSI C Windows 7環境でハードウェアと仮想シリアルポートの組み合わせを使用しています。このプロジェクトでは、2つのアプリケーションがあります。最初のアプリケーションが開発され、ハードウェアCOMポートと仮想COMポートの両方に接続されます。 2番目はレガシーアプリケーションです(既に開発済みで変更できません)。仮想NULLモデムを介して同じ仮想COMポートにのみ接続されます。Windows 7でのANSI C - シリアルイベント(RS232)のプログラムによる生成

最初のアプリケーションでは、COMイベントハンドラを使用して、ハードウェアCOMポートに接続されたシリアルメッセージジェネレータから生成されたメッセージを受信して​​処理することができます。しかし、仮想COMポートはCOMイベントを生成しないため、タイミングループを使用して、仮想ポートのシミュレートされた入出力キューを定期的にチェックすることに限定されています。これは、最初のアプリケーションでCOMトラフィックを制御する場合は問題ありませんが、2番目のアプリケーションでは、受信したシリアルトラフィックを処理するためにCOMイベントを確認する必要があります。

COMイベントを予期しているレガシーアプリケーションに表示されるように、あるアプリケーションでWindows COM(RS232)イベントをプログラムで生成する方法はありますか?イベントによって

は、私のような、典型的なcomcallbackによって認識されるものを参照しています:これが機能するかどう LWRS_RXCHAR、LWRS_RXFLAG、LWRS_TXEMPTY、LWRS_CTSなど

+1

より良い仮想ヌルモデムドライバを購入してください。 –

+0

ハンス、何か提案がありますか?com0comとVSPEを見ました。 com0comはAPIを提供せず、VSPEは無事に見える – ryyker

答えて

0

ここで(ちょっと遅れて)ループを閉じるだけで、@Evertを試していただきありがとうございます。

解決策は、適切なベンダーを選択することでした。仮想COMポートの正しい構成を作成するには、適切なカーネルモードドライバが必要でした。 Eltima(www.eltima.com)はそのような製品を提供しました。使用可能なAPIを備えた優れた製品。問題が解決しました

0

私は知りませんが、あなたは試すことができますレガシーCOMインターフェイスでループバックを行うには?それで、あなたはそれに書き込むことができ、それはCOMイベントを引き起こします。

+0

こんにちは、レガシーアプリはUARTから完全に分離されているため、そのイベントの可視性はありません。これは設計によるものです。レガシーアプリケーションで見られるイベントは、仮想COMポートまたは新しい(開発された)アプリケーションによって生成されるイベントに限定する必要があります。 よろしくおねがいします。 Ryyker – ryyker

関連する問題