Hallo, ich möchte einen empfangen Datenstream, den ich über die RS232 empfangen habe wie z.B. 01 A4 CF 4D 11 55 7A 9F 45 21 der empfangen ASC stream wuerde dann in etwa so aussehen: 48 49 32 65 52 32 67 70 32 ....(dec) als Hex-Zahlen interpretieren und entsprechenden Array zugewiesen werden. Wie z.B. BYTE cRegister[A]; in cRegister soll dann der oben genannte Stream stehen: cRegister[0]= 0x01 cRegister[1]= 0xA4 cRegister[2]= 0xCF cRegister[3]= 0x4D usw. stehen. Weiss jemand wo ich eine entsprechen effiziente Methode finde - am besten Source code. Vielen Dank. P.S. sagt nicht das es irgendwo im Forum steht. Wahrscheinlich habt ihr recht, aber ich habe es bei der Suche nicht gefunden.
1) Du bist im falschen Forum. Codesammlung bedeutet, dass jamnd fertige Routinen der Allgemeinheit zur Verfügung stellt. Ich habe den Thread dann mal verschoben 2) Wo liegt denn konkret das Problem? Das ist doch ziemlich einfach zu lösen Vom ASCII Code ziehst du den Code für '0' ab und erhältst damit für die Codes '0' bis '9' die entsprechenden Zahlen. Ist die resultierende Zahl größer als 10, dann war das original ASCII Zeichen offenbar im Bereich 'A' bis 'F' und du musst eine weitere Korrektur durch Subtraktion anbringen um daraus die Zahlen 10 bis 15 zu erhalten. Schnapp dir eine ASCII Tabelleund tüftle das aus. Sollte nicht länger als 2 Minuten dauern Jetzt hast du also schon mal eine Möglichkeit um aus dem ASCII Strom die entsprechenden einzelnen Zahlen zu erhalten und zwar während du die Zeichen empfängst. Jetzt musst du noch 2 aufeinanderfolgende Zahlen, die ja jeweils das High-Nibble und das Low-Nibble darstellen, zu einer einzigen Zahl zusammenfassen: Erste Zahl mal 16 nehmen und zweite Zahl addieren (aufpassen, unbedingt unsigned rechnen, sonst passieren da unter Umständen seltsame Dinge). Was gleichwertig ist: Zahl = (HighNibble << 4 ) | LowNibble; Tja und dann brauchst du nur noch die so erhaltene Zahl fortlaufend in einem Array ablegen. Summa summarum, sollte das nicht so schwer sein und sich in ca 5 oder 6 Zeilen Code abhandeln lassen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.