//读取并转换串口数据的线程 void ManageReadDataThread() { Console.WriteLine("开始接收数据线程"); int dataID = 1, oldID = 0; //定义通道一和二的数据ID变量 byte[] bt = new byte[200]; //定义接收数据的byte数组 string dateTime = ""; UInt16[] channel1 = new UInt16[50]; UInt16[] channel2 = new UInt16[50]; //cTMySql.CreateNewTable(tablename + "_channel1"); //cTMySql.CreateNewTable(tablename + "_channel2"); while (manageReadDataFlag) { //object lockthis = new object(); //lock (lockthis) //{ if (CTSerialPort.ReadSP(ref bt, ref dateTime, 200)) { for (int i = 0; i < 50; i++) { byte temp = 0; temp = bt[i * 4]; bt[i * 4] = bt[i * 4 + 1]; bt[i * 4 + 1] = temp; channel1[i] = BitConverter.ToUInt16(bt, i * 4); temp = bt[i * 4 + 2]; bt[i * 4 + 2] = bt[i * 4 + 3]; bt[i * 4 + 3] = temp; channel2[i] = BitConverter.ToUInt16(bt, i * 4 + 2); } list1.AddRange(channel1); list2.AddRange(channel2); textBox1.AppendText(string.Join(" ", channel1)); textBox2.AppendText(string.Join(" ", channel2)); cTMySql.InsertData2DSTable(tablename + "_channel1", dataID, dateTime.ToString(), ref channel1); cTMySql.InsertData2DSTable(tablename + "_channel2", dataID, dateTime.ToString(), ref channel2); //if (dataID - oldID >= 100) //{ // oldID = dataID; // cTMySql.AddOrUpdataTableFromDataset2Databass(tablename + "_channel1"); // cTMySql.AddOrUpdataTableFromDataset2Databass(tablename + "_channel2"); //} dataID += 50; } //} } manageReadDataFlag = false;//线程结束后将信号灯标志置为禁止 }
//读取串口数据 开始之前要先让信号灯通过 public void ReadSpData(object readSize) { UpdataCOMandBoud(); byte[] spData = new byte[4]; int num = 0; CTSerialPort.ClearInBuffer(); boxtest_result.Text = null; while (flag1) { if (CTSerialPort.ReadSP(ref spData, (int)readSize)) { for (int n = 0; n < 4; n++) { boxtest_result.AppendText(spData[n].ToString() + " "); //boxtest_result.Text += spData[n].ToString(); //this.boxtest_result.Focus();//获取焦点 //this.boxtest_result.Select(this.boxtest_result.TextLength, 0);//光标定位到文本最后 //this.boxtest_result.ScrollToCaret();//滚动到光标处 } //boxtest_result.Text += " "; //this.boxtest_result.Focus();//获取焦点 //this.boxtest_result.Select(this.boxtest_result.TextLength, 0);//光标定位到文本最后 //this.boxtest_result.ScrollToCaret();//滚动到光标处 System.DateTime currentTime = new System.DateTime(); currentTime = System.DateTime.Now; Console.WriteLine("Min:" + currentTime.Minute.ToString() + " Sec:" + currentTime.Second.ToString() + " MsecL" + currentTime.Millisecond.ToString() + "\r\n"); num++; } if (num >= 10) { boxtest_result.Text += "\r\n测试成功\r\n"; flag1 = false; SendSpData("E"); return; } } boxtest_result.Text += "\r\n测试失败,未接收到完整数据\r\n"; SendSpData("E"); return; }