chciałem sie dowiedziec czy ktoś ma pomysł na sterowanie jakiegos ukladu poprzez wysłanie smsa z komórki na drugi telefon podpiety do takiego ukladu i po tresci smsa strowanie np przekaznikiem na zasadzie wlacz wyłacz
Czy wolisz polską wersję strony elektroda?
Nie, dziękuję Przekieruj mnie tam// dekodowanie tekstu (o dlugosci lenght) sms z 7 na 8 bitow, zdekodowany tekst umieszczony w dest_buf
unsigned char char_8bit_unpack (unsigned char *text, unsigned char lenght, unsigned char *dest_buf)
{
unsigned char i=7,j=0,rest=0;
while (lenght)
{
*dest_buf = ((*text&0x7f)<<(7-i)|rest)&0x7f;
rest = *text>>i;
text++;
dest_buf++;
j++;
if (i==1)
{
*dest_buf= rest;
dest_buf++;
i=7;
rest=0;
}
else
i--;
lenght--;
}
return (j);
}
a tu kodowanie do pdu :)
// kodowanie 8 bit -> 7 bitów (funkcja zwraca długość łańcucha po kodowaniu , zakodowany łańcuch
// umieszczony jest w dest_buf
unsigned char char_7bit_pack (unsigned char*sms_ptr,unsigned char *dest_buf)
{
unsigned char temp_buf2[80];
unsigned char chr,next_chr,val,cnt=7,i=0,j=0;
unsigned char *temp_ptr;
temp_ptr = sms_ptr;
chr= *temp_ptr++;
do
{
if (cnt==0)
{
cnt=7;
j=0;
chr =*temp_ptr++;
}
next_chr=*temp_ptr;
j= (j<<1)|0x01;
val = next_chr&j;
val <<=cnt;
chr |=val;
if (chr)
temp_buf2[i++]=chr;
chr = next_chr>>(8-cnt);
cnt--;
} while (*temp_ptr++);
j=i;
memcpy (dest_buf,temp_buf2,i);
return (i);
}
// dekodowanie tekstu (o dlugosci lenght) sms z 7 na 8 bitow, zdekodowany tekst umieszczony w dest_buf
unsigned char char_8bit_unpack (unsigned char *text, unsigned char lenght, unsigned char *dest_buf)
{
unsigned char i=7,j=0,rest=0;
while (lenght)
{
*dest_buf = ((*text&0x7f)<<(7-i)|rest)&0x7f;
rest = *text>>i;
text++;
dest_buf++;
j++;
if (i==1)
{
*dest_buf= rest;
dest_buf++;
i=7;
rest=0;
}
else
i--;
lenght--;
}
return (j);
}
a tu kodowanie do pdu :)
// kodowanie 8 bit -> 7 bitów (funkcja zwraca długość łańcucha po kodowaniu , zakodowany łańcuch
// umieszczony jest w dest_buf
unsigned char char_7bit_pack (unsigned char*sms_ptr,unsigned char *dest_buf)
{
unsigned char temp_buf2[80];
unsigned char chr,next_chr,val,cnt=7,i=0,j=0;
unsigned char *temp_ptr;
temp_ptr = sms_ptr;
chr= *temp_ptr++;
do
{
if (cnt==0)
{
cnt=7;
j=0;
chr =*temp_ptr++;
}
next_chr=*temp_ptr;
j= (j<<1)|0x01;
val = next_chr&j;
val <<=cnt;
chr |=val;
if (chr)
temp_buf2[i++]=chr;
chr = next_chr>>(8-cnt);
cnt--;
} while (*temp_ptr++);
j=i;
memcpy (dest_buf,temp_buf2,i);
return (i);
}
Cytat:czy musze przerabiać obsługę PDU??
Cytat:"8989 CX1"
Cytat:USER DATA LENGTH : 15 septets
UDH LENGTH : 5 octets
UDH : 0A 03 00 08 04
UDH ELEMENTS : 0A - EMS text formatting
3 (0x03) Bytes Information Element
000 starting character
008 length in characters
04 formatting mode:
text ALIGN left
text SIZE large