/// <summary> /// 显示结果 /// </summary> /// <param name="data"></param> private void showData(CI2C_Data data, long msTimes) { if (this.InvokeRequired) { this.Invoke(new Action <CI2C_Data, long>(showData), data, msTimes); } else { labACON.Text = (data.AC_ONOFF == 1?"ON":"OFF"); for (int i = 0; i < data.CmdNum; i++) { labReadStatus[i].Text = data.Val[i].CmdNo.ToString("X2") + ":" + data.Val[i].RdStatus.ToString("X2"); labByte1[i].Text = data.Val[i].RdByte1.ToString("X2"); labByte0[i].Text = data.Val[i].RdByte0.ToString("X2"); } labTimes.Text = scanNum.ToString() + "->" + msTimes.ToString() + "ms"; } }
private void OnScan() { try { int TimeInteral = 100; int TimeMs = delayMs * 1000 / TimeInteral; int count = 0; while (true) { if (cancelMonitor) { return; } if (count < TimeMs) { count++; System.Threading.Thread.Sleep(TimeInteral); continue; } count = 0; string er = string.Empty; Stopwatch watcher = new Stopwatch(); watcher.Start(); CI2C_Data data = new CI2C_Data(); scanNum++; if (!comMon.ReadI2C_Data(I2C_Addr, uutNo, ref data, out er)) { watcher.Stop(); showData(data, watcher.ElapsedMilliseconds); showInfo("读取I2C数据[" + I2C_Addr.ToString("D2") + "]失败:" + er + "->" + watcher.ElapsedMilliseconds.ToString() + "ms", true); continue; } watcher.Stop(); showData(data, watcher.ElapsedMilliseconds); showInfo("成功读取I2C数据[" + I2C_Addr.ToString("D2") + "]:" + watcher.ElapsedMilliseconds.ToString() + "ms"); } } catch (Exception) { throw; } finally { cancelMonitor = false; this.Invoke(new Action(() => { BtnReadData.Text = "Start Read"; } )); } }
private void BtnReadData_Click(object sender, EventArgs e) { try { BtnReadData.Enabled = false; if (BtnReadData.Text != "Start Read") { cancelMonitor = true; return; } if (!checkSystem()) { return; } int addr = System.Convert.ToInt16(txtAddr.Text); string er = string.Empty; if (!chkScan.Checked) { Stopwatch watcher = new Stopwatch(); watcher.Start(); CI2C_Data data = new CI2C_Data(); if (!comMon.ReadI2C_Data(addr, uutNo, ref data, out er)) { showInfo("读取I2C数据[" + addr.ToString("D2") + "]失败:" + er, true); return; } watcher.Stop(); showData(data, watcher.ElapsedMilliseconds); showInfo("成功读取I2C数据[" + addr.ToString("D2") + "]"); } else { I2C_Addr = System.Convert.ToInt16(txtAddr.Text); delayMs = System.Convert.ToInt16(txtScanTime.Text); cancelMonitor = false; scanNum = 0; BtnReadData.Text = "Stop Read"; OnScanHandler scan = new OnScanHandler(OnScan); scan.BeginInvoke(null, null); } } catch (Exception) { throw; } finally { BtnReadData.Enabled = true; } }