Интерфейс ATMega 32 с GSM Мобилен

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;върне;)
 

Welcome to EDABoard.com

Sponsor

Back
Top