はじめに
電子デバイスの開発に何らかの形で関係している人の多くは、Labcenter Electronicsの
Proteusソフトウェアパッケージを少なくとも一度は聞いたことがあると思います。 モデリングに使用できるコンポーネントの広範なライブラリが何であれ、回路の「寿命」は、まれな例外を除いて、エミュレータウィンドウの制限に制限されます。 たとえば、いくつかのデータをファイルに書き込んだり、USBデバイスとしてシステムに提示したりできるモデルがいくつかありますが、これまでのところ、小さなクラスの問題を解決できます。
挑戦する
航空機の無線制御システムを開発する必要があるフレームワーク内で、コースプロジェクトに取り組むとき、モデルをPCに接続することが必要になりました。 PCとの通信用の最も単純なインターフェースの1つは
RS-232であるため、それが選択されました(usb-uartアダプターが使用されました)。
それでは、電子コンポーネントの故障につながる可能性のある非常に大きなエラーがまだ発見されておらず、頻繁なファームウェアを備えたマイクロコントローラーに煩わされていない、非常に初期段階でこのシステムをどのようにデバッグしますか?
かなり便利なソリューションはプロテウスです。 しかし、ここで新しい問題が現れます-PCとの通信。

コンポーネントライブラリにはCOMPIMモデルが含まれています。これにより、回線をPC COMポートに関連付けることができ、このCOMポートに接続されているデバイスからの要求をエミュレートされたデバイスに接続されているかのように処理できます。 もちろん、別のCOMポートを介して回路に接続されているポートに接続することもできますが、これには2x COMポートと外部ヌルモデムケーブルが必要です。
仮想COMポートのアイデアはすぐに思い浮かびます。 たとえば、
com0comは、入力と出力が相互にリダイレクトされる2つの仮想COMポートを作成します。 また、何らかの理由で仮想マシンで作業する人にとっては、VMツールを使用してcomポートをリダイレクトする機能が役立つ場合があります。
しかし、
私たちは簡単な方法を探していません。 たまたま、Proteus用の独自のデジタルモデルの作成
に関する記事を見つけまし
た 。 モデルのすべてのロジックを動的ライブラリに取り込む方法を示します。 それから、これで少なくとも私の問題は解決し、最大限にエミュレータを追加することでエミュレータの機能を最大限に拡張できると思いました。 インターフェースuart、i2c、spiなど(回路の側面から)を持つことができ、外部との通信用にほとんどすべて(少なくとも3D GUI)
モデルを作成する手順
モデルのグラフィックイメージの作成
長方形、別の長方形、テキスト、結論(デバイスピンを使用)を追加します。
その記事または
ここで詳しく説明し
ますプログラム開発
モデルと対話するために、Windows OSの名前付きパイプを使用することにしました。 おそらく、ソリューションは奇妙に見えるかもしれませんが、アイデアは、実際のデバイスのインターフェイスにできるだけ類似したインターフェイスを提供することです。 名前付きパイプとCOMポートでの作業は通常のファイルでの作業とほとんど同じであるため、選択は名前付きパイプに依存しました。
しかし、「外の世界」との通信チャネルがある場合でも、artインタフェースを介して交換を実装する方法はありますか?
フレーム形式を思い出す必要があります。

この種の信号を生成/解析するロジックは、別のクラスに割り当てられます。
プロテウスモデルの主なものは2つの方法です。
初期セットアップの実行:
VOID PIPEUARTMODEL::setup (IINSTANCE *instance, IDSIMCKT *dsimckt) { uart = new Uart(); logger = new Logger(instance); pipe = new Pipe("\\\\.\\pipe\\uart", logger);
そして、callback'omをジャーク
VOID PIPEUARTMODEL::callback(ABSTIME time, EVENTID eventid) { switch (eventid) { case rxd_event: uart->rxBit(ishigh(rxd_pin_state));
テスト中
仮想端末で動作する私のモデルの例:

このソリューションがどれほど便利かはまだわかりませんが、一見したところ、完全に私に合っています。
提示されたレシピが多くの問題の解決に役立つことを願っています。
ソースのリスト
- かなり良いプロテウスシステムの説明とモデル構築ガイド
- easyelectronics.ru/tag/rs232
- すべてのソースを入手できるGoogleのページ
- Proteus用のコンパイル済みDLLおよびライブラリ