D
dadda007
Guest
Hi all,
Es esmu saskaras ar grūtībām dekodēšana SMS no GSM ar savu mikro-kontrolieri.Pēc sūtīšanas gadījumā AT komandas es cenšos atšifrēt PDU mode formātu SMS.Ar šādu kodu i am lasījums septīto vietu GSM mobilo atmiņu komplektu un dekodēšana PDU, lai iegūtu ziņojumu "Hi", ar iepakoto PDU kodu "C834", es gatavojos nodot 0x0f vērtību PORTA.Tomēr šī ideja, šķiet, nav darba ....gremoklis someone help plz??
Kods:# include <avr/io.h>
# include <util/delay.h>anulēts init_usart (spēkā neesošs) / * lai initialse USART nosūtīšanai * /
anulēts data_send (int); / * sūtīt dati * /
int data_rxr (spēkā neesošs) / * saņemt dati * /int main (anulēts)(int c [13] = ( ' "," T',' ',' C', 'P', 'M', 'S', 0x3d, 0x22, 'M', 'E', 0x22, 0x0d ); / *, lai izvēlētos memeory kā mobilās iekārtas * /
int c1 [10] = ( ' "," T',' ',' C', 'M', 'G', 'F', 0x3d, 0x30, 0x0d); / * jāizvēlas sms formāts PDU format * /
int d [2] = (0xC8, 0x34);
int ch [10] = ( ' "," T',' ',' C', 'M', 'G', 'R', 0x3d, 0x37, 0x0d), i, j [29], karoga ; / * lai izlasītu 7 vieta atmiņā * /DDRA = 0x0f;
PORTA = 0x00;init_usart ();while (1)(for (i = 0; i <13; i )
data_send (c );_delay_ms (100);for (i = 0; i <10; i )
data_send (c1 );_delay_ms (100);for (i = 0; i <10; i )
data_send (ch );for (i = 0; i <29; i ) / * saņemt PDU virkne, kas ir 29 baitu garš * /
j = data_rxr ();if ((j [27] == d [0 ])&&( j [28] == d [1])) / * pārbaudīt, 28 un 29 vieta, ti, pēdējās 2 vietas ir vienādi iepakota formāts Hi vai * /(flag = 1;
breakcitādi
flag = 0;if (flag == 1) / * Gadījumā, ja patiesa stāvokļa nosūtīt 0x0f uz PORTA * /
PORTA = 0x0f;citādi
PORTA = 0x00return 0anulēts init_usart (spēkā neesošs)(/ / UBRRH = 0x00;
UBRRL = 0x33;
/ / UCSRC = 0x86;
UCSRB = 0x18;
/ / UCSRA = 0x00anulēts data_send (INT)(while (! (UCSRA & (1 <<Ūdri)));UDR =;
PORTB = 0x0f
int data_rxr (spēkā neesošs)(int;while (! (UCSRA & (1 <<RXC)));= UDR;
PORTB = 0x0f;atgriezties
Es esmu saskaras ar grūtībām dekodēšana SMS no GSM ar savu mikro-kontrolieri.Pēc sūtīšanas gadījumā AT komandas es cenšos atšifrēt PDU mode formātu SMS.Ar šādu kodu i am lasījums septīto vietu GSM mobilo atmiņu komplektu un dekodēšana PDU, lai iegūtu ziņojumu "Hi", ar iepakoto PDU kodu "C834", es gatavojos nodot 0x0f vērtību PORTA.Tomēr šī ideja, šķiet, nav darba ....gremoklis someone help plz??
Kods:# include <avr/io.h>
# include <util/delay.h>anulēts init_usart (spēkā neesošs) / * lai initialse USART nosūtīšanai * /
anulēts data_send (int); / * sūtīt dati * /
int data_rxr (spēkā neesošs) / * saņemt dati * /int main (anulēts)(int c [13] = ( ' "," T',' ',' C', 'P', 'M', 'S', 0x3d, 0x22, 'M', 'E', 0x22, 0x0d ); / *, lai izvēlētos memeory kā mobilās iekārtas * /
int c1 [10] = ( ' "," T',' ',' C', 'M', 'G', 'F', 0x3d, 0x30, 0x0d); / * jāizvēlas sms formāts PDU format * /
int d [2] = (0xC8, 0x34);
int ch [10] = ( ' "," T',' ',' C', 'M', 'G', 'R', 0x3d, 0x37, 0x0d), i, j [29], karoga ; / * lai izlasītu 7 vieta atmiņā * /DDRA = 0x0f;
PORTA = 0x00;init_usart ();while (1)(for (i = 0; i <13; i )
data_send (c );_delay_ms (100);for (i = 0; i <10; i )
data_send (c1 );_delay_ms (100);for (i = 0; i <10; i )
data_send (ch );for (i = 0; i <29; i ) / * saņemt PDU virkne, kas ir 29 baitu garš * /
j = data_rxr ();if ((j [27] == d [0 ])&&( j [28] == d [1])) / * pārbaudīt, 28 un 29 vieta, ti, pēdējās 2 vietas ir vienādi iepakota formāts Hi vai * /(flag = 1;
breakcitādi
flag = 0;if (flag == 1) / * Gadījumā, ja patiesa stāvokļa nosūtīt 0x0f uz PORTA * /
PORTA = 0x0f;citādi
PORTA = 0x00return 0anulēts init_usart (spēkā neesošs)(/ / UBRRH = 0x00;
UBRRL = 0x33;
/ / UCSRC = 0x86;
UCSRB = 0x18;
/ / UCSRA = 0x00anulēts data_send (INT)(while (! (UCSRA & (1 <<Ūdri)));UDR =;
PORTB = 0x0f
int data_rxr (spēkā neesošs)(int;while (! (UCSRA & (1 <<RXC)));= UDR;
PORTB = 0x0f;atgriezties