1、设置相应的控件,并命名
2、打开串口按钮事件代码( 其中全局变量private SerialPort ComDevice = new SerialPort();)注:SerialPort需要使用using System.IO.Ports;
private void usbOpenButton_Click(object sender, EventArgs e)
{
if (usbNumComboBox.Items.Count <= 0)
{
MessageBox.Show("没有发现串口,请检查线路!");
return;
}
if (ComDevice.IsOpen == false)
{
ComDevice.PortName = usbNumComboBox.SelectedItem.ToString();
ComDevice.BaudRate = Convert.ToInt32(baudComboBox.SelectedItem.ToString());
ComDevice.Parity = (Parity)Convert.ToInt32(jiaoYanBitComboBox.SelectedIndex.ToString());
ComDevice.DataBits = Convert.ToInt32(dataBitComboBox.SelectedItem.ToString());
ComDevice.StopBits = (StopBits)Convert.ToInt32(stopBitComboBox.SelectedItem.ToString());
try
{
ComDevice.Open();
usbOpenButton.Enabled = false;
usbCloseButton.Enabled = true;
ComDevice.DataReceived += new SerialDataReceivedEventHandler(usbDataReceived);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
}
}
3、usbDataReceived函数(数据接收函数)
public void usbDataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte[] ReDatas = new byte[ComDevice.BytesToRead];
ComDevice.Read(ReDatas, 0, ReDatas.Length);//读取数据
//以下为显示数据(默认HEX)
StringBuilder sb = new StringBuilder();
string text = sb.ToString().ToUpper();
for (int i = 0; i < ReDatas.Length; i++)
{
sb.AppendFormat("{0:x2}" + " ", ReDatas[i]);
}
receviedTextBox.AppendText(sb.ToString().ToUpper());
}
4、如果报出线程问题
需要在load函数中加入
Control.CheckForIllegalCrossThreadCalls = false;