VB.NET 2010、.NET 4VB.NET解析シリアルデータを非同期、私はこのロジックに苦しんできた事例
こんにちは、
に共有機能からデータを取得少しの洞察を望んでいた。
私は、コンピュータに接続された多くのデバイスで構成される産業用機械を制御するためのアプリケーションに取り組んでいます。ほとんどの場合、それは正直なところでは合理的ですが、私はRS-232デバイスについて考えるのが苦労しています。 RS-232デバイスの1つは、多くの機能を備えたファンシー電源です。現在適切なのは、電圧読み出し、電圧書き込み、電流読み出し、および電流書き込みです。
私が実装しようとしているデザインパターンは、各接続されたデバイスは、この電力供給のための読書の/ etcとCOMポートのようなもののためのプロパティの書き込みなど
するためのメソッドを持つオブジェクトで表現したものです明らかにポート参照をインスタンス間で共有する必要があるため、保護された共有プロパティポートとしてのIO.Ports.SerialPortを持つ基本クラス(PowerSupplyなど)があります。次に、このクラスを継承したクラス、すなわちPowerSupplyVoltageとPowerSupplyCurrentを持っているクラスは、最後に読み書きされた値を保持するための読み書きメソッドとプロパティを定義します。
私の問題は、共有SerialPortオブジェクトのPort.DataRecievedイベントを使用して、電源装置からの応答を解析することです。電源が使用するプロトコルは、各応答パケットで送信するデータを指定します。ですから、基本的に「電圧は100V」、「電流は1A」、「電圧は150Vに設定されています」などと言うこともあります。
これを共有関数で解析しようとしています。解析処理中のみ、どのインスタンスの読み書き値を更新するかを決定します。共有関数内からインスタンスの読み込み/書き込み値プロパティにアクセスすることはできません。私の脳は、これをどうやって行うのか考えようとすることに傷つきます。私が考えることができる最高のものは、PowerSupplyVoltageとPowerSupplyCurrentインスタンスへの参照を共有ポートとDataRecievedHandler関数とともに保持する何らかの種類のPowerSupplyCommunicatorオブジェクトを作成することです。しかし、これはクルージングのように思える。これについて賢明なやり方を考えていますか?
事前にどうもありがとう、 ブライアン
洞察力に感謝します。私はあなたの提案の周りに私の頭をラップしようとします。 –