private string nstr = "";
private string mstr = "";
public void YF_DataReceived(object sender, SerialDataReceivedEventArgs e) {
int line = ComDevice.BytesToRead;
byte[] data = new byte[line]; //定义缓冲区,因为串口事件触发时有可能收到不止一个字节
ComDevice.Read(data, 0, line);
foreach(byte Member in data) //遍历用法
{
nstr += (char)Member;//读取数据
if (nstr.Length >= 4) {//判断数据是否读完,读完退出循环遍历
break;
}
}
textBox1.AppendText(nstr);
//取中间数值
int star = nstr.IndexOf("@") + 1;//读取开始位置
int end = nstr.IndexOf("!");//读取结束位置
int middle = Convert.ToInt32(nstr.Substring(star, end - star),16);//取到中间的值并转换成整数
//判断值是否改变
if (mstr != nstr) {
mstr = nstr;
SetOvlShape(middle);
textBox1.AppendText(middle + "\r\n");
}
nstr = "";//清空之前的值
}
private void SetOvlShape(int whilr)
{
switch (whilr)
{
case 0x01:
textBox1.AppendText("0x01" + "\r\n");
break;
case 0x02:
textBox1.AppendText("0x02" + "\r\n");
break;
case 0x03:
textBox1.AppendText("0x03" + "\r\n");
break;
case 0x0A:
textBox1.AppendText("0x0A" + "\r\n");
break;
case 0xAA:
textBox1.AppendText("0xAA" + "\r\n");
break;
default:
textBox1.AppendText("输入的内容不存在" + "\r\n");
break;
}
}串口通讯系列五之串口数据接收处理
最新推荐文章于 2025-06-30 10:16:46 发布
本文介绍了一个使用C#处理串口数据的例子,包括读取串口收到的数据,解析中间数值,并根据数值执行不同操作。在数据接收事件中,通过循环遍历接收到的字节,判断数据是否读取完成,从中提取16进制值并转换为整数。然后,根据这个整数的值,执行不同的处理逻辑,如输出特定的16进制值。

2万+

被折叠的 条评论
为什么被折叠?



