Input wartet auf das CR (Return) das LF (Linie Feed) ist input egal und das String Ende wird durch eine NULL gekennzeichnet. Ob das VbCrLf zusammen gesendet stört? Im Bascom Programm ist Dim X As String * 10 schon richtig.
Gruß Richard
Input wartet auf das CR (Return) das LF (Linie Feed) ist input egal und das String Ende wird durch eine NULL gekennzeichnet. Ob das VbCrLf zusammen gesendet stört? Im Bascom Programm ist Dim X As String * 10 schon richtig.
Gruß Richard
ich vermute auch, daß das LF am Schluß Probleme bringt. Schau mal den CONFIG INPUT Befehl an. Dort kann man festlegen, welche/s Zeichen INPUT beendet. Default ist nur CR.
Gruß
Searcher
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Wegzu einigen meiner Konstruktionen
Hallo Wsk8!
Ich habe deinen Code eingebaut und ausprobiert, aber es hat leider trotzdem nicht funktioniert.
Hallo Richard!Input wartet auf das CR (Return) das LF (Linie Feed) ist input egal und das String Ende wird durch eine NULL gekennzeichnet.
In VB habe ich jetzt das vbCrLf durch vbCr ersetzt und auch das hat nicht geholfen. Muss ich das mit der Null am Ende des Strings noch einbauen?
Das komische an der ganzen Sache ist ja, dass es immer das erste Mal funktioniert. Also wenn ich den ATmega einschalte und dann den "aus"-Button
drücke, dann geht die Led aus nur dann geht sie nicht mehr an. Also irgendwie funktioniert die erste Übertragung, aber alle weiteren nicht mehr.
Du musst den String auch immer leeren.
Weil sonst kommt bei der ersten Übertragung ein "Aus" da rein und das steht dann da drin. Dann kommt die Abfrage und bei einer zweiten Übertragung kommt noch ein "Aus" oder "An" da rein und dann steht "AusAn" oder "AusAus" in dem String.
In VB bin ich nicht so fit. Könnte es sein, das beim Senden die "SerialPort1.WriteLine" schon von sich aus ein CRLF anhängt und mit dem & vbCrLf noch weitere angehangen werden? Gibt es ein "SerialPort1.Write"?
Gruß
Searcher
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Wegzu einigen meiner Konstruktionen
Hallo Searcher!
Kurz bevor ich deinen Beitrag gelesen habe, hatte ich die gleich Idee und es hat wirklich funktioniert.
Wenn ich schreibe SerialPort1.write("an" & vbcr) dann klappt es ohne Probleme.
Nur komisch, dass es mit SerialPort1.writeline("an") nicht funktioniert. Das habe ich nämlich ganz am Anfang geschrieben
und das hat überhaupt nicht funktioniert. Aber vielleicht liegt es wirklich am LF das gesendet wird.
Aber Hauptsache es funktioniert jetzt mit SerialPort1.write!
Vielen Dank für eure Hilfe!
Schaue Dir auch einmal bascoms instr an, damit kann man in einem String geziehlt nach z.B. "Ein" suchen. Die Funktion gibt war b.z.w. Unwar zurück.
Außerdem ist Input nicht gerade praktisch weil das solange den µC blockiert bis ein CD ankommt.
Gruß Richard
Ich würde das Input in die Recieve ISR vom UART packen. Dadurch wird nur was eingelesen wenn der Controller was empfängt und du blockierst ihn nicht durch das ewige warten auf eine Eingabe.
Das habe ich schon begriffen, versuche einmal nur CR ohne VB, VB ist kein RS232 "genormtes" Steuerzeichen. Ansonsten kann ich Hterm empfehlen, um zu sehen was Dein VB Programm wirklich sendet Hterm zeigt in Hex,Bin,ASCII an was empfangen wurde. Ich vermute das deine Schleife hängt und deshalb nur 1 Durchlauf statt findet. Im Bascom Simutator kann man auch mittels Terminal b.z.w. Dein VB Programm austesten an welcher Stelle (Zeile) das Programm "Stoppt". Dazu muss aber im Header ein $sim eingefügt und neu Compiliert werden, (nicht vergessen das rückgängig zu machen für den normalen Betrieb).
Gruß Richard
Lesezeichen