www.mikrocontroller.net

Forum: PC Hard- und Software Visual Basic: Empfangen über COM-Port


Autor: Manu N. (avr-manu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
n´Abend,

Ich besitze Visual Basic 2008 Express Edition
und habe heute zum ersten mal versucht damit Daten
über die serielle Schnittstelle zu Senden.
Das klappt auch so weit. Hier mein einfacher Code:

 ser.Close()
        ser.Open()
        ser.Write("asdf")
        ser.Close()

Nun möchte ich aber einfach einen Text empfangen,
so wie bei einem AVR.(In Bascom: Input)
Wie bewerkstellige ich das mit Visual Basic.
Welchen Befehl muss ich da verwenden?
Ich will also das z.B. mein AVR "Hallo Welt" sendet,
und das dann in meiner Anwendung angezeigt wird.

Vielen Dank schonmal,
Manu

Tante Edit:
Oh mist, ins falsche Forum. Gehört eigentlich in PC-Programmierung.
Könnte das bitte jemand verschieben ?

Autor: Jonas G. (jonny)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

das hier hilf schonmal weiter, wenn du es ohne ein Steuerelement machst: 
http://support.microsoft.com/kb/904795

Ansonsten:
Wenn du auf das Symbol für den Serialport auf deinem Formular klickst, 
kannst du das Event für den Empfang in deinem Code benutzen.

Dann kannst du dort auf die Empfangenen zeichen zurückgreifen.

Autor: Manu N. (avr-manu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Igergend wie funktioniert das bei mir nicht.
Dieses Port Symbol hab ich schon reingepackt.
Kannst du mal den kompletten Code Posten ?
Wie gesagt, ich benutze die Express Edition.
Wie mache ich z.B. das der Empfangene Text
(in einem LAbel) Dargestellt wird ?
Also wie in einem Terminalprogramm.

Autor: Jonas G. (jonny)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tut mit leid ich arbeite z.Z. an meinem MAC und jetzt Windows über 
VMware zu starten... Nein.

Aber ich versuche es dir nochmal zu erklären.

Schritt 1: SerialPort Steuerelement auf das Formular ziehen (hast du ja)
Schritt 2: Auf das Symbol klicken. Im Eigenschaften-Fensteter 
(http://openbook.galileocomputing.de/visual_basic/b...) 
kann man jetzt Einstellungen vornehmen.
In der Symbolleiste auf den Blitz klicken.

Schritt 3: Das Event fürs empfangen auswählen. (Name weiß ich nicht 
genau)
Durch einen Doppelklick auf den Namen des Events, springt man 
automatisch in den Code und zwar in die Methode, die aufgrufen wird, 
wenn die Schnittstelle etwas empfängt.

Schritt 4: Über die Methoden, die im Link (in meinem erster Post) 
stehen, die empfangene Zeile auslesen.

Schritt 5: Text des Labels setzten...

Grundlagen
Siehe: http://openbook.galileocomputing.de/visual_basic/index.htm
Das meisnte gilt auch für VB 2008

Autor: juppi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du den Text direkt ins Label laden willst ,mußt du mit invoke 
arbeiten.

Als Test ,setze einen Timer auf 100 ms
im TimerTick kannst du die eingelesene Variable in eine Textbox oder 
Label Laden.

Autor: tobiasr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich ahbe was ähnliches, allerdings in VB6, realisiert.
Funktioniert so weit auch ganz gut!

Leider hängt sich der Port von Zeit zu Zeit auf was das Empfangen 
angeht.
Senden ist dann weiterhin möglich.

Hat jemand ne Idee woran das liegt?

Hier mein Code:

***
Private Sub MSComm1_OnComm()

On Error GoTo Fehlerliste


  Select Case MSComm1.CommEvent

   Case comOverrun:   MsgBox "Datenverlust!"
    Case comRxOver:    MsgBox "Datenverlust!"
    Case comEvReceive:  Me.Text1 = Me.Text1 + MSComm1.Input
    Case comEventBreak:     MsgBox " 1001 Es wurde ein Anhaltesignal 
(Break-Signal) empfangen."
    Case comEventFrame: MsgBox " 1004 Datenblockfehler (Framing Error). 
Die Hardware hat einen Datenblockfehler entdeckt."
    Case comEventRxParity: MsgBox " 1009 Paritätsfehler (Parity Error). 
Die Hardware hat einen Paritätsfehler entdeckt."
    Case comEventTxFull: MsgBox " 1010 Sendepuffer voll (Transmit Buffer 
Full). Bei dem Versuch, ein Zeichen in die Warteschlange aufzunehmen, 
wurde festgestellt, daß der Sendepuffer voll war."
    Case comEventDCB: MsgBox "1011 Unerwarteter Fehler beim Abrufen des 
Device Control Block (DCB) für den Anschluß. "

  End Select

Debug.Print MSComm1.Input

vari1ende = InStr(Me.Text1, "#")

If vari1ende > 20 Then

Haus.ComEingang = Me.Text2
Me.Text2 = Left(Me.Text1, vari1ende)
Me.Protokoll1 = Time & " - " & Me.Text2 & Me.Protokoll1

Autor: Tobias R. (elkokiller)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, war nicht angemeldet. Der letzte Beitrag war von mir....

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.