Exemplo n.º 1
0
        /// <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";
            }
        }
Exemplo n.º 2
0
        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";
                }
                                       ));
            }
        }
Exemplo n.º 3
0
        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;
            }
        }