D
dadda007
Guest
Здравейте всички,
Аз съм пред затруднение декодиране на един SMS от GSM с микро-ми контролер.След изпращане на подходящи при команди аз съм се опитват да разчетат режим PDU формата на SMS.В следващите код аз съм четене на седмо място в GSM мобилни набор памет и декодиране на проблемната употреба на наркотици, за да извлечете съобщението "Здравейте", с пакетирани код PDU "C834", смятам да поставя стойност 0x0F на PORTA.Но тази идея не изглежда да работи ....преживя PLZ някой помогне????
Код:# включват <avr/io.h>
# включват <util/delay.h>нищожен init_usart (Void); / * да initialse USART за предаване * /
нищожен data_send (INT) / * за изпращане на данни * /
Int data_rxr (Void); / * за получаване на данни * /Int основни (Void)(Int в [13] = ( 'А', 'T',' ',' C', 'P', 'M', 'S', 0x3d, 0x22, "М", "Е", 0x22, 0x0D ) / *, за да изберете memeory като мобилно оборудване * /
Int C1 [10] = ( 'А', 'T',' ',' C', 'M', 'G', 'F', 0x3d, 0x30, 0x0D) / * изберете формата на SMS-и PDU формат * /
Int г [2] = (0xC8, 0x34);
Int CH [10] = ( 'А', 'T',' ',' C', 'M', 'G', 'R', 0x3d, 0x37, 0x0D), I, J [29], знаме / * да се чете на 7 място в паметта, * /DDRA = 0x0F;
PORTA = 0x00;init_usart ();докато (1)(за (I = 0; I <13; I )
data_send (C );_delay_ms (100);за (I = 0; I <10; I )
data_send (C1 );_delay_ms (100);за (I = 0; I <10; I )
data_send (CH );за (I = 0; I <29; I ) / * получава низ проблемната употреба на наркотици, която е 29 байта * /
J = data_rxr ();ако ((J [27] == г [0 ])&&( J [28] == г [1])) / * проверите дали 28 и 29 място, т.е. последните 2 места са равни на опаковани формат на Здравей или не * /(флаг = 1;
прекъсванев противен случай
флаг = 0;IF (флаг == 1) / * в случай на истинското състояние да изпрати 0x0F PORTA * /
PORTA = 0x0F;в противен случай
PORTA = 0x00връщане 0нищожен init_usart (Void)(/ / UBRRH = 0x00;
UBRRL = 0x33;
/ / UCSRC = 0x86;
UCSRB = 0x18;
/ / UCSRA = 0x00нищожен data_send (INT а)(докато (! (UCSRA & (1 <<Удре)));UDR = A;
PORTB = 0x0F
Int data_rxr (Void)(Int А;докато (! (UCSRA & (1 <<RXC)));а = UDR;
PORTB = 0x0F;върне
Аз съм пред затруднение декодиране на един SMS от GSM с микро-ми контролер.След изпращане на подходящи при команди аз съм се опитват да разчетат режим PDU формата на SMS.В следващите код аз съм четене на седмо място в GSM мобилни набор памет и декодиране на проблемната употреба на наркотици, за да извлечете съобщението "Здравейте", с пакетирани код PDU "C834", смятам да поставя стойност 0x0F на PORTA.Но тази идея не изглежда да работи ....преживя PLZ някой помогне????
Код:# включват <avr/io.h>
# включват <util/delay.h>нищожен init_usart (Void); / * да initialse USART за предаване * /
нищожен data_send (INT) / * за изпращане на данни * /
Int data_rxr (Void); / * за получаване на данни * /Int основни (Void)(Int в [13] = ( 'А', 'T',' ',' C', 'P', 'M', 'S', 0x3d, 0x22, "М", "Е", 0x22, 0x0D ) / *, за да изберете memeory като мобилно оборудване * /
Int C1 [10] = ( 'А', 'T',' ',' C', 'M', 'G', 'F', 0x3d, 0x30, 0x0D) / * изберете формата на SMS-и PDU формат * /
Int г [2] = (0xC8, 0x34);
Int CH [10] = ( 'А', 'T',' ',' C', 'M', 'G', 'R', 0x3d, 0x37, 0x0D), I, J [29], знаме / * да се чете на 7 място в паметта, * /DDRA = 0x0F;
PORTA = 0x00;init_usart ();докато (1)(за (I = 0; I <13; I )
data_send (C );_delay_ms (100);за (I = 0; I <10; I )
data_send (C1 );_delay_ms (100);за (I = 0; I <10; I )
data_send (CH );за (I = 0; I <29; I ) / * получава низ проблемната употреба на наркотици, която е 29 байта * /
J = data_rxr ();ако ((J [27] == г [0 ])&&( J [28] == г [1])) / * проверите дали 28 и 29 място, т.е. последните 2 места са равни на опаковани формат на Здравей или не * /(флаг = 1;
прекъсванев противен случай
флаг = 0;IF (флаг == 1) / * в случай на истинското състояние да изпрати 0x0F PORTA * /
PORTA = 0x0F;в противен случай
PORTA = 0x00връщане 0нищожен init_usart (Void)(/ / UBRRH = 0x00;
UBRRL = 0x33;
/ / UCSRC = 0x86;
UCSRB = 0x18;
/ / UCSRA = 0x00нищожен data_send (INT а)(докато (! (UCSRA & (1 <<Удре)));UDR = A;
PORTB = 0x0F
Int data_rxr (Void)(Int А;докато (! (UCSRA & (1 <<RXC)));а = UDR;
PORTB = 0x0F;върне