■92733 / ) |
Re[1]: テキストボックスの値の更新 |
□投稿者/ 774RR (743回)-(2019/10/26(Sat) 16:37:39)
|
詳しいことを言い出すといろいろ難しい話が出てくるんだけど、
> inst.WriteString("MEASUrement:MEAS1:MAXimum?"); > textBox2.Text = inst.ReadString();
1. これがどういう文字列を得ているかをデバッガに表示する、を試してみよう
using System.Diagnostics; // をファイル先頭付近に書いたうえで
string result = inst.ReadString(); Debug.WriteLine(result); // とすると Visual Studio の「出力」パネルに表示される Debug.WriteLine("Max=<" + result + ">"); // とすればヘッダやトレーラも一緒に表示される textBox2.Text = result; // で画面上 TextBox の更新が予約される
画面の更新は予約されるだけで後回しになるのに対して Debug.Write() Debug.WriteLine() は即時デバッガ画面に表示されるので、こっちのほうが便利。
2. この WriteString()/ReadString() にどれくらい時間がかかるのかマニュアルを確認/実測 これらの処理中はあなたのプログラムは「応答なし」になってしまう。 表示が変わるのは WriteString()/ReadString() の両方が終わった後になるので 1秒かかるなら1秒後、10秒かかるなら10秒後に画面が更新されることになる。 時間がかかる、かつ、画面更新の遅れが気になるのなら、プログラムの構造自体から見直しが必要。
3. オイラの使ったとあるデジマルは Measure:DCV? の後に改行が必要だったんだけど WriteString() という関数名からは改行を出力しないように読み取れ (WriteLine() なら改行出力あり) 与えている文字列にも改行がないように読み取れる。 「改行が必要」かどうかは、あなたの測定器のマニュアルに書かれているはずなのでその辺の確認。 もし必要なら改行を追加。必要なければ無視してください。
オイラのデジマルの場合、 PC が改行コードのないコマンドを送る→ DM が改行コードを約2秒待つ(待ちきれなくてタイムアウトする)→ PC 側 ReadString() が2秒後でないと戻ってこない→ 画面更新が毎回2秒後(エラー表示のみとなる)で、その間ボタンが反応しない なんてことがあったのでちょいと気になった。
|
|