VB.NET异步委托调用实现串口的自收自发
来源:互联网 发布:提高口语 知乎 编辑:程序博客网 时间:2024/05/29 02:51
原贴地址:http://blog.sina.com.cn/s/blog_7223c1af0100nryn.html
PS:不用异步,有时问题很是莫名其妙,郁闷了很久才想到是这个的原因
本文在VB.NET中利用异步委托调用的方法,将串口的自收自发放进一个单独线程,具体实现如下:(1)声明代理(委托) Private Delegate Sub dele_1()(2)定义自收自发函数 Private Sub Communicate() SerialPort1.Open() SerialPort1.WriteLine(txtSend.Text.Trim()) System.Threading.Thread.Sleep(100) txtShow.Text = SerialPort1.ReadExisting() SerialPort1.Close() End Sub(3)定义异步回调函数 Private Sub result(ByVal ar As IAsyncResult) '获得委托对象的引用 Dim deleg As dele_1 = DirectCast(ar.AsyncState, dele_1) deleg.EndInvoke(ar) End Sub(4)点击按钮Button时,开始异步掉用;在BeginInvoke的第一个参数中获得异步回调函数的地址,线程结束后自动执行异步回调函数 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim dele As New dele_1(AddressOf Communicate) '开始异步调用 Dim ar As IAsyncResult ar = dele.BeginInvoke(New AsyncCallback(AddressOf result), dele) End Sub(5)窗体Load事件 '下面这句话很重要,使得异步出来的线程可以访问主线程创建的控件 Control.CheckForIllegalCrossThreadCalls = False '串口初始化 SerialPort1.PortName = "COM1" SerialPort1.BaudRate = 9600 SerialPort1.StopBits = IO.Ports.StopBits.One SerialPort1.Parity = IO.Ports.Parity.None SerialPort1.ReadTimeout = 3000 SerialPort1.DataBits = 8 txtSend.Text = "11111111"(6)调试运行 实现了串口的自收自发。 本文还有很多不足之处,请大家多多指点。
- VB.NET异步委托调用实现串口的自收自发
- 树莓派_Linux串口编程_实现自发自收
- vb.net的委托调用
- linux uart 串口自发自收例程
- 基于UART实现数据的自发自收
- 树梅派应用41:树莓派Linux串口编程实现自发自收
- Debug...210WinCE出现串口挂485发送的同时又自发自收的现象
- Debug...210WinCE出现串口挂485发送的同时又自发自收的现象
- Debug...210WinCE出现串口挂485发送的同时又自发自收的现象
- VB.NET 串口异步访问
- 嵌入式linux串口通信自发自收测试程序
- 使用委托的异步调用实现线程
- vb.net的异步读写数据流(使用线程、委托)
- vb.net的异步读写数据流(使用线程、委托)
- [VB.NET]委托调用---invoke
- [VB.net]调用系统自带的 zLib.dll 实现 ZIP 压缩
- 线程、委托的异步调用
- C#委托的异步调用
- MySQL 内部函数简介
- Firebug 控制台详解
- 关于工资的三个秘密
- [转]如何建立个人品牌
- IOS之地图和定位应用开发
- VB.NET异步委托调用实现串口的自收自发
- Android 实现文件打开方式可供选择功能
- 静态 static
- 如何从iphone中获取无线网络参数,包括运营商网络和WiFi?
- 正确区分v o i d 与v o i d *
- ASP.NET(WCF)操作Word的权限配置
- android分辨率详解
- JavaScript程序执行顺序
- hdu 4485 B-Casting