private void ComReceive(object sender, SerialDataReceivedEventArgs e) { bReceiveCompleted = false; if (bRecStaus) //如果已经开启接收 { try { Thread.Sleep(50); ReceivedDataPacket = new byte[CurrentSerialPort.BytesToRead]; ReceivedDataPacketChar = new char[CurrentSerialPort.BytesToRead]; // change to char datas if (ByteMode) { CurrentSerialPort.Read(ReceivedDataPacket, 0, ReceivedDataPacket.Length); receiveArrByteQueue.Enqueue(ReceivedDataPacket); receiveArrCharQueue.Clear();//清空Char接收缓存 //OnSerialPortMiss(new SerialPortMissingEventArgs("test event byte")); } else { CurrentSerialPort.Read(ReceivedDataPacketChar, 0, ReceivedDataPacketChar.Length); receiveArrCharQueue.Enqueue(ReceivedDataPacketChar); receiveArrByteQueue.Clear();//清空Byte接收缓存 // OnSerialPortMiss(new SerialPortMissingEventArgs("test event char")); } bReceiveCompleted = true; } catch (Exception) { if (CurrentSerialPort.IsOpen == false) //如果ComPort.IsOpen == false,说明串口已丢失 { SetComLose(); //串口丢失后相关设置 } else { // throw new Exception("unable to receive data"); OnSerialPortMiss(new SerialPortMissingEventArgs("unable close serial port")); } } } else //暂停接收 { CurrentSerialPort.DiscardInBuffer(); //清接收缓存 } }
private void ComReceive(object sender, SerialDataReceivedEventArgs e) { ReceiveCompleted = false; if (_recStaus) //如果已经开启接收 { try { Thread.Sleep(50); ReceivedDataPacket = new byte[CurrentSerialPort.BytesToRead]; ReceivedDataPacketChar = new char[CurrentSerialPort.BytesToRead]; // change to char datas if (ByteMode) { CurrentSerialPort.Read(ReceivedDataPacket, 0, ReceivedDataPacket.Length); /* * string s = ""; * for (int a = 0; a < ReceivedDataPacket.Length; a++) * s += ReceivedDataPacket[a] + " "; * new LOG.LogClass().WriteLogFile(LOG.LogSerial.logSerialnum + "---serialGetData-->" + s); */ } else { CurrentSerialPort.Read(ReceivedDataPacketChar, 0, CurrentSerialPort.BytesToRead); } ReceiveCompleted = true; } catch (Exception) { if (CurrentSerialPort.IsOpen == false) //如果ComPort.IsOpen == false,说明串口已丢失 { SetComLose(); //串口丢失后相关设置 } else { throw new Exception("unable to receive data"); } } } else //暂停接收 { CurrentSerialPort.DiscardInBuffer(); //清接收缓存 } }