Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
通信データのグラフ化
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30409#CommentId83555
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 (社会人)
投稿日時
2019/6/12 14:01:27
データ型を意識するために、フォームの先頭に
Option Strict On
を記述しておくことをお奨めします。
> EasyModbus.Exceptions.ConnectionException
> HResult=0x80131500
ConnectionException なので、何らかの通信エラーですね。
HResult 値の 0x80131500 は COR_E_EXCEPTION を意味する汎用エラーです。
EasyModbus の仕様は知らないのですが、おそらくは
「既にオープン済みのポートをさらに開こうとした」
「まだオープンしていないデバイスから値を読み取ろうとした」
のどちらかであろうと想像します。
> New EasyModbus.ModbusClient(TextBox1.Text, 502)
第一引数が IP アドレス、第二引数が ポート番号だそうですが、
これって毎回オープンする必要があるのでしょうか?
開き続けておいても構わないのであれば、こんな感じで処理できそうです。
🔷計測開始時(Form1_Load とか Button1_Click とか)は、初期設定のみ。
🔹Chat1 の凡例を整備
🔹ModbusClient を New しておく
🔹Timer1.Start() を呼び出す
🔷Timer1_Tick では、データの取得とグラフ描画
🔹先ほど New しておいた ModbusClient インスタンスの
ReadHoldingRegisters を呼び、Integer 配列を得る
🔹得られたデータを Chat1 にプロットする。
🔸リアルタイムに得られた Integer 配列の各データを表示させるために
Label1~Label3 の Text に表示させる必要があるのなら、
Integer から String への型変換も忘れずに!
🔷計測終了時の処理も必要(Fomr1_FormClosing とか Button2_Click とか)
🔹Timer1.Stop() を呼び出して、タイマーを止める
🔹ModbusClient インスタンスはもう使わないので、Disconnect しておく
> ①指定したデータ数取得したら、グラフを一度クリアして、再描画(これを繰り返す)
何故クリアするのでしょう?
凡例(Legends)や系列(Series)については、
デザイン時に設定しておくか、初回設定のみで良い気がするのですが…。
http://rucio.cloudapp.net/ThreadDetail.aspx?ThreadId=30287
http://hanatyan.sakura.ne.jp/chart/chart1.htm
リアルタイムに更新させるべきは、プロットされる
ポイントデータ(Points あるいは DataSource) だけですよね。
> ②通信データのリアルタイム表示
どのように表示させるのでしょうか?
➊ 時間の経過と共に、描画されるデータ数がどんどん増えていくもの
➋ データの総数は固定だが、時間ごとにデータが変化するもの
➌ データの最大数が決まっており、それを超えると古いものから消えていくもの
※先の私のサンプルは、上記 ➌ のパターンです。