Exemple #1
0
        //读取并转换串口数据的线程
        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;
        }