产品信息

编程实例2 - 通信数据发送

数据发送 - 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 的参考书。

Page Top