C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 160 を表示中)
■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秒後(エラー表示のみとなる)で、その間ボタンが反応しない
なんてことがあったのでちょいと気になった。

返信 編集キー/


管理者用

- Child Tree -