|
经过不停的看别人的代码,自己瞎写,修改,终于搞定了serialport的接收了!恩,用的是中断的方式
下面上代码
view plaincopy to clipboardprint?
1. this.serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.DataReceived);
2.
3. private void DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
4. {
5. string data = serialPort1.ReadExisting();
6. updateReceiveText(data);
7. }
8.
9.
10. public void updateReceiveText(string msg)
11. {
12. Text2Receive.Invoke(new EventHandler(delegate
13. {
14. Text2Receive.AppendText(msg);
15. Text2Receive.ScrollToCaret();
16. }));
17. }
可以看出这个接收程序一共有鲜明的三段
第一段是设定serialport1的接收中断开(因为是搞单片机的,我就这么理解了...)
并且将中断子程序的名称设置为了DataReceived
第二段就是中断子程序了,当SerialDataReceived这个事件发生时,将串口缓冲区的存在的数据送给本函数里面的data,并通过
显示函数updateReceivedText()给他在Textbox里面显示出来;
第三段就是如何显示,这一段的Invoke方法我没有太明白,但下面两个函数还是介绍一下啦,就是将送给本函数的msg值给TextBox,
并将其添加到已有的数据后面,所以用的是.AppendText。
而.ScrollToCaret应该是将当前显示移动到刚刚变化的这一行来
我是这么理解的,哈哈。
点击此处下载 ourdev_517279.rar(文件大小:64K) (原文件名:serial.rar)
点击此处下载 ourdev_517280.rar(文件大小:83K) (原文件名:SerialPortTerminal.rar)
源程序在此 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|