Exemple #1
0
        //打开串口
        private void OpenSerialPort(bool isOpen)
        {
            if (!serialPort.IsOpen)//串口处于关闭状态
            {
                try
                {
                    serialPort.PortName = SerialPortName; //串口号
                    serialPort.BaudRate = 9600;           //波特率
                    serialPort.DataBits = 8;              //数据位

                    //打开串口
                    serialPort.Open();
                    try
                    {
                        // serialPort.Write("R0\r");
                        // serialPort.DiscardInBuffer();
                        //设置TM3000为RS232通讯模式
                        serialPort.Write("Q0\r");
                        SerialReceviedValue = serialPort.ReadTo("\r");
                        serialPort.DiscardInBuffer();
                        //读取TM3000的out1的公差设置
                        serialPort.Write("SR,LM,01\r");
                        SerialReceviedValue = serialPort.ReadTo("\r");
                        string[] ReceviedValue = SerialReceviedValue.Split(',');
                        if (ReceviedValue[0] == "SR")
                        {
                            string temp1 = ReceviedValue[3].Substring(1);
                            TolUpperLimit = Convert.ToDouble(temp1);
                            string temp2 = ReceviedValue[4].Substring(1);
                            TolLowerLimit = Convert.ToDouble(temp2);
                            //设置TM3000为正常拍照模式
                            serialPort.Write("R0\r");
                            SerialReceviedValue      = serialPort.ReadTo("\r");
                            serialPort.DataReceived += dataReceived;
                            serialPort.DiscardInBuffer();
                            IsSerialPortConnected = true;

                            // Debug.Print(Convert.ToDouble("000.512").ToString());
                            // 510 > Convert.ToInt32(temp2[1]) && Convert.ToInt32(temp2[1]) > 490;
                        }
                        else
                        {
                        }
                    }
                    catch (Exception e)
                    {
                        System.Windows.MessageBox.Show(e.Message);
                    }
                }
                catch (System.Exception ex)
                {
                    System.Windows.MessageBox.Show("Error:" + ex.Message, "Error");
                    IsSerialPortConnected = false;
                    return;
                }
            }
        }
Exemple #2
0
        //串口接收数据
        private void dataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            try
            {
                Debug.Print("接收到串口数据");
                string input = serialPort.ReadTo("\r");
                serialPort.DiscardInBuffer();
                //数据格式:TG,01,+000.485

                App.Current.Dispatcher.Invoke((Action) delegate // <--- HERE
                {
                    if (Results.Count == WorkpieceQuantity)
                    {
                        Results.Clear();
                    }

                    SerialReceviedValue = input;
                    QuantityOfDone++;
                    string[] ReceviedValue = SerialReceviedValue.Split(',');
                    string ResultValue     = null;
                    if (ReceviedValue[2] == "+FFFFFFF" || ReceviedValue[2] == "-FFFFFFF")
                    {
                        ResultValue = "超量程";
                    }
                    else
                    {
                        string temp = ReceviedValue[2].Substring(1);
                        //string[] temp2=  temp.Split('.');

                        if (TolUpperLimit > Convert.ToDouble(temp) && Convert.ToDouble(temp) > TolLowerLimit)
                        {
                            ResultValue = "OK";
                        }
                        else
                        {
                            ResultValue = "NG";
                        }
                    }
                    // Thread.Sleep(100);
                    //获取当前时间
                    DateTime TempTime = DateTime.Now;
                    //把获取的结果保存到Results中
                    Results.Add(new Result()
                    {
                        Index = QuantityOfDone.ToString(), IsOk = ResultValue, dateTime = TempTime, ResultValue = ReceviedValue[2]
                    });
                    //把获取的数据添加到Line中等待打印
                    //lines[QuantityOfDone-1] = QuantityOfDone.ToString() + "," + TempTime.ToString() + "," + ReceviedValue[2] + ","+ ResultValue;
                    lines[QuantityOfDone - 1] = QuantityOfDone.ToString() + ", " + ReceviedValue[2] + ", " + ResultValue;


                    if (QuantityOfDone == WorkpieceQuantity)
                    {
                        string Json = JsonConvert.SerializeObject(Results, Formatting.Indented);
                        FileName    = System.DateTime.Now.ToString("yyyyMMddHHmmssfff");
                        File.WriteAllText(Environment.CurrentDirectory + "\\Logs\\" + FileName + ".json", Json);
                        QuantityOfDone = 0;
                        if (IsAutoPrint)
                        {
                            Print();
                        }
                    }
                });
            }
            catch (System.Exception ex)
            {
                System.Windows.MessageBox.Show(ex.Message, "Error");
            }
        }