2013-03-03 2 views
1

Я работаю над проектом, в котором RS232 подключен через USB-порт ноутбука/ПК. Я уже создал приложение vb.net. Поскольку приложение загружается в первый раз, ему необходимо обнаружить последовательный порт. На данный момент я вручную помещаю имя порта в свойства serialport, но если я разверну свое приложение, и если я использую другой ноутбук/ПК, произошла ошибка: 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(), я не знаю, что делать дальше.

+0

Будет ли это работать: В то время как (счетчик = 0) SerialPort1.PortName = myPort (я) SerialPort1.Open() Если SerialPort1.IsOpen Тогда счетчик = 1 End If я = я + 1 End While счетчик = 0 Err мой кабель на плохое настроение хехе не могу обнаружить мой компьютер. –

+0

Как вы узнали, есть ли подключенное устройство или нет? Он постоянно отправляет данные? Отвечает ли она конкретной команде? – dbasnett

ответ

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) получит имена последовательных портов.

0

Я предоставляю список и заполняю его всеми портами в системе. Пользователь должен выбрать COM-порт, после которого вы назначаете это имя порта для последовательного порта.
код выглядит следующим образом Dim 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()