PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SerialPort in VB



Kampi
15.04.2012, 16:56
Hallo Forum,

ich bastel gerade bischen mit Visual Basic und meinem RN-Control rum und komme beim SerialPort nicht wirklich weiter.
Ich habe eine Form wo ein Button und zwei Textfelder drauf sind. In die Textfelder gibt man die Baudrate und den COM-Port ein und klickt dann auf Verbinden. Sobald eine Verbindung hergestellt wurde, wird ein zweiter Button enabled der eine zweite Form aufruft. Diese Form soll den Mikrocontroller nach den ADC-Werten fragen und den Wert für jeden ADC-Pin in einem Textfeld darstellen.
Mein Problem ist folgendes:
Wie schaffe ich es das man sich mit dem eingestellten COM-Port und die Baudrate verbindet und diese Einstellungen dann in die zweite Form übernommen werden? Desweiteren brauche ich eine Möglichkeit wie der SerialPort1 aus der Form1 auch in Form2 aktiv bleibt und da genutzt werden kann. Ich habe es bisher so probiert das Form1 und 2 jeweils einen SerialPort hatte und das wenn man Form 2 aufruft der Port in Form1 geschlossen wird und in Form 2 geöffnet. Aber für den umgedrehten Weg (also Form2 und den Port schließen und gleichzeitig in Form1 öffnen) klappt noch nicht.
Und ich konnte die Parameter des COM-Portes auch nicht übergeben, sprich ich musste fest definierte Werte nehmen (und ein zweites Fenster zum Verbinden usw. ist irgendwie nicht schön).
Hat jemand eine Lösung für dieses Problem?
Danke für die Hilfe.

Neutro
15.04.2012, 20:08
Hallo Kampi,

du kannst die Serial port Parameter ganz einfach ändern z.B so:
serial Port1.baudrate = 9600
oder wenn du mehrere Baudraten auswählen willst schreibst du einfach:
If Textbox 1. Text = 9600 Then
serialport1.Baudrate =9600
end if

Du kannst das natürlich auch mit den Portnamen genauso machen. Du musst aber beachten das du den Serialport schließen musst wenn du die Werte ändern willst, sonst kommt eine Fehlermeldung, die du aber mit der exeption Handling abfangen kannst.

Bei dem Problem mit den mehrern Formularen kann ich dir aber nicht weiterhelfen, ich habe die Main Form immer im Hintergrund laufen lassen.
Wenn du Variablen aus der Main Form in der Form2 anzeigen lassen willst, musst du diese als Public deklarien deklarien.

Mfg
Neutro

Kampi
15.04.2012, 20:38
Hi,

danke für deine Antwort. So wie du das geschrieben hast verwende ich es bereits.
Mein Code ist der folgende:


Try
SerialPort1.PortName = "COM" & COM_Port.Text
SerialPort1.BaudRate = Baudrate.Text
SerialPort1.Open()

Verbinden.Enabled = False
Trennen.Enabled = True
Senden.Enabled = True
Eingabe.Enabled = True
LED_aktivieren.Enabled = True
ADC.Enabled = True
COM = COM_Port.Text
Baud = Baudrate.Text

Catch ex As Exception

MsgBox("Verbindungsfehler!")

End Try


Der wird ausgeführt sobald man auf den Verbinden-Button drückt.
Wenn ich nun einfach schreibe:



Public COM As byte
Public Baud As Integer

COM = COM_Port.Text
Baud = Baudrate.Text
SerialPort1.PortName = "COM" & COM
SerialPort1.BaudRate = Baud


Dann würden die Parameter auch für jede andere Form gelten? Wenn ja wäre ein Problem schonmal erledigt :)
Dann muss ich nur noch wissen wie man den COM schließt und in einer anderen Form öffnet wenn man einen Button drückt. Außerdem muss dieser COM dann in der zweiten Form geschlossen werden und in der ersten wieder geöffnet werden, wenn man die zweite Form schließt.

Neutro
16.04.2012, 18:03
Hallo Kampi,
den Com Port schließen kannst du mit Serialport1.close().
Aber wie du den Com Port in die X. Form übergeben kannst weiß ich leider auch nicht.
Vielleicht kannst du mal versuchen Variablen als Merker zu verwenden die eben bei bestimmten bedingungen gesetzt und ausgewertet
werden können. z.B

If serialport1.open then
Merker =1
else
Merker =0
end if

und in der 2. Form dann:
If Merker = 1 Then
Serialport1.open
else
Serialport1.close
end if

Wäre ja einen Versuch wert.

Kampi
16.04.2012, 18:36
Hi,

danke für den Tip.
Ich probiere es nachher mal aus.