mikrocontroller.net

Forum: PC-Programmierung VB.net soll Daten vom Atmel 2561 empfangen


Autor: Jörg Droß (jojo150272)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

Habe mal ein Problem wo ich beim lesen im Forum nicht weitergekommen bin 
und brauche jetzt mal Hilfe von euch. Habe ein Problem bei einem VB.net 
Programm welches mit meinem Atmega 2561 sprechen soll. Da ich mit VB.net 
noch nicht so viel Erfahrung habe weiß ich nicht was ich verkehrt mache.

Ich möchte vom Atmega Daten empfangen. Es soll ein String mit dem Wert 
"EIN" oder "Aus" zum Computer gesendet werden.

Jetzt mein Problem, wie muß ich das anstellen ?

Habe es bis jetzt so versucht, aber mein Programm hängt sich dann auf:

        ComPort.Open()
        ComPort.Write("6")
        ComPort.Close()

        ComPort.Open()
        Dim S_CH01 As String
        S_CH01 = ComPort.ReadLine()
        ComPort.Close()

        If S_CH01 = "Ein" Then
            cmdKanal_01.BackColor = Color.Green
        Else
            cmdKanal_01.BackColor = Color.Red
        End If

Das senden zum VB Programm klappt wirklich gut, nur wie kann ich Daten 
empfangen ?

Bräuchte wirklich dringend Hilfe.

Gruß Jörg

PS: Suche noch ein Buch wo ich sowas nachschlagen kann. Könnt Ihr mir 
ein Buch oder einen Kurs empfehlen ?

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>ComPort.ReadLine()
Liest eine Zeile ein, schickt dein µC denn ach ein CR+LF?? Sonst wartet 
VB da nämlich drauf

Autor: Jörg Droß (jojo150272)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Timo,

danke für deine Antwort. Wie sende ich den CR+LF von Bascom aus, sende 
die Daten per print #2, "Ein".

Dann sollte er auch CR LF senden.

Der Code in Bascom:

   Config Com2 = 115200 , Synchrone = 0 , Parity = None , Stopbits = 1 ,
   Databits = 8 , Clockpol = 0
   Open "com2:" For Binary As #2

      Enable Interrupts
      Echo On
         Readeeprom S_speicher_ein_aus_a , &H9C0
            Print #2 , "Ein"
   Close #2

Gruß Jörg, der noch weitere Hilfe braucht.

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ComPort.Close()

ComPort.Open()

Evtl. ist das zu schnell hintereinander. Du testest ja gar nicht auf 
ComPort.IsOpen. Und wieso machst du ihn überhaupt zu wenn du ihn eh 
wieder aufmachst? Ich würde den auf machen, die "6" senden dann eine 
Endlosschleife machen und dafür ein DataReceived-Event verwenden um ein 
Flag zu setzen, welche dann die Schleife verlässt.

Autor: Jörg Droß (jojo150272)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Timmo,

erstmal danke für deine Antwort.

Wie teste ich ob der ComPort offen ist und wie bin ich zu schnell ?

Gruß Jörg

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.