mam problem z dekodowaniem smsa z PDU. Mam prawidłowo wydzielony fragment zawierający samą treść smsa (obcięte info o ilości znaków) i próbuję go zdekodować.
zmienne:
do zmiennej sms jest zapisany ciąg znaków PDU odebrany z telefonu, zakończony zerem. zmienna sms_dl zawiera liczbę znaków liczoną z zerem na końcu.
procedura dekodująca:
oraz jej wywołanie:
niestety w zmiennej sms_decode są krzaki zamiast tekstu. zmienna sms zawiera prawidłowy string, sprawdzane (w urządzeniu poprzez wyświetlenei na lcd, nie symulatorem).
w czym może twić problem?
zmienne:
unsigned char sms_dl;
unsigned char sms[99]; //wyodrebniony zakodowany tekst sms
unsigned char sms_bin[99];
unsigned char sms_decode[99];
unsigned int themp;
unsigned char j;do zmiennej sms jest zapisany ciąg znaków PDU odebrany z telefonu, zakończony zerem. zmienna sms_dl zawiera liczbę znaków liczoną z zerem na końcu.
procedura dekodująca:
unsigned char hexstr2bin(unsigned char *addr)
{
unsigned char hb,lb;
hb=*addr-0x30;
if(hb>0x09) hb-=0x07;
addr++;
lb=*addr-0x30;
if(lb>0x9) lb-=0x07;
return ((hb<<4)|lb);
}
void pdu2ascii(unsigned char *ppdu,unsigned char *pascii,unsigned char pdulen)
{
unsigned char bl,bh=0;
unsigned int i;
pdulen=hexstr2bin(ppdu);
//ppdu+=2;
for(i=0;i<pdulen;i++)
{
bl=(hexstr2bin(ppdu)<<(i%8));
*pascii++=(bl|bh)&0x7F;
bh=hexstr2bin(ppdu)>>(7-(i%8));
if(7-(i%8)) ppdu+=2;
}
*pascii=0x00;//koniec string'a
}oraz jej wywołanie:
pdu2ascii(sms,sms_decode,sms_dl-1)niestety w zmiennej sms_decode są krzaki zamiast tekstu. zmienna sms zawiera prawidłowy string, sprawdzane (w urządzeniu poprzez wyświetlenei na lcd, nie symulatorem).
w czym może twić problem?