2011-12-23 8 views
1

シリアルポート(COM1)を開くMdiParentフォームがあります。私はボタンをクリックするとタイマーを開始する子フォームがあり、タイマーは数秒ごとに起動します。タイマーは、以前に開かれたCOM1ポートを読み書きする別のクラスのメソッド(commClassと呼ぶ)を呼び出します。C#別のフォームからシリアルポートにアクセスする

MdiとCOM1間の通信は正常に動作します。イベントをトリガーするタイマーもそうです。 問題は、シリアルポートからの書き込み/読み取りです。

誰かが私のシリアルポート(Mdi形式で定義されている)にアクセスするための正しいOOP方法を私のcommClassから教えてもらえますか? Mdi、child、およびcommClassで何をすべきかを説明する数行のコードがあれば幸いです。

ありがとうございます!

+2

適切なOOPソリューションは*カプセル化*です。そのSerialPortオブジェクトは、フォームではなく、commClassクラスに属します。デザイナーがあなたのスタイルを窮屈にするのを避けてください。 –

答えて

3

異なるフォームからポートにアクセスする必要がある場合は、読み取り/書き込みタスクを処理する静的ヘルパークラスを作成し、必要なフォームからそのクラスを使用することをお勧めします。

そのクラスを数秒ごとにアクティブ化する必要がある場合は、ヘルパークラス自体にタイミングを実装して、タイマーを開始するメソッドStart()のようなメソッドを定義する必要がありますが、実装の詳細は公開しないでくださいforms。 代わりに、読み書きタスクを抽象化するためのいくつかのメソッドを提供するだけです。

関連する問題