/*************非常重要(串口接收事件)*************/
serialPort1.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);//必须手动添加事件处
}
private void port_DataReceived(object sender, SerialErrorReceivedEventArgs e)//串口数据接收事件
{
if (!radioButton3.Checked)//如果接收模式为字符模式
{
string str = serialPort1.ReadExisting();//以字符串形式接收
textBox1.AppendText(str);//相当于textBox1.Text+=str;//添加内容
}
else//如果接受模式为数值接收
{
byte data;
data = (byte)serialPort1.ReadByte();//此处需要强制类型转换,
//将int类型转换为byte类型
string str = Convert.ToString(data, 16).ToUpper();//转化为大写16进制字符串
if (str.Length == 1)
{
str = "0" + str;
}
else
{
str = str;
}
textBox1.AppendText("0x"+str);
}
}
serialPort1.DataReceived +=后面直接tab键让VS自动生成函数,不要自己乱加参数
SerialErrorReceivedEventArgs 这个类型明显是错误的,应该是串口接收事件,不是串口故障事件