-
-
Erfahrener Benutzer
Roboter-Spezialist
ok, ich denke ich hab das Problem gefunden. Wenn ich sage serialport1.WriteLine(textbox2.Text) und sich in textbox2.text eine 2stellige Zahl befindet so betrachtet VB jede Stelle als ein eigenes Byte. Mein AVR empfängt allerdings nur ein Byte und nicht 2. Konvertiere ich mittels val() den Inhalt eines Strings in eine Zahl, so konvertiert er sie in eine Integervariable. Diese benötigt allerdings auch zwei Bytes. Man kann es drehen und wenden wie man will, aber der Datenverlust ist vorprogrammiert. Nur leider fehlt mir noch die Lösung...
Aber auch das war nicht das Problem. Das Problem liegt darin, dass die writeline() Funktion nur Strings annimmt, beim verschicken also die ASCII Codes verschickt. Wenn man also serialport1.writeline(1) ausführt so empfängt der AVR nicht 1 sondern den ASCII code von 1 -> 49. Aus meinen Programmieranfängen mir Free/QBasic kannte ich zum Glück aber noch die CHR Funktion, mit der man einen ASCII Code in sein zugeordnetes Zeichen umwandeln kann. Somit kann man mit
serialport.writeline(CHR(X)) jede beliebige Zahl übertragen, ohne immer auf die ASCII Tabelle schauen zu müssen.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen