Forum: Mikrocontroller und Digitale Elektronik Integer in Byte (Bascom, Servo)


von Matthias W. (mechatron)


Lesenswert?

Hallo,
vieleicht kann mir jemand helfen.
Hab mir eine Platine gebaut an der ich Servos anschließen kann.
Auf dieser ist ein Atmega zur Steuerung. Jetzt will ich mit dem PC über 
RS232 Daten an den Atmega senden. Das geht auch soweit ganz gut. Leider 
sind das aber ASCII zeichen. SO versteh ich das. Wenn ich z.B den Wert
"50" per Hyperterminal sende kommen die Zahlen  "13,10,53,48" an.
Ich brauche aber die Zahl 50. Das ganze hab ich in Bascom geschrieben.
Der Servo braucht ja den wert als Byte. Hoffe jemand kann mir da 
weiterhelfen. Leider kenn ich mich nicht so gut aus.

Danke
Matthias

von rudolf (Gast)


Lesenswert?

var=val(var)
du must den string wieder in hex umwandeln

von Christian M. (crischi)


Lesenswert?

Ich kenne zwar den Atmega nicht und auch das Bascom, aber das Prinzip 
ist mir klar.
Dann musst Du einfach von Deinem PC-Programm den Wert '50' übertragen, 
sozusagen, das Zeichen mit dem Wert 50. Das sieht in C etwa so aus:
sprintf( text, "%c", zeichen ) oder direkt eine Funktion zum binären 
Übertragen wie "WriteFile"
Bei der RS2323 musst Du dann aber darauf achten, 8Bit zu übertragen, 
wenn Du WErte oberhalb 128 brauchst.

Gruß

Christian

von holger (Gast)


Lesenswert?

Der ASCII Code für eine '0' ist 48.
Den musst du von jedem empfangenen ASCII Byte abziehen.
Dann bekommst du den Wert für die jeweilige Stelle.

(53-48) = 5
(48-48) = 0

5*10 + 0 = 50

von ASCIItabelle (Gast)


Lesenswert?

Hai,

1. Grundsätzlich ist Hyperterminal sch......!
2. Wenn "13,10,53,48" ankommt und Du hast "50" gesendet, hast Du die 
ankommenden Zahlen falsch abgeschrieben, oder sie sind durch ein 
Wurmloch entkommen.
3. Wenn bei Dir "53,48,13,10"  ankommt, hast Du das Wurmlochproblem 
gelöst!
4. Wenn Du in BASCOM die Hilfe benutzt hättest, findest Du unter dem 
Suchwort 'ASCII':
Den zweiten Treffer - UART
Hier steht unter 'Example:'

Print
Print "Now try the enter key..."
Akey = Waitkey()
Akey = Waitkey()
Print Akey

Print
Print "The number you see is the ASCII value of the key you pressed."
Print "We need to convert the number back to the key..."
Print     'Notice what this line does
Print "Please try an alphanumerical key again..."
Akey = Waitkey()
Print Chr(akey) 'Notice what this does
Print "That's fine!"

5. Jetzt kannst Du Dir sogar die ASCII-Tabelle unter dem Befehl ASC() 
(dem ersten Treffer) in der BASCOM Hilfe angucken oder hier: 
http://de.wikipedia.org/wiki/ASCII-Tabelle

Servus,

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.