/// <summary> /// 开启/关闭串口 /// </summary> /// <param name="开启状态"></param> /// <param name="串口号"></param> /// <param name="波特率"></param> /// <param name="数据位"></param> /// <param name="停止位"></param> /// <param name="校验位"></param> /// <param name=""></param> private bool Start(bool IsLinked, string PortName, string Rate) { if (IsLinked == false)//串口处于关闭状态 { try { ObjPort.PortName = PortName; //出口名 ObjPort.BaudRate = Convert.ToInt32(Rate); //波特率 ObjPort.Open(); cmb_PortName.Enabled = false; cmb_BaudRate.Enabled = false; return(true); } catch (Exception ex) { MessageBox.Show("连接发生错误:" + ex.Message); return(false); } } else { ObjPort.Close(); cmb_PortName.Enabled = true; cmb_BaudRate.Enabled = true; return(true); } }
/// <summary> /// 串口数据读取服务函数 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ObjPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { Control.CheckForIllegalCrossThreadCalls = false; Byte[] readBuffer = new Byte[ObjPort.BytesToRead]; //创建接收字节数组 ObjPort.Read(readBuffer, 0, readBuffer.Length); //读取接收的数据 if (readBuffer.Length > 0) { ReceiveData = readBuffer; ObjPort.DiscardInBuffer(); } }
//向串口发送读取温度的指令 private void SendReadTemp() { Byte[] TxData = { 0x01, 0x03, 0x00, 0x28, 0x00, 0x08, 0xC4, 0x04 }; ObjPort.Write(TxData, 0, 8); }