C#串口通信SerialPort
public KopSoftSerialPort() { InitializeComponent(); //获取串口 cbPortName.Items.AddRange(SerialPort.GetPortNames()); if (cbPortName.Items.Count > 0) { cbPortName.SelectedIndex = 0; } cbBaudRate.SelectedIndex = 5; cbDataBits.SelectedIndex = 2; cbParity.SelectedIndex = 0; cbStopBits.SelectedIndex = 0; pictureBox1.Image = KopSoftTool.Properties.Resources.red; }
/// <summary> /// 打开串口 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnOpen_Click(object sender, EventArgs e) { if (cbPortName.Items.Count <= 0) { MessageBox.Show("没有发现串口,请检查线路!"); return; } btnSend.Enabled = false; serialPort.Encoding = Encoding.GetEncoding("gb2312"); //解决串口接收中文乱码 if (serialPort.IsOpen == false) { serialPort.PortName = cbPortName.SelectedItem.ToString(); serialPort.BaudRate = Convert.ToInt32(cbBaudRate.SelectedItem.ToString()); serialPort.Parity = (Parity)Convert.ToInt32(cbParity.SelectedIndex.ToString()); serialPort.DataBits = Convert.ToInt32(cbDataBits.SelectedItem.ToString()); serialPort.StopBits = (StopBits)Convert.ToInt32(cbStopBits.SelectedItem.ToString()); try { serialPort.Open(); btnSend.Enabled = true; } catch (Exception ex) { MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } btnOpen.Text = "关闭串口"; pictureBox1.Image = KopSoftTool.Properties.Resources.green; serialPort.DataReceived += new SerialDataReceivedEventHandler(SerialPort_DataReceived); //绑定事件 } else { try { serialPort.Close(); btnSend.Enabled = false; } catch (Exception ex) { MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } btnOpen.Text = "打开串口"; pictureBox1.Image = KopSoftTool.Properties.Resources.red; } }
public void UpdateRecevie(object NewData) { if (this.InvokeRequired) //等待异步 { UpdateString myInvoke = new UpdateString(UpdateRecevie); Invoke(myInvoke, new object[] { NewData }); } else { textBox2.AppendText(NewData.ToString()); //textBox2.SelectionStart = textBox2.Text.Length - 1; textBox2.ScrollToCaret(); } }