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


von Jörg D. (jojo150272)


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 ?

von Timmo H. (masterfx)


Lesenswert?

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

von Jörg D. (jojo150272)


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.

von Timmo H. (masterfx)


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.

von Jörg D. (jojo150272)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.