Avatar billede che0ps Nybegynder
08. april 2008 - 14:53 Der er 6 kommentarer og
1 løsning

Sende SMS'er via GSM Modem (AT Commands)

Jeg sidder og forsøger at få et GSM modul til at sende sms'er via AT Commands, jeg kan let få det til at virke når jeg bruger hyperterminalen.
Men virker ikke når jeg skriver det i C og ligge på ATMEGA8535 chip med tilhørende print.

min kode ser sådan her ud:

        printf("AT+CMGF=1");
        delay_ms(1000);
        printf("AT+CMGS=\"99999999\""); 
        delay_ms(1000);
        printf("Beskeden");
        delay_ms(1000);
        printf((char)(26));
        delay_ms(1000);

Tror problemet ligger i den måde den håndtere det CTRL + Z på, som sendes ved at bruge (char)(26)

ps. (char)(26) virker fint i min C# application, ved brug af ->

port.WriteLine(besked + System.Environment.NewLine + (char)(26));

På forhånd tak, håber der er hjælp og hente ..

AT Commands kan findes her -> http://www.smssolutions.net/tutorials/gsm/sendsmsat/
Avatar billede Slettet bruger
08. april 2008 - 15:06 #1
ved ikke så meget om c# men prøv at sende et par (char)(13) (char)(10) efter (26)

og har du prøvet kun at sende en "AT" uden noget? så skulle du gerne få en "OK" tilbage

Jeg har selv kodet meget til gsm og det kan være rigtigt bøvlet så det er best at gå langsomt frem
Avatar billede arne_v Ekspert
08. april 2008 - 15:18 #2
eller maaske konsekvent \n til sidste i alle printf formaterne (forudsat at stdout
er redirected til porten)
Avatar billede che0ps Nybegynder
09. april 2008 - 13:03 #3
jeg har prøvet med at sætte  (char)(13) (char)(10) efter 26 og har prøvet med \n efter hver linie. det virker stadig ikke :(

Jeg har dog i mellemtiden fundet ud af hvordan jeg sender ctrl+z nu. gør jeg ved at sende

UDR = 0x1A;

Men den sender stadig ikke sms'er.
andre forslag ? evt noget kode med noget i ved virker :)

Min kode ser sådan her ud indtil videre:
        printf("ATZ");
        delay_ms(1000);
        printf("AT+CMGF=1");
        printf("\r\n");
        delay_ms(4000);
        printf("AT+CMGS=\"12345678\"");
        printf("\r\n");
        delay_ms(1000);
        printf("blablabla");
        printf("\r\n");
        delay_ms(4000);
        UDR = 0x1A;
        delay_ms(5000);
Avatar billede Slettet bruger
09. april 2008 - 13:05 #4
jeg har masser af delphi kode
Avatar billede Slettet bruger
09. april 2008 - 13:33 #5
måske du se nærmere på disse 2
AT+CNMI=0,1,1,1,0<cr>AT+CSMP=17,169,0,0

kan ikke huske hvad parameterne er men du må ha en bedre AT liste en du har linket til
Avatar billede che0ps Nybegynder
09. april 2008 - 21:18 #6
jape44 -> Prøver imorgen, men tvivler nu på at det kan have nogen indvirkning da det jo virker upåklageligt under C# uden CNMI og CSMP . . men skal selvfølig testes . .
Avatar billede che0ps Nybegynder
10. april 2008 - 11:04 #7
Fandt selv fejlen, var desværre en dumhed fra min side af :/ det var fordi det RS232 kablet fra AVR Board til GSM Modem ikke var krydset, da det ikke skal være det fra PC til GSM Modem . .
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester