modem communicatie

P

puneetnepsam

Guest
-------------------------------------------------- ------------------------------

Hi all,

Ik wil testen of mijn modem is te reageren op de AT-commando's of niet?

Stel als ik u het commando "op crsm =?"
hij stuurt me het antwoord "OK"

Mijn modem is aangesloten op de PIC24F via UART interface ..

kan iemand mij vertellen hoe verder ...

moet ik hebben voor het verzenden van AT commando van de code

als ik schrijf
buf [] = "op cmgs =?"

en stuur het
sendUART (buf );

en als ik dat doe
buf1 [] = receiveUART ();

krijg ik het antwoord in buf1 [] buffer

Bedankt
Puneet

 
Obecnie pracownicy chcą korzystać w pracy z urządzeń, które sami wybiorą. To znaczy, ze firmy muszą zmierzyć się z wyzwaniami polityki Bring Your Own Device (BYOD), która niewłaściwie wdrożona bywa zagrożeniem dla bezpieczeństwa.

Read more...
 
Hai puneetnepsam
Kunt u voorkomen dat meerdere berichten van hetzelfde onderwerp onder verschillende secties.Succes

 
pranam,,,

eigenlijk dit onderwerp behoort tot de gemeenschappen ... dat
de y posted in beide ...

 
puneetnepsam
Als je antwoorden krijg je het overal.Succes

 
puneetnepsam schreef:

-------------------------------------------------- ------------------------------

[...]

en als ik dat doe

buf1 [] = receiveUART ();krijg ik het antwoord in buf1 [] buffer

[...]

Puneet
 
hi Arthur

i am devoloped deze code ...... please reserveonderdelen enige tijd en ga via het ........#
include "p24fj256gb110.h"
#
include "serial.h"

int main ()
(
unsigned char uIdx = 0;
const unsigned char send_AT_Cmd [] = "AT CSIM =?";
unsigned char rec_cmd [20];

init_uart ();

voor (uIdx = 0; send_AT_Cmd [uIdx]! = '\ 0'; uIdx ) / / verzenden AT-opdrachten
(
SendUSART (send_AT_Cmd [uIdx]);
)

uIdx = 0;
voor (uIdx = 0; uIdx <20; uIdx )
while (1)
(
rec_cmd [uIdx] = RecUSART ();
if (! rec_cmd [uIdx])
break;
uIdx ;
)
/ / verzenden AT
return 0;
)

ben ik in staat zal zijn om de AT antwoord van de modem in de rec_cmd registreren .......

cirkelvormige haven buffer betekent?
welke veranderingen heb ik te doen

 
Allereerst een circulaire buffer e very nice construeren dat implementeert een buffer zonder einde.Het
is ideaal voor situaties zoals die van u, wanneer u wilt tijdelijk opslaan van berichten van onbekende, willekeurige grootte.
Door dubbel-poort, ik bedoelde een buffer die u kunt zelfstandig toegang vanuit twee verschillende kanten (dat
wil zeggen je hebt een "lees" aanwijzer op de client-kant, en een aparte "write" aanwijzer op de server-side).
Lees meer hier:

http://en.wikipedia.org/wiki/Circular_buffer

Ik denk niet dat je code zal werken.
Aan de zender kant, ik denk dat u een carriage return (CR LF) aan het einde van de AT-string.Als dat het geval is, voeg "\ r \ n" aan het eind van uw const AT string.
Op de receiver zijde, ongeacht hoe je geïmplementeerd "RecUSART ()", lijkt het er op dat u ofwel overschrijven het antwoord, of de buffer overflow nogal snel.(Een andere onafhankelijke waarneming is dat in embedded systemen, de belangrijkste lus moet nooit einde!)
Waarom doe je niet alleen iets doen als dit:
Code:[...]init_uart ();while (1)

