//send by byte public bool ctrlSend(byte[] by) { try { if (IsOpen() == false) { ctrlOpenCom(); } SerialPort_Prefab.Write(by, 0, by.Length); } catch { return false; } return true; }
//send by string public bool ctrlSend(string strSend) { try { if (IsOpen() == false) { ctrlOpenCom(); } SerialPort_Prefab.WriteLine(strSend); } catch { return false; } return true; }
private void SerialPort_Prefab_DataReceived(object sender, SerialDataReceivedEventArgs e) { if (Closing) return;//正在关闭时,忽略 Listening = true; string strShow = ""; try { if (SerialPort_Prefab.BytesToRead > 0) { Thread.Sleep(100); strShow = SerialPort_Prefab.ReadExisting(); dataRecive = strShow; SerialPort_Prefab.DiscardInBuffer(); IsReadedDate = true; } DelSetTxt del = new DelSetTxt(SetTxt); Invoke(del, txtRecPort1, strShow); Listening = false; } catch (Exception) { Listening = false; } }
//串口打开,关闭 public void ctrlOpenCom() { if (button_Open.Text == "打开串口") { try { if (!HasLoadPara) { LoadPara(); HasLoadPara = true; } SerialPort_Prefab.PortName = cmbPortName.Text.ToString(); ; SerialPort_Prefab.BaudRate = Convert.ToInt32(cmbBaudRate.Text); SerialPort_Prefab.DataBits = Convert.ToInt16(cmbDataBits.Text); switch (cmbParity.Text) { case "EVEN": SerialPort_Prefab.Parity = Parity.Even; break; case "ODD": SerialPort_Prefab.Parity = Parity.Odd; break; case "NONE": SerialPort_Prefab.Parity = Parity.None; break; } switch (cmbStopBits.Text) { case "NONE": SerialPort_Prefab.StopBits = System.IO.Ports.StopBits.None; break; case "One": SerialPort_Prefab.StopBits = StopBits.One; break; case "Two": SerialPort_Prefab.StopBits = StopBits.Two; break; } SerialPort_Prefab.Open(); } catch (Exception) { MessageBoxLog.Show("串口打开失败"); lblPortInd.BackColor = Color.Red; return; } } else// close port { button_Open.Text = "打开串口"; if (SerialPort_Prefab.IsOpen) { Closing = true; while (Listening) Application.DoEvents(); SerialPort_Prefab.Close(); Closing = false; lblPortInd.BackColor = Color.Red; } } if (!SerialPort_Prefab.IsOpen) { bool bSetCtrl = true; cmbPortName.Enabled = bSetCtrl; cmbBaudRate.Enabled = bSetCtrl; cmbDataBits.Enabled = bSetCtrl; cmbParity.Enabled = bSetCtrl; cmbStopBits.Enabled = bSetCtrl; button_Send.Enabled = !bSetCtrl; button_Clear.Enabled = !bSetCtrl; lblPortInd.BackColor = Color.Red; button_Open.Text = "打开串口"; //this.Text = strCtrlName ; } else { bool bSetCtrl = false; cmbPortName.Enabled = bSetCtrl; cmbBaudRate.Enabled = bSetCtrl; cmbDataBits.Enabled = bSetCtrl; cmbParity.Enabled = bSetCtrl; cmbStopBits.Enabled = bSetCtrl; button_Send.Enabled = !bSetCtrl; button_Clear.Enabled = !bSetCtrl; lblPortInd.BackColor = Color.Green; button_Open.Text = "关闭串口"; } }