前提・実現したいこと
Visua Studio 2019 C#フォームアプリケーションにて、
PCと測域センサを接続しています。
Timerにより1000ミリ秒に一回、データを取得し表示するプログラムとしたいです。
下記URLを参考につくってみたのですがうまくいきませんでした。
https://takachan.hatenablog.com/entry/2017/09/09/225342
Form1.csのボタンクリック部分のコードを掲載させていただいてます。
どなたか解決策が分かるかた、ご教示いただきたく思います。
発生している問題・エラーメッセージ
エラーは起きていません。しかし、取得した値がテキストボックスへ表示されません。何も表示されない状態です。 Timerを試す前の状態では取得した値が次々と表示できていました。
該当のソースコード
C#
1 private void Button8_Click(object sender, EventArgs e) //測域センサの開始のボタン 2 { 3 const int GET_NUM = 1520; 4 const int start_step = 0; 5 const int end_step = 760; 6 7 // タイマーの間隔(ミリ秒) 8 var timer = new System.Timers.Timer(1000); 9 10 timer.Elapsed += (sender2, e2) => 11 { 12 try 13 { 14 timer.Stop(); // もしくは timer.Enabled = false; 15 16 17 // 測域センサからデータを取得する処理 18 try// 測域センサからデータを取得する処理 19 { 20 string port_name; 21 int baudrate; 22 port_name = "COM4"; 23 baudrate = 115200; 24 25 26 SerialPort urg = new SerialPort(port_name, baudrate); 27 urg.NewLine = "\n\n"; 28 29 urg.Open(); 30 31 urg.Write(SCIP_Writer.SCIP2()); 32 urg.ReadLine(); // ignore echo back 33 urg.Write(SCIP_Writer.MD(start_step, end_step)); 34 urg.ReadLine(); // ignore echo back 35 36 List<long> distances = new List<long>(); 37 long time_stamp = 0; 38 for (int i = 0; i < GET_NUM; ++i) 39 { 40 string receive_data = urg.ReadLine(); 41 if (!SCIP_Reader.MD(receive_data, ref time_stamp, ref distances)) 42 { 43 textBox1.AppendText(receive_data); 44 break; 45 } 46 if (distances.Count == 0) 47 { 48 textBox1.AppendText(receive_data); 49 continue; 50 } 51 // show distance data 52 textBox1.AppendText(" distance[100] : " + distances[100].ToString()); 53 } 54 55 urg.Write(SCIP_Writer.QT()); // stop measurement mode 56 urg.ReadLine(); // ignore echo back 57 urg.Close(); 58 } 59 catch (Exception ex) 60 { 61 textBox1.AppendText(ex.Message); 62 } 63 finally 64 { 65 textBox1.AppendText("Press any key."); 66 67 } 68 } 69 finally 70 { 71 timer.Start(); // もしくは timer.Enabled = true; 72 } 73 }; 74 75 // タイマーを開始する 76 timer.Start(); 77 78 // タイマーを停止する 79 timer.Stop(); 80 81 // 資源の解放 82 using (timer) { } 83 84 85 86 }
回答1件
あなたの回答
tips
プレビュー