搜索
bottom↓
回复: 19

c# 中serialport学习(中断接收)

[复制链接]

出0入0汤圆

发表于 2009-12-21 21:49:52 | 显示全部楼层 |阅读模式
经过不停的看别人的代码,自己瞎写,修改,终于搞定了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)


源程序在此

出0入89汤圆

发表于 2009-12-21 22:01:47 | 显示全部楼层
这个不叫中断,和中断还有很大区别的,这个控件的接收是在另外一个线程上的。和ui线程不在同一个上,为了更新界面元素,需要把操作转移到ui线程(这样才是安全的),control的invoke方法就是起到这儿作用。

出0入0汤圆

发表于 2009-12-21 22:06:44 | 显示全部楼层
【楼主位】 wangyi1e
看安哥充电器上位机软件的程序吧,那里有一段很经典的注释,关于委托的。

出0入0汤圆

 楼主| 发表于 2009-12-21 22:29:52 | 显示全部楼层
谢谢楼上两位,我一直是搞下位机的,嘿嘿! c#是刚学! 受教了

出0入0汤圆

发表于 2010-3-13 10:34:57 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-9 12:13:04 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-17 15:24:14 | 显示全部楼层
我也在学习中,正不知道怎么样去实时中断接收啦,谢谢!

出0入0汤圆

发表于 2010-11-5 15:26:57 | 显示全部楼层
这个不叫中断接受,用C#的术语叫接受事件。

出0入0汤圆

发表于 2010-12-1 14:39:52 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-9-5 15:02:53 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-11 15:25:33 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-14 15:19:10 | 显示全部楼层
谢谢

出0入0汤圆

发表于 2012-3-26 14:12:01 | 显示全部楼层
谢谢楼主分享

出0入8汤圆

发表于 2012-4-30 16:58:36 | 显示全部楼层
MARK,谢谢分享!

出0入0汤圆

发表于 2012-6-17 16:20:52 | 显示全部楼层
开始搞C#串口程序了,看到都是这么写的,不知道为什么要这样写。

出0入0汤圆

发表于 2012-6-17 16:30:54 | 显示全部楼层
我上次用C#串口事件接受数据的时候感觉速度很慢,最好还是另起线程查询吧

出0入0汤圆

发表于 2013-3-16 15:43:25 | 显示全部楼层
谢谢分享,先收藏下

出0入0汤圆

发表于 2013-3-25 23:02:45 | 显示全部楼层
MARK~,多谢LZ

出0入0汤圆

发表于 2013-3-26 08:57:00 | 显示全部楼层
hl1200aa 发表于 2009-12-21 22:06
【楼主位】 wangyi1e
看安哥充电器上位机软件的程序吧,那里有一段很经典的注释,关于委托的。 ...

我没搜索到

再试试

出0入0汤圆

发表于 2013-3-27 11:46:51 | 显示全部楼层
hl1200aa 发表于 2009-12-21 22:06
【楼主位】 wangyi1e
看安哥充电器上位机软件的程序吧,那里有一段很经典的注释,关于委托的。 ...

安哥的上位机程序
我没找到
下载的好像是安装版的
能不能告诉我链接
找了好久
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-8 01:12

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表