mikrocontroller.net

Forum: PC-Programmierung Serielle Schnittstelle in VB2005


Autor: Didi Strasser (desperatedude)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.
Ich hab ein kleines Problem mit dem schließen des Com Ports in VB2005.
Ich möchte mit meinem Programm eine Art "Sendersuchlauf" durchführen um 
von dem am Comport angeschlossenen XBee die Baudrate herauszufinden. Das 
ganze funktioniert schon ganz gut. Ich beginne mit 
serialport.write("+++") auf 1200Baud und erhöhe dann die Baudrate 
schrittweise. Wenn die Baudrate der des XBEE entspricht bekomme ich ein 
OK.
Sobald ich dieses OK gefolgt von 13 in Byte (was der Enter Taste 
entspricht) bekomme, schicke ich die init (ATBD3, usw.) für 9600Baud und 
möchte die Baudrate des PC´s siehe Codeschnippsel auf 9600 ändern. 
Leider hängt sich das Programm nach dem serialport.close() befehl auf 
sobald einmal daten empfangen worden sind.

Bitte um Hilfe!

Public Sub config_serial()


        If serialPort.IsOpen Then serialPort.Close()


        Try
            With serialPort
                .PortName = cbbCOMPorts.Text
                .BaudRate = 9600
                .Parity = IO.Ports.Parity.None
                .DataBits = 8
                .StopBits = IO.Ports.StopBits.One
                .ReadTimeout = 2000
            End With

            serialPort.Open()
        Catch ex As Exception
            MsgBox("Com Port konnte nicht geöffnet werden")
        End Try


    End Sub

Autor: juppi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Didi Strasser (desperatedude)

Wie und Was empfängst du?

Autor: Didi Strasser (desperatedude)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sobald die Baudrate vom PC mit der Baudrate des XBEE übereinstimmt, 
bekomme ich auf mein vom PC aus gesendetes +++ vom XBEE die antwort 
"OK"+ Enter
Dann weiß mein Programm das der XBEE momentan auf beispielsweise 19200 
Baud konfiguriert ist.

Zum Empfangen verwende folgende Routine

Dim Empfang in Byte

Empfang = serialport.readbyte()

If Empfang = 13 then xbee_gefunden()

ansonsten Baudrate erhöhen.

Autor: Severino R. (severino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst Du den Code denn nicht so posten, dass man die Sache einfach 
ausprobieren kann? Z.B. Projekt gezippt? Aber bitte auf das Minimum 
abgespeckt, um das Verhalten zu testen.

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. Nach einem Close() sollte eine gewisse Zeit gewartet werden, bis der 
Port wieder geöffnet wird.
http://msdn.microsoft.com/en-us/library/system.io....
2. BaudRate kann auch ohne Close()/Open() geändert werden

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.