enviar dados através de GPRS

M

mousefish

Guest
Oi,
Estou usando o controlador dspic30 PIC e gostaria que a interface com um módulo GPRS para enviar e receber dados para um servidor através do protocolo HTTP.Sou capaz de se conectar ao servidor através de comandos AT.Gostaria de perguntar como vou ser capaz de enviar e receber dados após a ligação ao servidor.Estou a codificação em C. Qualquer ajuda é apreciada.Obrigado.

 
Módulo que você estiver usando o GPRS>?
O seu módulo GPRS tem pilha TCP / IP inbuilt?Se sim, então, usar o TCP servidor cliente para transferência de dados

 
mousefish escreveu:

Oi,

Estou usando o controlador dspic30 PIC e gostaria que a interface com um módulo GPRS para enviar e receber dados para um servidor através do protocolo HTTP.
Sou capaz de se conectar ao servidor através de comandos AT.
Gostaria de perguntar como vou ser capaz de enviar e receber dados após a ligação ao servidor.
Estou a codificação em C. Qualquer ajuda é apreciada.
Obrigado.
 
Estou também a tentar enviar dados para o anfitrião por GPRS com PIC16F877A.Mas eu não posso ligar o meu módulo GSM para o anfitrião.Primeiro de tudo,
estou usando o hyper terminal no meu computador para conectá-lo com o servidor.Você poderia me mostrar como você ligar o seu módulo (ou telefone) com o servidor?

Obrigado!

 
Oi tudo,

Também estou à espera que os trabalhos sobre a mesma coisa usando pIC16f877a e SIM300C GSM Modem.O que eu quero fazer é remota de comunicação de dados através do sensor gprs para um site (ou seja o que for PHP).

Vamos fazer um tópico para sticky finsh todos os problemas relativos à transmissão de dados entre microcontrolador e PC através de GPRS.ninguém vai nos ajudar experientes ..?

 
Oi cuongbkedu,

para mi, estou usando o módulo IWOW TR800 que tem um bulit na pilha TCP / IP.Tem também construído em comandos AT para ajudar a conectar ao servidor utilizando protocolos TCP.

Para mi, eu usei estes comandos para criar uma conexão TCP, depois que eu configurar o módulo para ser executado no modo de dados para que todos os dados enviados para o módulo é enviado para o servidor também.

Se você estiver executando um servidor HTTP, você terá de aderir a protocolos HTTP gostam de usar o GET, método POST.Executar uma pesquisa para protocolos HTTP para exemplos.

Do lado do servidor, servlets ou scripts CGI pode ser usado para receber dados, dependendo do nível de acesso para o servidor que você está usando.

Esperança esta ajuda um pouco.

 
Ok querida,

Eu tenho usado SIM300C módulo com HyperTerminal sobre um PC e utilizados tcp terminal em relação a outros, que está ligado à internet.Tenho usado em comandos de GPRS para enviar os dados do modem para outro pc no mesmo endereço IP e os resultados foram ok, ok estava recebendo dados.
Se alguns detalhes uma necessidade até esse ponto plz perguntar.,

Agora o meu próximo passo é fazer um gerador telemetria sistema baseado PIC micro e SIM300C.Aguardo com expectativa de que as pessoas têm opinião sobre architechutre deste sistema.

O que tenho na minha mente.

Vou develpe um pc lado software de servidor em VB que vai ouvir todos os geradores de dados através da porta tcpip e armazenar os dados nos respectivos databasiss.enquanto o lado cliente aplicação será capaz de ver os dados especificados gerador através desta base de dados.

Por favor apresentar sua opinião de que o que deveria ser o caminho para alcançar a máxima performance do sistema.

Em pc lado estou awear de VB6 apenas.Se algum interessado em um trabalho sobre este projecto com a mim, pode me pm.

Atenciosamente

 
Caro Dani,
desta discussão som interessante para mim que você poderia me dê um pouco mais informação sobre as aplicações?Qual é o preço para o módulo?

Estou desenvolvendo um geomonitoring automática instrumentação que deveria ter uma conectividade IP, então pode ser este módulo deve ser usado para fazer esta tarefa.
O que eu penso que está aberto o GPRS / GSM ligação e, em seguida, use o protocolo HTTP para troca de dados com o módulo.No momento estou usando um simples GPRS / GSM modem para fazer todas as tarefas e estou usando um protocolo personalizado para troca de dados entre a estação-base (com um programa codificado em VB) e da unidade remota (que é equipado com um embutido PC executando WinXP, o software do controle remoto módulo também é escrito com VB).

