//打开串口 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; } } }
//串口接收数据 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"); } }