数据发送 - Visual Basic 2005 串行通信程序

这是分配给COM1 的USB连接的RS-232C 1端口型号 COM-1(USB)H ,连同默认分隔符在内,发送输入文本框的字符串数据。

使用COM端口 COM1
通信速度 9600bps
奇偶校验设置 无(None)
数据位长度 8位
结束位 1位
握手信号 不使用
RTS线路 无效
分隔符代码 LF(Line Feed)

创建画面与设置属性

启动Visual Basic 2005 ,创建新项目,创建左图所示的画面。将SerialPort组件粘贴在画面上。确认SerialPort组件的属性的内容(设置波特率等通信参数)。

对象 TextBox1 COM1
对象 Button1 连接
对象 Button2 断开
对象 TextBox2
对象 Button3 发送

关于NewLine(分隔符代码)

分隔符代码表示数据的分隔字符、分隔符号。虽然串行端口类的默认分隔符代码是“LF”,但需要结合连接的设备设置。遵循连接设备的规格书,使用合适的分隔符代码。

  • 通过在数据上附加分隔符代码,判断连续数据的分隔。
  • 这里所说的分隔符代码与 Visual Basic 帮助文档中记载的 NewLine 值同义。
  • 如果使用WriteLine 方法,在存储在发送缓冲区内的发送数据上附加NewLine 值,然后发送。NewLine 值的默认值为 LF(Line Feed)。
  • 分隔符代码多用CR(Carriage Return)、 LF(Line Feed)、CR+LF 等。

程序记述例子

添加点击连接按钮、断开按钮时的处理。在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
End Sub
Private Sub Button2_Click(...  → 断开按钮被按下时的处理
    If SerialPort1.IsOpen = True Then   ' 端口已打开
       SerialPort1.Close()                      ' 端口关闭
    End If
End Sub
Private Sub Button3_Click(...  → 发送按钮被按下时的处理
    If TextBox2.Text.Length = 0 Then                ' 若无发送数据,则报错
        MessageBox.Show("字符串输入错误", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Exit Sub                ' 跳过处理
    End If
    
    Try
        SerialPort1.WriteLine(TextBox2.Text)       ' 将数据写入发送缓冲区
    Catch ex As Exception           ' 例外处理            
        MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK,MessageBoxIcon.Error)        
    End Try  
End Sub

在代码记述中更改分隔符代码,发送数据时,按照以下要求记述。


Dim strSend As String                       ' NewLine存储用字符串变量
 
strSend = SerialPort1.NewLine ' 取得NewLine
strSend = strSend.Replace(vbLf, vbCr)       ' 将字符中的LF转换为CR时

SerialPort1.NewLine = strSend                       ' 将置换后的分隔符存储在NewLine中

Try
  SerialPort1.WriteLine(TextBox2.Text)       ' 将数据写入发送缓冲区
Catch ex As Exception                                        ' 例外处理
     MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try

有关Try - Catch - End Try 语句结构,请确认Visual Basic 2005 的参考书。

To PageTop