Tnx
FF aka Powermos

 
"Eu tenho usado SIM300C módulo com HyperTerminal sobre um PC e utilizados tcp terminal em relação a outros, que está ligado à internet.
Tenho usado em comandos de GPRS para enviar os dados do modem para outro pc no mesmo endereço IP e os resultados foram ok, os dados foram recebendo ok ".

Dani,

Could you post comandos AT para sua configuração.

Obrigado,
KSP

 
Oi Dani,

Estou fazendo o mesmo tipo de projeto.Eu queria comunicar b / w servidor remoto e microcontrolador utilizando modem GPRS através de comandos AT.Eu estou usando o Motorola C168
da móvel como modem GPRS.Pode sen-me o programa / comandos que você tenha usado para enviar os dados para o servidor TCP utilizando comandos AT?meu e-mail id é bikramjeet.waraich (a) gmail.com

Graças, em antecipação.

Warm Regards
Bikramjeet

 
Para imformation sobre o envio de dados entre módulo GSM & servidor através de GPRS, ver o meu post para uma pergunta semelhante em: http://www.edaboard.com/viewtopic.php?t=347415&highlight =

 
#
include "D: \ Adnan \ GeneratorTM \ C Fonte \ 1GTM.h"
#
include "EXT_EE.c"
#
include <float.h>
#
include <stdlib.h>
#
include <string.h>
# define CR 0x0D

# define C1E pin_e0
# define C2E pin_e1
# define DDin PIN_E2

void checkTime (void);
int1 resetModem (void);
int waitResponse (unsigned int16);
int sendData (void);
void getDataStr (void);
Reconexão nulos (void);
void getWarSettings (void);
void setWarSettings (void);
void checkCommand ();
void storeData_ExtE ();
int1 modemResponding (void);
void hardResetModem ();
void softResetModem ();
void sendPING ();
void readFreq ();

int1 timeUpdatedFlg = 0, warFlg = 0, nMeFlg = 0, gprsCFLG = 0, tSyncFlg = 0, timeoutFlg = 0, sendFlg = 0, pingFlg = 0;
char buf [240];
char SOK [] = ( "OK");
SER char [] = ( "ERRO");
char sCON [] = ( "CONNECT OK");
char sSen [] = ( "ENVIAR OK");
char Servertime [] = ( "01/01/01, 12/00/00 00 \ 0");
Char ctime []={" 01/01/01, 12/00/00 00 \ 0 ");
Char sACon [] = ( "JÁ CONNECT");
Char NME [] = ( "88888888888888 \ 0"); / / 00923014217397
char dtstr [200 ]={"$ D ",);
char IP [] = ( "117.102.61.106 \ 0");
unsigned long dData = 0;
unsigned long aData [16], LWarLevel [16], HWarLevel [16];
unsigned long dwar, aWarL, aWarH, dWarEnabled = 0, aWarEnabledL = 0, aWarEnabledH = 0;
int8 Index, RESFLG = 1, gprsConnected = 0, resetTries = 0, pingTries = 0, NforPINg = 0; / / Índice variável resposta para o GSM string
unsigned long Timeout = 1500, ExtE_Pointer, freq = 0;

