1

我正在开发一个通过笔记本电脑/PC 的 USB 端口连接 RS232 的项目。我已经创建了 vb.net 应用程序。当应用程序第一次加载时,它需要检测串口。到目前为止,我手动将端口名放入串行端口的属性中,但是如果我部署我的应用程序并且如果我使用其他笔记本电脑/PC,则会出现错误:运行我的 GUI 时出现 System.IO.IOException。我想对串口的自动检测进行编程,但我是 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() 之后,我不知道下一步该做什么。

4

2 回答 2

0

有一个示例显示了如何在以下网页上完成此操作: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 ) 将获取串行端口的名称。

于 2013-03-03T08:57:33.080 回答
0

我提供了一个列表框并用系统上的所有端口填充它。用户必须选择 com 端口,然后将该端口名称分配给串行端口。
代码如下 Dim SP as string

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() 
于 2018-02-01T14:23:01.483 回答