vb.net,串口操作,最新方法,不是API,不是mscomm,而是System.IO.Ports 命名空间
System.IO.Ports 命名空间包含用于控制串行端口的类。最重要的类 System.IO.Ports.SerialPort 为同步和事件驱动 I/O 提供框架,提供对插针和中断状态的访问以及对串行驱动程序属性的访问。它可用于包装 System.IO.Stream 对象,允许使用流的类访问串行端口。
依所说的,功能应该不错。说干就干,新建工程,至少有一个 listbox,一个 textbox,一个 button。
'导入命名空间
Imports System.IO.Ports
'再定义三个量
Public my_serial As New IO.Ports.SerialPort()
Public ports() As String
Public port As String
'得出当前计算机的串口
'my_serial.PortName 先赋为空值,因为其默认值是 COM1
my_serial.PortName = "None"
ports = IO.Ports.SerialPort.GetPortNames
For Each port In ports
ListBox1.Items.Add(port)
Next
现在,窗体上的 listbox1 里就有当前计算机所有的串口了。
在 listbox1 的 ListBox1_SelectedIndexChanged 事件中加入以下代码:
'为 my_serial.PortName 赋值
Select Case ListBox1.SelectedItem
Case Is = "COM1"
my_serial.PortName = "COM1"
Case Is = "COM2"
my_serial.PortName = "COM2"
Case Is = "COM3"
my_serial.PortName = "COM3"
Case Is = "COM4"
my_serial.PortName = "COM4"
End Select
至此,就已经能选择串口了。如果大家比较心急,现在就试试将其打开及关闭的操作(可将这些放到 button 的 Click 事件中):
'这是打开
my_serial.Open()
'或先判断,再打开
If my_serial.IsOpen = False Then my_serial.Open()
'这是关闭(在发送数据时不能关闭哦)
my_serial.close()
好了,现在串口是打开了,传一下数据试试吧?注意,前提是串口打开的:
Dim send_data As String
send_data = InputBox("请输入内容:")
'通过 writeline 的方式传数据
my_serial.WriteLine(send_data)
这样看来,数据是发送出去了。但我不相信,我想知道它发送的对不对?那好办,我们可以来检视一下:
TextBox1.AppendText(my_serial.ReadLine() & vbCrLf)
好了,至此,我们完成了串口的枚举,选择,数据的发送工作。
是不是很简单?
其它的,就慢慢的完善吧。
(注:如果是单机操作,可将串口的 2 、3 脚短接(9针的接法),即可实现自发自收。)