(/ / Main lus nooit mag worden toegestaan tot eind!/ * TODO: dummy lees de recv registreer om te spoelen eventuele previos tekens, zoals

unsigned char dummy = SBUF;

* /voor (uIdx = 0; send_AT_Cmd [uIdx]! = '\ 0'; uIdx ) / / verzenden AT-opdrachten

(

SendUSART (send_AT_Cmd [uIdx]);

)uIdx = 0;

doen

(

unsigned char ch = RecUSART ();if (ch! = '\ r')

rec_cmd [uIdx] = ch;

anders

rec_cmd [uIdx] = '\ 0'; / / een string terminatorsequenties NULLuIdx ;) while (ch! = '\ r' & & uIdx <20)/ * TODO: hier moet u een volledig antwoord te geven, minus de CRLF, of de

buffer vol is.
Doen wat nodig is met het voor het verzenden / lezen van een aantal

meer * /

)[...]

 
makker, bedankt voor een zeer goed antwoord

Maar het antwoord van de modem bevat ... "OK" ... en niets anders, als ik u het volgende AT commando
"AT CSIM"

Vervolgens yi behoefte om te controleren op '\ r'.... i coouldnt krijgen dit ding ...

kunt u mij alstublieft uitleggen in detail .....
Ik zou dit ding in de uitzendende string ook?Toegevoegd na 14 minuten:eek:k ... zeg je zo:

int main ()
(
unsigned char uIdx = 0;

const unsigned char send_AT_Cmd [] = "AT CSIM =? \ r \ n";

unsigned char rec_cmd [20];

init_uart ();
while (1)
(/ /
Main lus nooit mag worden toegestaan tot eind!

/ * TODO: dummy lees de recv registreer om te spoelen eventuele previos tekens, zoals
unsigned char dummy = SBUF;
* /

voor (uIdx = 0; send_AT_Cmd [uIdx]! = '\ 0'; uIdx ) / / verzenden AT-opdrachten
(
SendUSART (send_AT_Cmd [uIdx]);
)

uIdx = 0;
doen
(
unsigned char ch = RecUSART ();

if (ch! = '\ r')
rec_cmd [uIdx] = ch;
anders
rec_cmd [uIdx] = '\ 0'; / / een string terminatorsequenties NULL

uIdx ;

) while (ch! = '\ r' & & uIdx <20)

/ * TODO: hier moet u een volledig antwoord te geven, minus de CRLF, of de
buffer vol is.Doen wat nodig is met het voor het verzenden / lezen van een aantal
meer * /
)
return 0;
)

MAAR weet je zeker dat dat in het antwoord ook caarriage terugkeer zou daar?

 
Nee, ik
ben niet zeker weet krijg je een wagen in ruil.Ik neem aan dat je doen om dit voorbeeld werk.

Als je niet een, moet u een andere methode om erachter te komen wanneer het antwoord is volledig ontvangen (zoals wanneer je de RX-lijn inactief voor meer dan 2 karakters, of zoiets)., Of alleen de interpretatie van de tekens als ze komen, totdat ze zinvol ...

Als alternatief kunt u het apparaat opdracht geven numerieke antwoorden (in tegenstelling tot de tekst), dat zou veel makkelijker te ontleden en te interpreteren (je zou krijgen dan "0"
in plaats van "OK" en zo verder).Controleer uw apparaat spec.over hoe dat te doen.

Aan het doorgeven kant echter, zou u behoefte aan een string beëindiging karakter (configureerbaar op bepaalde apparaten, dus contact op met de spec.) Dat is meestal Carriage Return (en niet met de regel zoals ik eerder dacht).Dus gewoon '\ r' (CR), en niet '\ n' (LF) aan het einde van je AT-opdrachten.

Debug een beetje en probeer aan te passen aan de nieuwe problemen; doen sommige zoekopdrachten en gebruik je hersenen meer ...
Succes!

Arthur

 
thanks a lot maatje .... ziek proberen deze methode op mijn hardware ....

bedankt voor de hulp

 

Welcome to EDABoard.com

Sponsor

Back
Top