三菱のシーケンサでの質問です。 Mx Component より三菱さんのC#のサンプルで通信してみました。

三菱のシーケンサでの質問です。 Mx Component より三菱さんのC#のサンプルで通信してみました。 サンプルは単純で、呼び出したデバイスのON/OFFを見るだけのものです。 そこでまず手を加えたいところが、呼び出しというボタンを押した際にしかフィードバックされないのですが、常時更新して指定のデバイスを監視したいのですが、どうやればよいでしょうか。C#のプログラムの質問になるとおもいますが、よろしくお願いします。 ちなみにMxSheetでは問題なくできますが、エクセルベースは嫌なのでよろしくおねがいします。

C言語関連21閲覧

ベストアンサー

0

フォームにボタンを二つ貼る。 Textプロパティを「オンライン」「オフライン」などにする。 「オンライン」を押したら axActUtlTypeXXX.Open(); 「オフライン」を押したら axActUtlTypeXXX.Close(); フォームにタイマーコントロールを貼る。 接続に成功したらタイマーのIntervalプロパティに1msecを設定する。 そのタイマーの _Tick イベントでデータを収集する。 でどうでしょうか? それが1番簡単だと思います。 データ読み出しと展開、表示に時間がかかって応答が悪くなるのがいやならIntervalを長めにとってみるとか。 もうちょっと志の高いソフトを組みたかったら非同期プログラミングを学んで while(true) のループで常時データ読み出しにしても良いと思います。 いくつもソフトを立ち上げたり、デバイスが多くなって重複などもあるようであればサービスを立ち上げて、サービスが常時読み出しでデータをプールして他のソフトと通信させたりすればいいと思います。 エラー処理を説明していては回答欄に収まらないので省きますが、複雑になるとエラー処理は指数関数的に増えてきます。 エクセルベースが嫌でC#で自作するならエラー処理をしっかりしてください。

ThanksImg質問者からのお礼コメント

ありがとうございます! ちょっと試してみます!

お礼日時:9/19 14:04

その他の回答(1件)

0

RS-232C 通信などではよく通信用スレッドを別に用意して、そちらでデータを受信したらメインスレッドに通知するようなことをすると思いますが、今回の場合も同じようなやり方でできます。