Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: rs232 buffer Kategorie: Programmierung C (von PeterS - 27.06.2013 13:08)
Als Antwort auf rs232 buffer von mave - 27.06.2013 8:58

Bitte das Serial_Init_IRQ() nur einmal benutzen, und nicht in einer
Schleife dauernd aufrufen, das kann zu Datenverlust führen.

Ansonsten, wenn Du hier Code präsentierst, bitte die code tags
benutzen und ordentlich einrücken.

Gruss Peter

> Hallo allerseits
>
> Verständnisfrage:
> Ich benutze am Applicationboard die RS 232 an einem GSm Handy
> Der Mikrocontroller sendet bei fehlermeldungen eine SMS und fragt im 5 Minuten Intervall
> über RS232 das HAndy ab ob im Buffer eine SMS empfangen wurde. Das funktioniert bestens.
>
> Nun meine Frage: Die RS232 ist ja Interrupt gesteuert oder? Es mu� doch möglich sein
> dass der Microcontroller über Interuppt erkennt ob seitens GSM etwas eingegangen ist oder? Und diese
> dann automatisch sofort bearbeitet?
>
> Anbei mein Programmteil zum RS232 :
>
> Zuerst wird der Buffer ausgelesen und überprüft ob ein gewisser Text darin vorhanden ist.
> Wenn ja wird ein Befehl im µC ausgeführt. Wenn nein wird die SMS im Handyspeicher gelöscht.
> void remotehandy(void)
>  {
>   if (activity==0)
>   {
>   activity=1;
>   int a;
>   a=0;
>   cam1=0;
>   cam2=0;
>   cam3=0;
>   cam4=0;
>   cam5=0;
>
>   Text1="at+cmgr=26";//korregieren
>
>
>   //Init RS232: 19200 bps, 8 Bit, 1 Stop, NP
>   // 20 byte Empfangspuffer - 15 byte Sendepuffer
>   Serial_Init_IRQ(1,buffer2,0,104,SR_8BIT|SR_1STOP|SR_NO_PAR,SR_BD19200);
>   Serial_WriteText(1,Text1);                  // Text über RS232 ausgeben
>   Serial_Write(1,CR);
>   AbsDelay(2000);                             // 2 Sek. Wartezeit bis zur GröÃ?e des
>                                               // Empfangspuffers werden die seriellen
>                                               // Eingaben aufgezeichnet
>
>   while(true)
>   {
>   sz=Serial_ReadExt(1);                   // Puffer auslesen
>   if (sz==0x100 & a==0)   //keine sms im Handy empfangen
>   {
>   break;
>   }
>   if(sz==0x100 &a>10)
>   {
>   cam1=qwe[86];
>   cam2=qwe[87];
>   cam3=qwe[88];
>   cam4=qwe[89];
>   cam5=qwe[90];
>   if (cam1==0x43 & cam2==0x36 & cam3==0x45 & cam4==0x30 & cam5==0x33)
>    {
>    web=0;
>    Webcam();
>    Str_Fill(qwe,0,110);
>    }
>
>   Text1="at+cmgd=26";//korregieren
>
>   Serial_Init_IRQ(1,buffer2,0,110,SR_8BIT|SR_1STOP|SR_NO_PAR,SR_BD19200);
>   Serial_WriteText(1,Text1);                  // Text über RS232 ausgeben
>   Serial_Write(1,CR);
>   AbsDelay(2000);                             // 2 Sek. Wartezeit bis zur GröÃ?e des
>                                               // Empfangspuffers werden die seriellen
>                                               // Eingaben aufgezeichnet
>
>   break;                      // bei 0x100 ist der Puffer leer
>   }
>   qwe[a]=sz;
>   a=a+1;
>
>
>    }
>
>    }
>
>
>   }
>
> thanks
> lg
> mave


    Antwort schreiben


Antworten:

Re: rs232 buffer (von mave - 28.06.2013 9:18)