1、(1)程序设计 在窗体的通用部分定义两个全局数组 ReceiveData、SendData,用于存放接收和发送串口的数据,这两个数组都是动态数组,根据实际情况决定数组的存储空间。Option Explicit 检查未经声明的变量Dim ReceiveData() As Byte 接收数据字节数组Dim SendData() As Byte 发送数据字节数组 窗体初始化操作,在窗体的 Load 事件中初始化串口。Private Sub Form_Load()With MSComm1.CommPort = 1 第一串行口If .PortOpen = True Then .PortOpen = Fa
2、lse.Settings = “9600,N,8,1“ 定义传输格式.InputMode = comInputModeBinary 数据格式-二进制.RThreshold = 1 收到数引发 OnComm 事件.InputLen = 0 一次读缓冲区全部数据.PortOpen = True 打开串行口.InBufferCount = 0 清空接收缓冲区.OutBufferCount = 0 清空发送缓冲区End WithtxtSend.Text = “txtReceive.Text = “End Sub 双击通信控件,先在其 OnComm 事件中以 Select Case 语句输入事件的相关常
3、数定义,接着在接收事件的项目中输入读取数据的程序代码,并将读取到的程序代码输入txtReceive 控件的 Text 属性内。程序代码如下:Private Sub MSComm1_OnComm()Dim d1 As LongSelect Case MSComm1.CommEvent 事件Case comEvCD CD 线状态发生变化Case comEvCTS CTS 线状态发生变化Case comEvDSR DSR 线状态发生变化Case comEvRing 发生振铃指示Case comEvReceive 收到 RThreshold 个字节数据延时等待接收更多的数据MSComm1.RThres
4、hold = 0 收到数据不产生 OnComm 事件d1 = Timer()DoDoEventsLoop Until Timer() - d1 0.1ReceiveData = MSComm1.Input数据送显示For i = 0 To UBound(ReceiveData)txtReceive.Text = txtReceive.Text & Chr(ReceiveData(i)Next iMSComm1.RThreshold = 1 收到数据立即产生 OnComm 事件Case comEvSend 有 SThreshold 个字节数据在发送缓冲区中Case comEvEOF 输入数据流中
5、发现 EOF 字符End SelectEnd Sub 双击 cmdSend 命令按钮控件,在其 Click 事件中输入以下的程序:Private Sub CmeSend_Click()dim i as Integer将发送文本中的数据送到发送缓冲区If Len(txtSend.Text) = 0 Then Exit SubReDim SendData(Len(txtSend.Text)For i = 0 To Len(txtSend.Text) - 1SendData(i) = Asc(Mid(txtSend.Text, i + 1, 1)Next i发送数据MSComm1.Output = SendDataEnd Sub 双击 cmdClear 命令按钮控件,在其 Click 事件中输入以下的语句:txtReceive.Text = “ 双击 cmdExit 命令按钮控件,在其 Click 事件中输入关闭程序的语句:End 在窗体的 Unload 事件中关闭通信端口,程序代码如下:If MSComm1.PortOpen = True Then MSComm1.PortOpen = False