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("读取历史数据失败"); } } }