PIC AT Command and CCS

J

jaime

Guest
Hallo
Jeg prøver å koble meg pic til min siemens C45 i C.

Jeg ønsker å gjøre et avbrudd av RX pin å lese data fra telefonen.
Jeg vet at telefonen sender OK (i hex: 0D 0A 4F 4B 0D 0A

Jeg må bruke en rotine med getc fordi denne strengen dont avslutt med 0D (CR), så jeg skrånende bruk får.
Hvordan kan jeg gjøre dette?

Takk

Jaime

 
Hei,

Når du sender AT-kommandoen kan du også ved legge til 0x0d på slutten er det ikke problem.JEG dont vite hvor å bruk CCS, im flere av h * tech kompilator, men bare sende AT og venter på OK.Bruk et fint program å snuse dataene linje (med en buffer til PC).Jeg elsker å bruke Docklight at du kan finne på nettet.Har mange funksjoner som er svært nyttig når man jobber med Modem og MCU.
.
( NO
points will be taken from you! )Hvis du fant svaret mitt nyttig, klikk på knappen som sier
hjalp meg.

(NO
poeng vil bli tatt fra deg!)Lykke til.

 
Takk for svar

Jeg har ingen problemer med sending på kommandoer.

Mitt problem er receivind data.Jeg trenger å se en rutine som reveivs på kommandoer.
Jeg vet at jeg må vente på OK.Men hvordan vet jeg at jeg får en OK?

takk

 
Hei,
hvorfor du ikke kan bruke getc, dette er ikke en sammenheng med NL / CR byte, getc lese motta buffer og få verdien til en variabel:
buffer [n] = getc (); dette i RSRX int subroutine
når du Recive han vil bli skrevet til variabel buffer [].
0A dette er en ny linje.Hvis modemet tilbake alltid 0A eller 0D etter streng, den du kan bruke dem begge til slutten av mesage, vil du ha ett flagg start pakke, flagg slutt pakke.

temp = getc ();
if ((temp == 0x0A | | temp == 0x0d) & start pakke)
(
start pakke = false;
end package = true;
)
ellers
(
buffer [x] = temp;
x ;
)

i programmet du vil sjekke slutt pakken, og når det er en sann du vil lese data fra buffer og foreta x = 0 Anf slutten ackage = false:

if (end-pakken)
(
end package = false
if (buffer [0] = 'O' & & buffer [1] = 'K' & & x == 1)
(
gjøre noe;
)
)

 
Jeg forstår hva du mener, men jeg dont virkelig se den første delen av programmet fungerer.

if ((temp == 0x0A | | temp == 0x0d) & start pakke)

Jeg tror programmet aldri inn i denne tilstanden.Det er ingen start pakke = sant og temp blir bare ett av tilstanden 0x0A eller 0x0d ...Er du enig?

Som jeg sa at jeg forstår hva du mener, men jeg dont vite hvem som skal gjøre det, så hjelp meg en litle mer<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Smil" border="0" />Du fikk poeng!

Takk

 
Hei,
når jeg skriver dette i går kveld var jeg en meget sleeply og ser at jeg glemte noe:

# INT_RDA
void RDA_IRS (void)
(
char temp;
temp = getc ();
if ((temp == 0x0A | | temp == 0x0d) & & package_start)
(
package_start = 0;
package_end = 1;
)
ellers
(
if (temp! = 0x0A & & temp! = 0x0d)
(
package_start = 1;
buffer [n] = temp;
n ;
)
)
)

Dette er en pakke motta.

if (package_end)
(
package_end = 0;
if (buffer [0] == 'O' & & buffer [1] == 'K' & & n == 2)
(
printf ( "Hei");
n = 0;
)
)

og dette er sjekk pakken er Thi swork, men ....dette er bare idé, når du har en henvendelse, må du implementere dette i kommunikasjonsprotokoll, fordi jeg anta at du må motta og overføre data til modemet.

 

Welcome to EDABoard.com

Sponsor

Back
Top