C#串口通信接收有关问题
C#串口通信接收问题!
我现在想从串口接收中识别出是否含有我需要的字符串“CMTI”,那么应该如何写呢?
我这样写,每次运行之后就kill掉了!
------解决方案--------------------
你把你接收到的数据存放在一个数组中,然后可以逐个和你需要的字符串作比较。
------解决方案--------------------
GetString到一个string变量,然后通过string类的IndexOf判断是否存在
- C# code
void comm_DataReceived(object sender, SerialDataReceivedEventArgs e) { int n = com2.BytesToRead;//先记录下来,避免某种原因,人为的原因,操作几次之间时间长,缓存不一致 byte[] buf = new byte[n];//声明一个临时数组存储当前来的串口数据 com2.Read(buf, 0, n);//读取缓冲数据 builder.Clear();//清除字符串构造器的内容 //因为要访问ui资源,所以需要使用invoke方式同步ui。 this.Invoke((EventHandler)(delegate { //直接按ASCII规则转换成字符串 builder.Append(Encoding.ASCII.GetString(buf)); //追加的形式添加到文本框末端,并滚动到最后。 this.textBox2.AppendText(builder.ToString()); /* string text_1 = builder.ToString(); if (text_1.Substring(1, 4) == "CMTI") button1.Enabled = false;*/ })); }
我现在想从串口接收中识别出是否含有我需要的字符串“CMTI”,那么应该如何写呢?
我这样写,每次运行之后就kill掉了!
------解决方案--------------------
你把你接收到的数据存放在一个数组中,然后可以逐个和你需要的字符串作比较。
------解决方案--------------------
GetString到一个string变量,然后通过string类的IndexOf判断是否存在
- C# code
string str = "abcdefg"; if (str.IndexOf("abc") >= 0) { MessageBox.Show("有"); }