上位机软件,尤其是串口监听软件是我们常用到的工具。这里我讲解一下使用VB.NET时,串口控件的使用和串口的配置。
一、认识串口控件,名称SerialPort,调用方式如下图所示。
二、串口常用参数说明:
|
名称 |
说明 |
|
BaseStream |
获取SerialPort对象的基础Stream对象。 |
|
BaudRate |
获取或设置串行波特率。 |
|
BreakState |
获取或设置中断信号状态。 |
|
BytesToRead |
获取接收缓冲区中数据的字节数。 |
|
BytesToWrite |
获取发送缓冲区中数据的字节数。 |
|
CDHolding |
获取端口的载波检测行的状态。 |
|
Container |
获取IContainer,它包含Component。 (从Component继承。) |
|
CtsHolding |
获取“可以发送”行的状态。 |
|
DataBits |
获取或设置每个字节的标准数据位长度。 |
|
DiscardNull |
获取或设置一个值,该值指示 Null 字节在端口和接收缓冲区之间传输时是否被忽略。 |
|
DsrHolding |
获取数据设置就绪 (DSR) 信号的状态。 |
|
DtrEnable |
获取或设置一个值,该值在串行通信过程中启用数据终端就绪 (DTR) 信号。 |
|
Encoding |
获取或设置传输前后文本转换的字节编码。 |
|
Handshake |
获取或设置串行端口数据传输的握手协议。 |
|
IsOpen |
获取一个值,该值指示 SerialPort 对象的打开或关闭状态。 |
|
NewLine |
获取或设置用于解释ReadLine和WriteLine方法调用结束的值。 |
|
Parity |
获取或设置奇偶校验检查协议。 |
|
ParityReplace |
获取或设置一个字节,该字节在发生奇偶校验错误时替换数据流中的无效字节。 |
|
PortName |
获取或设置通信端口,包括但不限于所有可用的 COM 端口。 |
|
ReadBufferSize |
获取或设置 SerialPort 输入缓冲区的大小。 |
|
ReadTimeout |
获取或设置读取操作未完成时发生超时之前的毫秒数。 |
|
ReceivedBytesThreshold |
获取或设置DataReceived事件发生前内部输入缓冲区中的字节数。 |
|
RtsEnable |
获取或设置一个值,该值指示在串行通信中是否启用请求发送 (RTS) 信号。 |
|
Site |
获取或设置 Component 的ISite。 (从Component继承。) |
|
StopBits |
获取或设置每个字节的标准停止位数。 |
|
WriteBufferSize |
获取或设置串行端口输出缓冲区的大小。 |
|
WriteTimeout |
获取或设置写入操作未完成时发生超时之前的毫秒数 |
三、代码例程
1、串口配置代码
Sub PortStart() 'SerialPort1.PortName = COMX'计算机串口设置 X,是串口号。可以使用下列列表框选择。 SerialPort1.BaudRate = 9600 ‘波特率设置 SerialPort1.DataBits = 8 '数据位设置 SerialPort1.StopBits = StopBits.One '停止位设置
SerialPort1.Encoding = Encoding.UTF8
SerialPort1.DtrEnable = True SerialPort1.ReadTimeout = 500'超时时间 SerialPort1.NewLine = vbCrLf '行结束符合
End Sub
2、计算机串口读取
Sub GetSerialPortNames() '计算机串口读取 For Each sp As String In My.Computer.Ports.SerialPortNames CompList.Items.Add(sp) ‘CompList是一个下列框控件,这里修改为你的下列框名称 Next CompList.Text = CompList.Items(0) End Sub
3、串口打开
Sub PortOpen() Try SerialPort1.Open() Call PortStart() Catch ex As UnauthorizedAccessException MsgBox("串口被占用或串口错误!",MsgBoxStyle.Information,"提示!") End Try
End Sub
4、串口关闭
Sub PortOpen() Try SerialPort1.Close() Catch ex As Exception MsgBox("串口未打开或串口异常!","提示!") End Try End Sub
5、串口读取数据
Sub ComRec() Dim Rxstr As String
Try Rxstr = SerialPort1.ReadLine ’读取一个新行 Application.DoEvents() ComTxT.AppendText(Rxstr) ‘读取到的数据添加到文本框中显示 Catch e As TimeoutException ’当超时以后,读取串口所有的数据
Rxstr = SerialPort1.ReadExisting ComTxT.AppendText(Rxstr) Application.DoEvents()
End Try
6、发送数据
SerialPort.Write,将数据写入串行端口输出缓冲区。
|