1 void comm_DataReceived(object sender, SerialDataReceivedEventArgs e)
2 {
3 int n = comm.BytesToRead;//先记录下来,避免某种原因,人为的原因,操作几次之间时间长,缓存不一致
4 byte[] buf = new byte[n];//声明一个临时数组存储当前来的串口数据
5 received_count += n;//增加接收计数
6 comm.Read(buf, 0, n);//读取缓冲数据
7 builder.Remove(0, builder.Length);//清除字符串构造器的内容
8 //因为要访问ui资源,所以需要使用invoke方式同步ui。
9 this.Invoke((EventHandler)(delegate
0 {
1 //判断是否是显示为16禁止
2 if (checkBox3.Checked)
3 {
4 //依次的拼接出16进制字符串
5 foreach (byte b in buf)
6 {
7 builder.Append(b.ToString("X2") + " ");
8 }
9 }
0 else
1 {
2 //直接按ASCII规则转换成字符串
3 builder.Append(Encoding.ASCII.GetString(buf));
4 }
5 //追加的形式添加到文本框末端,并滚动到最后。
6 richTextBox1.AppendText(builder.ToString());
7 //修改接收计数
8 label7.Text = "接收字节数:" + received_count.ToString();
9 }));
0 }
1:请问下这边9的地方多了个}啊?而且编译的时候还是对的呢。删掉反而报错了。
2:关于这个invoke页不知道是干嘛的,msdn上查的说是用来多线程调用界面控件方法。
不知道这方法在什么情况下开始工作啊?
谢谢了
Invoke你去看看帮助吧