如何在vb.net中编程自动检测串行端口
问题描述:
我正在通过笔记本电脑/ PC的USB端口连接RS232的项目。我已经创建了vb.net应用程序。当应用程序第一次加载时,它需要检测串行端口。到目前为止,我手动将端口名放在串口的属性中,但是如果我部署我的应用程序,并且如果使用其他笔记本电脑/ PC,则会出现错误:运行我的GUI时发生System.IO.IOException。我想编程serialport的自动检测,但我是vb.net中的串口编程的新手。如何在vb.net中编程自动检测串行端口
任何人都可以帮助我吗?谢谢!
这是我的程序的某些部分:
Imports System.IO.Ports
Public Class Form1
'Dim myPort As Array
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
'myPort = IO.Ports.SerialPort.GetPortNames()
SerialPort1.Open()
Timer1.Enabled = True
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
'==zigbee sent data to the app====
Console.Beep(3000, 1000) 'high tone buzzer whenever there is a notification received
MsgBox("THERE IS A NOTIFICATION RECEIVED!")
uart_rx = Me.SerialPort1.ReadExisting
toDisplay = toDisplay + uart_rx
flag = 1 'there is a notification sent
End Sub
....
后MyPort上= IO.Ports.SerialPort.GetPortNames(),我不知道下一步该怎么做。
答
有证据显示这是如何在以下网页做了一个例子:http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx
在提示用户输入串行端口设置之前,应用程序和端口进行通信的例子。
SerialPort.GetPortNames(http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.getportnames.aspx)将获得串行端口的名称。
答
我提供一个列表框并用系统上的所有端口填充它。用户必须选择COM端口,然后将该端口名称分配给串行端口。
代码如下 昏暗SP作为字符串
Private Sub frmSelectPort_Load(sender as Object, e as
System. EventArgs) Handles Me. Load
GetSerialPortnames
End Sub
Sub GetSerialPortnames() For Each SP In My. Computer.
SerialPortNames
Listbox1. Items. Add(sp)
End Sub
(Under button click event)
SP =Listbox1. SelectedItem
SerialPort1. PortName=SP
SerialPort1. Open()
将这项工作:当(计数器= 0) SerialPort1.PortName = MyPort上(ⅰ) SerialPort1.Open() 如果SerialPort1.IsOpen然后 计数器= 1 结束如果 I = I + 1 端,而 计数器= 0 错误我的电缆是心情不好嘿嘿不能检测到我的电脑。 – 2013-03-03 08:45:04
如何知道是否有设备连接?它是否连续发送数据?它是否对特定命令作出响应? – dbasnett 2013-03-03 14:40:32