这是分配给COM1 的USB连接的RS-232C 1端口型号 COM-1(USB)H ,使用接收事件处理,非同步地从接收缓冲区读入来自对象装置的发送数据。例如,这是在条码读取数据时或者计测器完成计测时,读入接收数据时的有效方法。这是使用Delegate和Invoke方法,在文本框中显示接收数据的程序例子。
启动Visual Basic 2005 ,创建新项目,创建左图所示的画面。将SerialPort组件粘贴在画面上。确认SerialPort组件的属性的内容(设置波特率等通信参数)。
添加点击连接按钮、断开按钮时的处理。在Form1.vb记述以下代码。双击各对象(按钮等),如果双击按钮,记述按钮被按下时的处理的程序文件打开。在此记述想进行的处理
Private Sub Button1_Click(... → 连接按钮被按下时的处理 Try ' 例外处理开始 If SerialPort1.IsOpen = True Then ' 端口已打开 MessageBox.Show("错误", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If SerialPort1.PortName = TextBox1.Text ' 存储要打开的端口名 SerialPort1.Open() ' 端口开 Catch ex As Exception ' 例外处理 MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK,MessageBoxIcon.Error) End Try SerialPort1.RtsEnable = True ' 接通RTS End Sub
Private Sub Button2_Click(... → 断开按钮被按下时的处理 If SerialPort1.IsOpen = True Then ' 端口已打开 SerialPort1.Close() ' 端口关闭 End If End Sub
对Delegate的描述 Delegate Sub DataDelegate(ByVal sdata As String)
定义被Invoke方法调用的方法(函数) Private Sub PrintData(ByVal sdata As String) TextBox2.Text = sdata End Sub
Private Sub SerialPort1_DataReceived(ByVal... → 记述发生接收事件时的处理 Dim ReceivedData As String = " " ' 描述接收数据用变量 Try ReceivedData = SerialPort1.ReadLine ' 接收数据 Catch ex As Exception ReceivedData = ex.Message ' 进行例外处理 End Try ' 将Delegate描述到被Invoke方法执行的方法,显示接收数据 Dim adre As New DataDelegate(AddressOf PrintData) Me.Invoke(adre, ReceivedData) End Sub
To PageTop