Hallo zusammen, ich versuche mich gerade an einer Umrechnung vom 7Bit nach 8Bit wie es bei einer SMS im PDU Modus verwendet wird. Ich habe verstanden, dass ich wenn ich ein 7Bit Wort habe noch das 1. Bit vom nächen Wort mit dran hängen muss um auf 8 zu kommen. Beim nächten dann die erten 2 Bits u.s.w. Siehe: http://www.nobbi.com/sms_pdu.htm (ganz unten). Leider stehe ich wohl ziemlich auf dem Schlauch um das in eine oder besser mehrere Scheifen zu packen. Mein Ansatz ist: Ich brauch eine Schleife (außen) die schaut, ob ich das Ende vom String erreicht habe. Eine weitere, die bei jedem Durchlauf hoch Zählt für die Stelle im String, wo das 8 Bit Wort gespeichert wird. Und jetzt hab ich leider keine Idee mehr, wie ich auf dem 2. 7Bit Wort die erste, zweite, dritte usw. Stelle mit zu den davor liegenden 7Bits nehme und mir so meine 8Bit baue. Hoffe ich habs nicht zu umständlich erklärt, ansonsten --> Frag nach! 73 Ronald
Bist du weitergekommen? Es sollte ja 'ungefähr' so gehen :D
1 | uint16_t strTo7bit(const char* from, char* to) |
2 | {
|
3 | char curr, next; |
4 | int8_t i=0; |
5 | uint16_t length=1; |
6 | next = *from++; |
7 | while(next){ |
8 | curr = next; |
9 | next = *from++; |
10 | *to++ = (curr>>i)|(next<<(8-(++i))); |
11 | i &= 0x07; |
12 | length++; |
13 | }
|
14 | *to = 0; |
15 | return length; |
16 | }
|
ein kurzer Test am Pc (Anhang, mit MinGW getestet) sagt, dass es geht. hth. Jörg
Was sehr oft hilft ist: Male es dir auf. 7 +------+------+------+------+------+------+------+------+ 8 +-------+-------+-------+-------+-------+-------+-------+ 012345678 Nach 8 * 7 Bit, bzw. 7 * 8 Bit fängt's wieder von vorne an. 56 Bit = Kleinster gemeinsamer Teiler.
Hi, schau mal bei Atmel App-Notes AVR323 nach http://atmel.com/dyn/resources/prod_documents/doc8016.pdf http://atmel.com/dyn/resources/prod_documents/AVR323.zip ciao WEIF
Also ich mir jetzt mal den Code von Atmel vorgenommen und an mein Projekt angepasst. Werde ich später dann mal testen. Vielen Dank!!!
Läuft der Code gut bei Dir? Kann man also doch drauf verzichten was eigenes zu machen und lieber den Atmel kram erweitern? Gruß Philipp
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.