/ / void checkResponse (char *); / / 17 = tempo interromper 3.4sec * 1 min = 17 = 57,8>> -2.2sec/ * # int_RTCC
void RTCC_isr (void)
(
ATS ;

)
* /
# INT_RDA
void RDA_isr (void)
(
INT C [2];

/ / Disable_interrupts (INT_RDA);
Índice = 0;
if (timeoutFlg == 0 | | TIMEOUT> 31000) (
timeout = 1500;
)

if (resFlg == 0) (
fazer
(
if (kbhit ())
(
buf [índice] = fgetc (GSM);
index ;
)
delay_ms (1);
TIMEOUT -;) while (TIMEOUT> 0 & & TIMEOUT <31000 & & índice <220);Buf [ÍNDICE] = '\ 0';
resflg = 1;

if (buf [2 ]==' ' & & buf [3] == 'C' & & buf [4] == 'P' & & buf [5] == 'B' & & buf [6] == "R" ') (

if (strlen (buf)> 20) (
NME [0] = buf [12]; / / 0
NME [1] = buf [13]; / / 0
NME [2] = buf [14]; / / 9
NME [3] = buf [15]; / / 2
NME [4] = buf [16]; / / 3
NME [5] = buf [17]; / / 0
NME [6] = buf [18]; / / 1
NME [7] = buf [19]; / / 4
NME [8] = buf [20]; / / 2
NME [9] = buf [21]; / / 1
NME [10] = buf [22]; / / 7
NME [11] = buf [23]; / / 3
NME [12] = buf [24]; / / 9
NME [13] = buf [25]; / / 7
NME [14] = '\ 0';
nMeFlg = 1;
) else (
nMeFlg = 0;
)) else if (buf [0 ]=='$' & & buf [1] == 'R' & & buf [2] =='1 ') (
Servertime [0] = buf [4]; Servertime [1] = buf [5]; Servertime [2] = buf [6];
Servertime [3] = buf [7]; Servertime [4] = buf [8]; Servertime [5] = buf [9];
Servertime [6] = buf [10]; Servertime [7] = buf [11]; Servertime [8] = buf [12];

Servertime [9] = buf [13]; Servertime [10] = buf [14]; Servertime [11] = buf [15];
Servertime [12] = buf [16]; Servertime [13] = buf [17]; Servertime [14] = buf [18];
Servertime [15] = buf [19]; Servertime [16] = buf [20]; Servertime [17] = buf [21];
Servertime [18] = buf [22]; Servertime [19] = buf [23]; Servertime [20] = '\ 0';
gprsCFlg = 1;
) else if (buf [0 ]=='$' & & buf [1] == 'R' & & buf [2] =='0 ') (
gprsCFlg = 0;
)

)
if (kbhit ())
(
c [0] = fgetc (GSM);
)

/ / enable_interrupts (INT_RDA);
)void main ()
(

setup_adc (ADC_CLOCK_INTERNAL);
setup_adc_ports (RA0_ANALOG);
set_adc_channel (0);
setup_psp (PSP_DISABLED);
setup_spi (SPI_SS_DISABLED);
setup_wdt (WDT_OFF);
setup_timer_0 (RTCC_DIV_2 | RTCC_EXT_L_TO_H);
setup_timer_1 (T1_EXTERNAL | T1_DIV_BY_1);
setup_timer_2 (T2_DISABLED, 0,1);
setup_timer_3 (T3_DISABLED | T3_DIV_BY_8);
init_ext_eeprom ();
enable_interrupts (INT_RTCC);
enable_interrupts (INT_RDA);
enable_interrupts (Global);
set_Tris_C (0b10101101);
set_rtcc (0);
delay_ms (200);

getWarSettings ();fprintf (PGM, "START ........ \ r");
DELAY_MS (1000);
resFlg = 0;

ENQUANTO (GPRSCONNECTED == 0) (
resetModem ();
DELAY_MS (1000);
If (! GPRSCONNECTED)
fprintf (PGM ", GPRS propósito FAILD! \ r");
)fprintf (PGM ", GPRS CONNECTED OK $ $ \ r");delay_ms (1000);

/ / TODO: UTILIZADOR CÓDIGO!
while (1) (

getDataStr ();
if (resFlg == 1)
(
checkCommand ();
fprintf (PGM, "STR =%
s \ r", buf);
resFLG = 0;
)
if (WarFlg == 1 | | sendFlg == 1) (

timeUpdatedFlg = 0;
fprintf (GSM, "AT CCLK? \ r");
waitResponse (2000);
if (resFlg == 1)
(
checkCommand ();
resFLG = 0;
)
if (timeUpdatedFlg == 1) (
if (pingFlg == 0) (
storeData_EXTE ();
) else (
pingFlg = 0;
)

if (sendData () == 0) (
fprintf (PGM, "D-: Dados Enviar Erro .. Modem Reconectando Agora \ r");
Reconnect ();
if (gprsConnected! = 1 | | gprsCflg! = 1) (
fprintf (PGM, "D-: Modem Reconexão Erro .. Resto Modem \ r");
resetModem ();
)
)
) else if (ModemResponding () == 0) (
hardResetModem ();
)

)
)) / / main ()

int1 modemResponding () (
CHAR ctrlZ = 26;

fprintf (GSM, "AT \ r");
waitResponse (1000);
fprintf (GSM ," % c ", ctrlZ);
waitResponse (2000);
fprintf (GSM, "AT \ r");
resFlg = 0;
if (waitResponse (1000) == 1) (
return 1;
) else (
return 0;
)

)

void hardResetModem () (

fprintf (PGM, "D-: Modem Hard Reset Obrigatório ... \ r");

)

/ * void checkTime () (/ / ATS = 17 igual a um minuto, este método para definir as horas e minutos

if (ATS> 15) (
ATS = 0;
ATM ;

if (ATM> 59) (
ATM = 0;
ATH ;
)
if (gRunningFLG == 1) (/ / gerador se correr
RTM ;
if (RTM> 59) (
RTM = 0;
RTH ;
)
)
)
) / / checkTime ()
* /

void reconnect (void) (
CHAR C = 34, ctrlZ = 26;
int resp =- 1;
gprsconnected = 0;
gprsCflg = 0;
fprintf (GSM, "AT CIPSTART =% CTCP% C, C%% S% C,%% C1001 C \ r", C, C, c, ip, c, c, c);
RESFLG = 0;
resp = waitresponse (30000);
if (resp! = 5) (/ / já não ligado, em seguida,
if (resp == 3 | | resp == 0) (
fprintf (GSM, "AT CIPSEND \ r \ n");
RESFLG = 0;
waitResponse (1000);
if (nMEflG == 1) (
fprintf (GSM, "$ REGISTAR:% S *% C", NME, ctrlZ);
RESFLG = 0;
if (waitResponse (2000) == 4) (
RESFLG = 0;
waitResponse (6000);
if (gprsCFlg == 1) (
gprsConnected = 1;
fprintf (GSM, "AT CCLK% C =% S% C \ r", c, Servertime, c);
tSyncFlg = 1;
resFlg = 0;
waitResponse (2000);
)
)
)
)
) else (
gprsConnected = 1;
gprsCflg = 1;
)
)int1 resetModem (void) (
CHAR C = 34, ctrlZ = 26;
GPRSCONNECTED = 0;
gprsCflg = 0;

if (resetTries> 5) (
resetTries = 0;
if (ModemResponding () == 0) (
hardResetModem ();
)
)
resFlg = 0;
fprintf (GSM, "ATE0 \ r");
waitResponse (1000);
fprintf (PGM ", ATE0 =%
s \ r", buf);
fprintf (GSM ," % c ", ctrlZ);
waitResponse (1000);
fprintf (PGM ," Z =%
s \ r ", buf);
fprintf (GSM, "AT CIPSHUT \ r");
waitResponse (3000);
fprintf (PGM ", CIPSHUT =%
s \ r", buf);
fprintf (GSM, "AT \ r");
waitResponse (1000);
fprintf (PGM, "AT =%
s \ r", buf);
fprintf (GSM ", ATD 1; \ r");
RESFLG = 0;
waitResponse (10000);
fprintf (PGM, "ATD =%
s \ r", buf);
RESFLG = 1;
fprintf (GSM, "ATH \ r");
waitResponse (1000);
fprintf (PGM, "ATH =%
s \ r", buf);
fprintf (GSM, "AT \ r");
waitResponse (1000);
fprintf (PGM, "AT =%
s \ r", buf);
RESFLG = 1;
fprintf (GSM, "ATE0 \ r");
waitResponse (2000);
fprintf (PGM, "ATE =%
s \ r", buf);
fprintf (GSM, "AT CPBR = 1 \ r");
RESFLG = 0;
waitResponse (2000);
fprintf (PGM ", CPBR =%
s \ r", buf);
if (NmeFlg == 0) (
fprintf (PGM, "Erro: Proprietário número não encontrado \ r");
return 0;

)

fprintf (GSM, "AT \ r");
resFlg = 0;
if (waitResponse (1000) == 1) (
fprintf (GSM, "AT CGDCONT = 1,% CIP% C,%% CINTERNET C \ r", C, C, C, C);
RESFLG = 0;
if (waitResponse (3000) == 1) (
fprintf (PGM, "D : CGDCONT OK \ r");
fprintf (GSM, "AT CSTT =% CINTERNET% C,% CTelenor% C,%% CTelenor C \ r", C, C, C, C, C, C);
RESFLG = 0;
if (waitResponse (3000) == 1) (
fprintf (PGM, "D : CSTT OK \ r");
fprintf (GSM, "AT CIICR \ r");
RESFLG = 0;
if (waitResponse (10000) == 1) (
fprintf (PGM, "D : CIICR OK \ r");
fprintf (GSM, "AT CIFSR \ r");
RESFLG = 0;
if (waitResponse (3000)! = 2) (
fprintf (PGM, "D : CIFSR OK \ r");
fprintf (GSM, "AT CIPSTART =% CTCP% C, C%% S% C,%% C1001 C \ r", C, C, c, ip, c, c, c);
RESFLG = 0;
if (waitResponse (20000) == 3) (
fprintf (PGM, "D : CIPSTARTED CONEXÃO OK \ r");
fprintf (GSM, "AT CIPSEND \ r");
RESFLG = 0;
waitResponse (1000);
if (nMEflG == 1) (
fprintf (GSM, "$ REGISTAR:% S *% C", NME, ctrlZ);
RESFLG = 0;
if (waitResponse (2000) == 4) (
RESFLG = 0;
waitResponse (5000);
if (gprsCFlg == 1) (
gprsConnected = 1;
fprintf (GSM, "AT CCLK% C =% S% C \ r", c, Servertime, c);
tSyncFlg = 1;
resFlg = 0;
waitResponse (2000);
fprintf (PGM, "D : SYCHRONIZED HORÁRIO: 1 \ r");
)
) else (
fprintf (GSM, "$ REGISTAR:% S *% C", NME, ctrlZ);
RESFLG = 0;
if (waitResponse (2000) == 4) (
RESFLG = 0;
waitResponse (5000);
if (gprsCFlg == 1) (
gprsConnected = 1;
fprintf (GSM, "AT CCLK% C =% S% C \ r", c, Servertime, c);
tSyncFlg = 1;
resFlg = 0;
waitResponse (2000);
fprintf (PGM, "D : SYCHRONIZED HORÁRIO: 2 \ r");
)
) else (
fprintf (GSM, "$ REGISTAR:% S *% C", NME, ctrlZ);
RESFLG = 0;
if (waitResponse (2000) == 4) (
RESFLG = 0;
waitResponse (5000);
if (gprsCFlg == 1) (
gprsConnected = 1;
fprintf (GSM, "AT CCLK% C =% S% C \ r", c, Servertime, c);
tSyncFlg = 1;
resFlg = 0;
waitResponse (2000);
fprintf (PGM, "D : SYCHRONIZED HORÁRIO: 3 \ r");
)
) else (
fprintf (GSM, "$ REGISTAR:% S *% C", NME, ctrlZ);
RESFLG = 0;
if (waitResponse (2000) == 4) (
RESFLG = 0;
waitResponse (5000);
if (gprsCFlg == 1) (
gprsConnected = 1;
fprintf (GSM, "AT CCLK% C =% S% C \ r", c, Servertime, c);
tSyncFlg = 1;
resFlg = 0;
waitResponse (2000);
fprintf (PGM, "D : SYCHRONIZED HORÁRIO: 4 \ r");
)
) else (
gprsConnected = 0;
)
)
)
)
)
)
)
)
)
)
)

if (gprsconnected == 1) (
return 1;
) else (
resetTries ;
return 0;
)
)int waitResponse (unsigned int16 t) (
int16 i = 0, J = 0;
int r;
TIMEOUT = T;
timeoutFlg = 1;
For (j = 0; J <T; J ) (
I = 0;
while (i <1000 & & TIMEOUT> 0) (
/ / Delay_US (1);
i ;
)
)

r = 0;
if (Strstr (buf, sAcon)> 0) (
r = 5;
) else if (STRstr (buf, sSen)> 0) (
r = 4;
) else if (STRstr (buf, SCON)> 0) (
r = 3;
) else if (STRstr (buf, SER)> 0) (
r = 2;
) else if (STRstr (buf, SOK)> 0) (
r = 1;
)

if (resFlg == 1 & & r> 0) (
return r;
) else (
return 0;
)

)

int sendData () (
CHAR ctrlZ = 26;
fprintf (GSM, "AT \ r");
waitResponse (1000);
fprintf (GSM, "AT CIPSEND \ r");
RESFLG = 0;
waitResponse (1000); / / nenhum erro.
fprintf (GSM, "% s", dtstr);
waitResponse (200);
RESFLG = 0;
fprintf (GSM, "% c", ctrlZ);
fprintf (GSM, "% c", ctrlZ);
fprintf (GSM, "% c", ctrlZ);
if (waitResponse (5000) == 4) (
resflg = 1;
fprintf (GSM, "AT \ r");
waitResponse (1000);
sendFlg = 0;
return 1;
)
return 0;
)

void storeData_ExtE () (

/ / TimeUpdateFlg = 0;
unsigned long addr = 0, eAddr = 0;
unsigned int sAddr = 0, i = 0;
fprintf (PGM, "% s \ r", dtstr);
fprintf (PGM ", len =% ld \ r", strlen (dtstr));
if (EXTE_Pointer <230) (
sAddr = 0b10100000;
addr = EXTE_Pointer * 140;
) else if (EXTE_Pointer <460) (
sAddr = 0b10100010;
addr = (EXTE_Pointer-230) * 140;
) else if (EXTE_Pointer <690) (
sAddr = 0b10100100;
addr = (EXTE_Pointer-460) * 140;
) else if (EXTE_Pointer <920) (
sAddr = 0b10100110;
addr = (EXTE_Pointer-690) * 140;
) else (
sAddr = 0b10100000;
EXTE_Pointer = 0;
addr = 0;
)
para (eAddr = addr; eAddr <addr 140; eAddr )
(
write_ext_EEprom (eAddr, sAddr, dtStr );
delay_ms (5);
i ;
)
EXTE_Pointer ;
write_eeprom (254, make8 (ExtE_Pointer, 0));
write_eeprom (255, make8 (ExtE_Pointer, 1));
fprintf (PGM ", EXTE_Pointer =% lu \ r", Exte_Pointer);
warFlg = 0;

)

void getDataStr () (
unsigned int16 aData [16], cDwar = 0, cAWarl = 0, cAWarh = 0, j = 0;
unsigned Int32 atemp;
int8 i, pins, genStatus = 5;
char astarik [3 ]={"* \ 0 ");
char vírgula [3 ]={", \ 0 ");
char tString [6];
dtstr [0 ]='$';
dtstr [1] = 'D';
dtstr [2 ]=',';
dtstr [3] = '\ 0';
strcat (dtStr, NME);
strcat (dtStr, vírgula);
readFreq ();
if (Freq> 25) (
genStatus = 0; / / gerador executando
) else (
genStatus = 1;
)
itoa (genStatus, 10, tString);
strcat (dtStr, tString);
strcat (dtStr, vírgula);

warFlg = 0;
output_low (C1E);
output_high (C2E);
dData = 0;
delay_us (100);

para (pinos = 0; pinos <16; pinos ) (
output_d (pinos);
delay_us (25);
if (input (dDin)) (
bit_set (dData, alfinetes);
) else (
bit_clear (dData, alfinetes);
)

/ / Fprintf (PGM, "d [% d] =% d \ r", pins, entrada (dDin));
)
itoa (dData, 10, tString);
strcat (dtStr, tString);
strcat (dtStr, vírgula);

output_low (C2E);
output_high (C1E);
delay_ms (1);

para (pinos = 0; pinos <16; pinos ) (
output_d (pinos);
atemp = 0;
for (j = 1, j <= 1000; j ) (
delay_us (50);
atemp = read_adc ();
)
aData [pinos] = atemp/1000;

itoa (aData [pinos], 10, tString);
strcat (dtStr, tString);
strcat (dtStr, vírgula);

/ / Fprintf (PGM, "a [% d] =% ld \ r", pins, adata [pinos]);
)/ / Fprintf (PGM, "guerra verificação --- \ r");
for (i = 0; i <16; i ) (
if (bit_test (dWarEnabled, i)) (
if (bit_test (dData, i) == 0) (/ / condição normalmente aberto / alta
bit_set (cdwar, i);
/ / Fprintf (PGM ", dwarning =% d \ r", i);
)
)
)

for (i = 0; i <16; i ) (
if (bit_test (aWarEnabledL, i)) (
if (aData <= LwarLevel ) (
bit_set (cAWarL, i);
/ / Fprintf (PGM ", aLwarning =% d \ r", i);
)
)
if (bit_test (aWarEnabledH, i)) (
if (aData > = hwarLevel ) (
bit_set (cAWarH, i);
/ / Fprintf (PGM ", aHwarning =% d \ r", i);
)
)
)

if ((dwar! = cDwar) | | (aWarL! = cAwarL) | | (aWarH! cAwarH =)) (
warFlg = 1;
dwar = cDwar;
aWarL = cAwarL;
aWarH = cAwarH;
itoa (cdWar, 10, tString);
strcat (dtStr, tString);
strcat (dtStr, vírgula);
itoa (caWarL, 10, tString);
strcat (dtStr, tString);
strcat (dtStr, vírgula);
itoa (caWarH, 10, tString);
strcat (dtStr, tString);
strcat (dtStr, vírgula);
readFreq ();
itoa (Freq, 10, tString);
strcat (dtStr, tString);
strcat (dtStr, vírgula);
strcat (dtStr, Astarik);
fprintf (PGM, "Mudar Estado ou advertência está lá ... \ r% s \ r", dtstr);
) else (
fprintf (PGM, "Não existe aviso .... \ r");
warFlg = 0;
cDwar = 0;
cAwarL = 0;
CAwarH = 0;
itoa (cdWar, 10, tString);
strcat (dtStr, tString);
strcat (dtStr, vírgula);
itoa (caWarL, 10, tString);
strcat (dtStr, tString);
strcat (dtStr, vírgula);
itoa (caWarH, 10, tString);
strcat (dtStr, tString);
strcat (dtStr, vírgula);
readFreq ();
itoa (Freq, 10, tString);
strcat (dtStr, tString);
strcat (dtStr, vírgula);
strcat (dtStr, Astarik);
nforPing ;
if (nforPing> 6) (
nforPing = 0;
sendPING ();
sendFlg = 1;
)
))

void setWarSettings (void) (
unsigned int8 EEaddr = 0;
char termo [3], * ptr;
int i = 0;
longo val = 0;
strcpy (termo ,",;");
ptr = strtok (buf, prazo);
ptr = strtok (0, prazo);

if (ptr! = 0) (

Atol dwarEnabled = (ptr);
fprintf (PGM, "dwar =% ld \ r", dwarEnabled);
ptr = strtok (0, prazo);

while (ptr! = 0 & & * ptr! = 42) (

i = atoi (ptr);
fputs (ptr, PGM);
ptr = strtok (0, prazo);
val = Atol (ptr);
if (val> 0) (
bit_set (awarEnabledL, i);
LwarLevel = val;
fprintf (PGM, "L% d =% ld \ r", i, val);
) else (
bit_clear (awarEnabledL, i);
LwarLevel = val;
fprintf (PGM, "L% d =% ld \ r", i, val);
)
ptr = strtok (0, prazo);
val = Atol (ptr);
if (val> 0) (
bit_set (awarEnabledH, i);
HwarLevel = val;
fprintf (PGM, "H% d =% ld \ r", i, val);
) else (
bit_clear (awarEnabledH, i);
HwarLevel = val;
fprintf (PGM, "H% d =% ld \ r", i, val);
)

ptr = strtok (0, prazo);
)
)
EEaddr = 0;
write_eeprom (EEaddr, make8 (dwarEnabled, 0));
write_eeprom (EEaddr 1, make8 (dwarEnabled, 1));
delay_ms (5);
EEaddr = 2;
write_eeprom (EEaddr, make8 (awarEnabledL, 0));
write_eeprom (EEaddr 1, make8 (awarEnabledL, 1));

delay_ms (5);
EEaddr = 2;
write_eeprom (EEaddr, make8 (awarEnabledH, 0));
write_eeprom (EEaddr 1, make8 (awarEnabledH, 1));
for (i = 0; i <16; i ) (
delay_ms (5);
EEaddr = 2;
write_eeprom (EEaddr, make8 (LwarLevel , 0));
write_eeprom (EEaddr 1, make8 (LwarLevel , 1));
)
for (i = 0; i <16; i ) (
delay_ms (5);
EEaddr = 2;
write_eeprom (EEaddr, make8 (HwarLevel , 0));
write_eeprom (EEaddr 1, make8 (HwarLevel , 1));
)
fprintf (PGM, "Novas configurações de alerta têm sido programado. \ r");
)

void checkCommand () (if (buf [0 ]=='$' & & buf [1] == 'W' & & buf [2] == 'S') (
setWarSettings ();
) else if (buf [2 ]==' ' & & buf [3] == 'C' & & buf [4] == 'C' & & buf [5] == 'L' & & buf [6] == 'K') (

Ctime [0] = buf [10]; ctime [10] = buf [20];
Ctime [1] = buf [11]; ctime [11] = buf [21];
Ctime [2] = buf [12]; ctime [12] = buf [22];
Ctime [3] = buf [13]; ctime [13] = buf [23];
Ctime [4] = buf [14]; ctime [14] = buf [24];
Ctime [5] = buf [15]; ctime [15] = buf [25];
Ctime [6] = buf [16]; ctime [16] = buf [26];
Ctime [7] = buf [17]; ctime [17] = buf [27];
Ctime [8] = buf [18]; ctime [18] = buf [28];
Ctime [9] = buf [19]; ctime [19] = buf [29];
Ctime [20] = '\ 0';
strcat (dtStr, ctime);
timeUpdatedFlg = 1;
) else if (buf [0 ]=='$' & & buf [1] == 'Q' & & buf [2] == '-' & & buf [3] =='1 ') (
sendFlg = 1;
) else if (buf [0 ]=='$' & & buf [1] == 'Q' & & buf [2] == '-' & & buf [3] =='2 ') (
sendFlg = 1;
) else if (buf [0 ]=='$' & & buf [1] == 'Q' & & buf [2] == '-' & & buf [3] =='3 ') (
sendFlg = 1;
)

)void getWarSettings (){// definição de eeprom.
int EEaddr = 0, i;

dWarEnabled = make16 (read_eeprom (EEaddr 1), read_eeprom (EEaddr));
fprintf (PGM, "ee1 =% lu \ r", dwarEnabled);
EEaddr = 2;
aWarEnabledL = make16 (read_eeprom (EEaddr 1), read_eeprom (EEaddr));
fprintf (PGM ", ee2 =% lu \ r", awarEnabledL);
EEaddr = 2;
aWarEnabledH = make16 (read_eeprom (EEaddr 1), read_eeprom (EEaddr));
fprintf (PGM ", ee3 =% lu \ r", awarEnabledH);
for (i = 0; i <16; i ) (
EEaddr = 2;
LWarLevel = make16 (read_eeprom (EEaddr 1), read_eeprom (EEaddr));
fprintf (PGM, "Lee [% d] =% lu \ r", i, LwarLevel );
)
for (i = 0; i <16; i ) (
EEaddr = 2;
HWarLevel = make16 (read_eeprom (EEaddr 1), read_eeprom (EEaddr));
fprintf (PGM, "Hee [% d] =% lu \ r", i, HwarLevel );
)
EEaddr = 254;
ExtE_Pointer = make16 (read_eeprom (EEaddr 1), read_eeprom (EEaddr));
fprintf (PGM ", Exte_pointer =% lu \ r", ExtE_Pointer);
if (ExtE_Pointer> 1000) (
ExtE_Pointer = 0;
write_eeprom (EEaddr, make8 (ExtE_Pointer, 0));
write_eeprom (EEaddr 1, make8 (ExtE_Pointer, 1));
))

///////////////////////////////

void sendPING () (
CHAR ctrlZ = 26;
int res = 0;
dtstr [0 ]='$';
dtstr [1] = 'P';
dtstr [2] = 'I';
dtstr [3] = 'N';
dtstr [4] = 'G';
dtstr [5 ]='*';
dtstr [6] = '\ 0';
PINGFlg = 1;
/ * ResFlg = 0;
fprintf (GSM, "AT \ r");
waitResponse (1000);
fprintf (GSM, "AT CIPSEND \ r");
RESFLG = 0;
waitResponse (1000); / / nenhum erro.
fprintf (GSM, "% s", dtstr);
waitResponse (200);
RESFLG = 0;
fprintf (GSM, "% c", ctrlZ);
res = waitResponse (5000);
fprintf (PGM, "d: PINGSEND =% s \ r", buf);
if (res! = 4 & & pingTries <4) (
pingTries ;
resflg = 0;
fprintf (GSM, "AT \ r");
waitResponse (1000);
) else if (res == 4) (
fprintf (PGM, "D : PING Enviadas OK. \ r");
pingtries = 0;
resflg = 0;
fprintf (GSM, "AT \ r");
/ / waitResponse (10000);
) else (
sendFlg = 1;
)

resFlg = 0;
* /
)

void readFreq () (
desde i = 0;
SET_TIMER1 (0);
for (i = 1; i <1000; i ) (
delay_ms (1);
)
freq = GET_TIMER1 ();
/ / fprintf (PGM, "F =%
ld \ r", freq);

)

 

Welcome to EDABoard.com

Sponsor

Back
Top