Exemplo n.º 1
0
 private void button1_Click(object sender, EventArgs e)
 {
     if (radioButton1.Checked)
     {
         Rx1616 = new CP1616Packet(4, 1);
         byte[] tx = CP1616Packet.MakeCP1616Packet(4, 1, 1);
         COMPort1.Write(tx, 0, tx.Length);
         while (true)
         {
             try
             {
                 if (Rx1616.DataPacketed((byte)COMPort1.ReadByte()))
                 {
                     ee = new ExcelExport(100);
                     ee.ExcelWorkbookCallbackProc = new ExcelExport.ExcelWorkbookCallback(ExcelWorkbookCallbackProc);
                     ee.ExcelExportProc();
                     break;
                 }
             }
             catch
             {
                 MessageBox.Show("读取数据失败");
                 break;
             }
         }
     }
     else if (radioButton2.Checked)
     {
         hl = new List <byte[]>();
         se = new List <byte>();
         er = new List <byte>();
         progressBar1.Value = 0;
         int  retry;
         bool bOK;
         for (int i = 0; i < 100; i++)
         {
             retry = 20;
             bOK   = false;
             while (retry != 0)
             {
                 Rx1616 = new CP1616Packet(5, 1);
                 byte[] tx = CP1616Packet.MakeCP1616Packet(5, 1, (byte)i);
                 try
                 {
                     COMPort1.Write(tx, 0, tx.Length);
                 }
                 catch { retry--; continue; }
                 while (true)
                 {
                     try
                     {
                         if (Rx1616.DataPacketed((byte)COMPort1.ReadByte()))
                         {
                             //                                 byte[] temp = new byte[Rx1616.Data.Length - 2];
                             //                                 for (int j = 0; j < Rx1616.Data.Length - 2; j++)
                             //                                 {
                             //                                     temp[j]
                             //                                 }
                             hl.Add(Rx1616.Data);
                             se.Add((byte)(i + 1));
                             progressBar1.Value++;
                             Thread.Sleep(100);
                             bOK = true;
                             break;
                         }
                     }
                     catch
                     {
                         break;
                     }
                 }
                 if (bOK)
                 {
                     break;
                 }
                 retry--;
                 Thread.Sleep(1000);
             }
             if (retry == 0)
             {
                 er.Add((byte)(i + 1));
             }
         }
         if (se.Count != 0)
         {
             if (er.Count != 0)
             {
                 string str = "如下传感器数据读取失败:\r\n";
                 for (int i = 0; i < er.Count; i++)
                 {
                     str += "第" + er[i].ToString() + "号传感器" + "\r\n";
                 }
                 str += "是否继续保存";
                 if (MessageBox.Show(str, "读取错误", MessageBoxButtons.YesNo) == DialogResult.No)
                 {
                     return;
                 }
             }
             ee            = new ExcelExport();
             ee.SheetCount = se.Count;
             ee.ExcelWorkbookCallbackProc = new ExcelExport.ExcelWorkbookCallback(ExcelWorkbookCallbackProc1);
             ee.ExcelExportProc1();
         }
         else
         {
             MessageBox.Show("读取历史数据失败");
         }
     }
     else if (radioButton3.Checked)
     {
         if (numericUpDown2.Value < numericUpDown1.Value)
         {
             MessageBox.Show("范围有误");
             return;
         }
         hl = new List <byte[]>();
         se = new List <byte>();
         er = new List <byte>();
         progressBar1.Value = 0;
         int per = (int)(numericUpDown2.Value - numericUpDown1.Value + 1);
         per = 100 / per;
         int  retry;
         bool bOK;
         for (int i = (int)(numericUpDown1.Value - 1); i < (int)numericUpDown2.Value; i++)
         {
             retry = 20;
             bOK   = false;
             while (retry != 0)
             {
                 Rx1616 = new CP1616Packet(5, 1);
                 byte[] tx = CP1616Packet.MakeCP1616Packet(5, 1, (byte)i);
                 try
                 {
                     COMPort1.Write(tx, 0, tx.Length);
                 }
                 catch { retry--; continue; }
                 while (true)
                 {
                     try
                     {
                         if (Rx1616.DataPacketed((byte)COMPort1.ReadByte()))
                         {
                             //                                 byte[] temp = new byte[Rx1616.Data.Length - 2];
                             //                                 for (int j = 0; j < Rx1616.Data.Length - 2; j++)
                             //                                 {
                             //                                     temp[j]
                             //                                 }
                             hl.Add(Rx1616.Data);
                             se.Add((byte)(i + 1));
                             progressBar1.Value += per;
                             Thread.Sleep(100);
                             bOK = true;
                             break;
                         }
                     }
                     catch
                     {
                         break;
                     }
                 }
                 if (bOK)
                 {
                     break;
                 }
                 retry--;
                 Thread.Sleep(1000);
             }
             if (retry == 0)
             {
                 er.Add((byte)(i + 1));
             }
         }
         progressBar1.Value = 100;
         if (se.Count != 0)
         {
             if (er.Count != 0)
             {
                 string str = "如下传感器数据读取失败:\r\n";
                 for (int i = 0; i < er.Count; i++)
                 {
                     str += "第" + er[i].ToString() + "号传感器" + "\r\n";
                 }
                 str += "是否继续保存";
                 if (MessageBox.Show(str, "读取错误", MessageBoxButtons.YesNo) == DialogResult.No)
                 {
                     return;
                 }
             }
             ee            = new ExcelExport();
             ee.SheetCount = se.Count;
             ee.ExcelWorkbookCallbackProc = new ExcelExport.ExcelWorkbookCallback(ExcelWorkbookCallbackProc1);
             ee.ExcelExportProc1();
         }
         else
         {
             MessageBox.Show("读取历史数据失败");
         }
     }
 }