Re: rs232 buffer Kategorie: Programmierung C (von mave - 28.06.2013 9:18) | |
Als Antwort auf Re: rs232 buffer von PeterS - 27.06.2013 13:08
| |
Hallo Peter Ich rufe deswegen den Serial Init uin der Schleife jedesmal auf weil sich der Buffer nicht von selbst löscht. Wenn ich mir das Array von dem gliobalen Buffer anzeigen lasse wird der immer mehr mehr. den Zwischenspeicher lösche ich jedes mal imt Str_Fill... Ich dachte der globale Puffer löscht sich immer automatisch sobald ich ihm in den Zwischenspeicher übergebe?!? Wo ist hier mein Denkfehler. Was ich ebenso nicht verstehe ist der Buffer für das Senden. Wenn ich diesen mit 0 deklariere funktioniert der Empfang im Zwischenspeicher perfekt sobald ich diesem jedoch Bits zuordne bekomme ich im Zwischenspeicher nur immer ein OK. ? Bitte um Hilfe finde dazu im Internet nirgends eine Erklährung. lg mave > 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: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum