PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : computer-c lib auf avr



Roboman93
16.04.2008, 19:27
ich möchte gern ein programm schreiben, für das es nötig ist, dass der avr daten, die über rs232 kommen, in buchstaben und zahlen zu teilen. es gibt eine funktion in ctype.h, die das macht. frage: kann ich die auch ohne weiteres auf nem avr einsetzen???

izaseba
16.04.2008, 20:49
Was soll das für eine Funktion sein?

Felix G
17.04.2008, 08:14
Im Zweifelsfall kannst du dir doch auch leicht selbst eine Funktion schreiben die dir Zahlen und Buchstaben trennt...

denn ein kurzer Blick auf eine ASCII-Tabelle verrät: Zahlen, Groß- und Kleinbuchstaben sind 3 Blöcke die sich leicht voneinander unterscheiden lassen:

Zahlen: 0x30 bis 0x39
Großbuchstaben: 0x41 bis 0x5A
Kleinbuchstaben: 0x61 bis 0x7A


Aber es kommt natürlich auch darauf an wie deine Daten genau aussehen...
denn bei etwas komplexeren Protokollen eignet sich scanf() sicher besser.

Roboman93
17.04.2008, 16:38
naja, die funktion lautet isdigig() (für ne zahl) und isalpha() (für ein buchstaben. werds mal versuchen und dann berichten.

Besserwessi
17.04.2008, 22:37
Wenn der volständige Code zu den Funtionen da ist, also nicht nur das .h File, sondern auch das .c File. sollte das ohne Problem gehen. Bei WinAVR sind die Funtionen aber wohl schon Teil der Standart-Library. Jedenfalls ist ctypes.h auch schon dabei.

Felix G
18.04.2008, 10:46
Also Funktionen die nur ausgeben ob ein Zeichen eine Zahl oder ein Buchstabe ist, kannst du mit den von mir angegebenen ASCII-Bereichen sehr leicht selber schreiben. Und du könntest damit bei Bedarf auch zwischen Groß- und Kleinbuchstaben unterscheiden.

eine Funktion isdigit sähe dann etwa so aus:

char isdigit(char c)
{
if((c >= 0x30) && (c <= 0x39))
return 1;
else
return 0;
}


D.h. falls die funktionen aus ctype.h nicht wie gewünscht funktionieren, kannst du es auch so machen.

Roboman93
18.04.2008, 12:26
ok, danke für den tipp