D
dadda007
Guest
Hi all,
Ik ben geconfronteerd met moeilijkheden decoderen van een SMS van GSM met mijn micro-controller.Na het versturen van de juiste AT commando ik probeer te decoderen de PDU mode formaat van de SMS.In de volgende code Ik lees de zevende plaats in het mobiele GSM-geheugen ingesteld en decoderen van de PDU om het bericht te halen "Hi", met de verpakte PDU code "C834", ik ben van plan om de waarde 0x0F PORTA op te zetten.Maar dit idee lijkt niet te werken ....cud iemand helpen plz????
Code:# include <avr/io.h>
# include <util/delay.h>void init_usart (void) / * om USART initialse voor het doorgeven * /
void data_send (int); / * voor het verzenden van de gegevens * /
int data_rxr (void); / * te ontvangen van de gegevens * /int main (void)(int c [13] = ( 'A', 'T',' ',' C', 'P', 'M', 'S', 0x3D, 0x22, 'M', 'E', 0x22, 0x0D ); / * te selecteren memeory als de mobiele apparatuur * /
int c1 [10] = ( 'A', 'T',' ',' C', 'M', 'G', 'F', 0x3D, 0x30, 0x0D); / * Selecteer het formaat van sms als PDU format * /
int d [2] = (0xC8, 0x34);
int ch [10] = ( 'A', 'T',' ',' C', 'M', 'G', 'R', 0x3D, 0x37, 0x0D), i, j [29], vlag / * om te lezen de 7 geheugenlocatie * /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 ) / * ontvangen de PDU string die is 29 bytes lang * /
j = data_rxr ();if ((j [27] == d [0 ])&&( j [28] == d [1])) / * Controleer of de 28 en 29 plaats, dat wil zeggen de laatste 2 locaties zijn gelijk aan verpakt formaat van Hi of niet * /(flag = 1;
breakanders
flag = 0;if (flag == 1) / * in geval van de echte toestand sturen 0x0F aan PORTA * /
PORTA = 0x0F;anders
PORTA = 0x00return 0void init_usart (void)(/ / UBRRH = 0x00;
UBRRL = 0x33;
/ / UCSRC = 0x86;
UCSRB = 0x18;
/ / UCSRA = 0x00void data_send (int a)(while (! (UCSRA & (1 <<UDRE)));UDR = a;
PORTB = 0x0F
int data_rxr (void)(int a;while (! (UCSRA & (1 <<RXC)));a = UDR;
PORTB = 0x0F;return a
Ik ben geconfronteerd met moeilijkheden decoderen van een SMS van GSM met mijn micro-controller.Na het versturen van de juiste AT commando ik probeer te decoderen de PDU mode formaat van de SMS.In de volgende code Ik lees de zevende plaats in het mobiele GSM-geheugen ingesteld en decoderen van de PDU om het bericht te halen "Hi", met de verpakte PDU code "C834", ik ben van plan om de waarde 0x0F PORTA op te zetten.Maar dit idee lijkt niet te werken ....cud iemand helpen plz????
Code:# include <avr/io.h>
# include <util/delay.h>void init_usart (void) / * om USART initialse voor het doorgeven * /
void data_send (int); / * voor het verzenden van de gegevens * /
int data_rxr (void); / * te ontvangen van de gegevens * /int main (void)(int c [13] = ( 'A', 'T',' ',' C', 'P', 'M', 'S', 0x3D, 0x22, 'M', 'E', 0x22, 0x0D ); / * te selecteren memeory als de mobiele apparatuur * /
int c1 [10] = ( 'A', 'T',' ',' C', 'M', 'G', 'F', 0x3D, 0x30, 0x0D); / * Selecteer het formaat van sms als PDU format * /
int d [2] = (0xC8, 0x34);
int ch [10] = ( 'A', 'T',' ',' C', 'M', 'G', 'R', 0x3D, 0x37, 0x0D), i, j [29], vlag / * om te lezen de 7 geheugenlocatie * /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 ) / * ontvangen de PDU string die is 29 bytes lang * /
j = data_rxr ();if ((j [27] == d [0 ])&&( j [28] == d [1])) / * Controleer of de 28 en 29 plaats, dat wil zeggen de laatste 2 locaties zijn gelijk aan verpakt formaat van Hi of niet * /(flag = 1;
breakanders
flag = 0;if (flag == 1) / * in geval van de echte toestand sturen 0x0F aan PORTA * /
PORTA = 0x0F;anders
PORTA = 0x00return 0void init_usart (void)(/ / UBRRH = 0x00;
UBRRL = 0x33;
/ / UCSRC = 0x86;
UCSRB = 0x18;
/ / UCSRA = 0x00void data_send (int a)(while (! (UCSRA & (1 <<UDRE)));UDR = a;
PORTB = 0x0F
int data_rxr (void)(int a;while (! (UCSRA & (1 <<RXC)));a = UDR;
PORTB = 0x0F;return a