Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > Also das einlesen habe ich jetzt gelöst. Ich hatte Probleme mit dem Terminalprogramm. > Anbei auch meine Lösung. > Aber wie bekomme ich v24.auslesen und v24.auswertung in einen Thread? > Und vor allem, wie mache ich das mit der Übergabe von buf[] und type gps? > <code> > //serielle Schnittstelle einlesen und auswerten > //GPS-Signal mit Modul v24 auswerten > //alphanum. Eingabe mit Übernahme > //mit Modul menu > //grobe Richtung anzeigen > //Entfernung anzeigen > //Koordinate in Stunden umrechnen > //mit Himmelsrichtung > //gps - Programmaufteilung > //gps10 - Daten in Flash-Segment > //gps9 - mit Zeiger > //gps8 - Weitere Anzeigen > //gps7 - Anzeige Kompass > //gps6 - Anzeige Uhr > //gps5 - 3. Ebene im Menü (Eingabe) > //gps4 - 2. Ebene im Menü (Edit) > //gps3 - Auswahl im Menü > //gps2 - Menü für Datenbank > //gps1 - Datenbank vor und zurück blättern > > string s,hs,s3; > float e; > byte buf[255]; > > //hier gehts los > thread main > { > v24.gpsData gps0; > int i0,anzahlDaten; > anzeige.gradMemory=360; > anzeige.zeigerMemory=0; > anzahlDaten=menu.datenbank(); //Anzahl Datensätze auslesen > //Programm initialisieren > lcdext.init(); > touchlcd.init(); > touchlcd.cursor(0); > i0=anzahlDaten-1; > hwcom.init(); > hwcom.setspeed(hwcom.SPEED_4800); > //v24.initData(gps0); > //v24.zeigeData(gps0); > //sleep(3000); > //v24.testBuffer(gps0,buf); > //v24.auswertung(gps0,buf); > //v24.zeigeData(gps0); > v24.auslesen(gps0,buf); > //while(-1); > > loop > { > touchlcd.textmodus(1,1); > touchlcd.touchactive(1); > touchlcd.touchevent(0,0); //kein invers, kein Beep > i0=menu.anzeigen(i0); //letzter Datensatz auswählen > } > } > </code> > <code> > //Serielle Schnittstelle einlesen > //Modul v24, GPS-Signal formatiert > > type gpsData > { > string kennung; > string zeit; > string status; > string breite; > string breiteB; > string laenge; > string laengeL; > string speed; > string grad; > string datum; > string gradM; > string direction; > string mode; > string checksum; > } > //gpsData gps; > > function initData(gpsData gps) > { > //gpsData definieren > gps.kennung="dgs,fgd,fgd$fds,k$GPRMC"; > gps.zeit="135155.000"; > gps.status="A"; > gps.breite="4959.3687"; > gps.breiteB="N"; > gps.laenge="00813.8943"; > gps.laengeL="E"; > gps.speed="0.00"; > gps.grad="258.97"; > gps.datum="220307"; > gps.gradM=""; > gps.direction=""; > gps.mode="A"; > gps.checksum="*6c"; > } > > function zeigeData(gpsData gps) > { > touchlcd.clear(); > touchlcd.textmodus(1,1); > touchlcd.font(3,1,1); > touchlcd.text2('L',1,0,gps.kennung); > touchlcd.text2('L',1,8,gps.zeit); > touchlcd.text2('L',1,16,gps.breiteB); > touchlcd.text2('L',8,16,gps.breite); > touchlcd.text2('L',1,24,gps.laengeL); > touchlcd.text2('L',8,24,gps.laenge); > touchlcd.text2('L',1,32,gps.speed); > touchlcd.text2('L',1,40,gps.grad); > touchlcd.text2('L',1,48,gps.datum); > } > > //in das Byte-Array buf[255] wird ein GPS-Signal kopiert > function testBuffer(gpsData gps,byte buf[]) > { > string k; > int l1,l2; > > k=","; > l2=0; > l1=str.length(gps.kennung); > mem.copy(buf,0,gps.kennung,l1); > l2=l2+l1; > mem.copy(buf,l2,k,1); > l2=l2+1; > l1=str.length(gps.zeit); > mem.copy(buf,l2,gps.zeit,l1); > l2=l2+l1; > mem.copy(buf,l2,k,1); > l2=l2+1; > l1=str.length(gps.status); > mem.copy(buf,l2,gps.status,l1); > l2=l2+l1; > mem.copy(buf,l2,k,1); > l2=l2+1; > l1=str.length(gps.breite); > mem.copy(buf,l2,gps.breite,l1); > l2=l2+l1; > mem.copy(buf,l2,k,1); > l2=l2+1; > l1=str.length(gps.breiteB); > mem.copy(buf,l2,gps.breiteB,l1); > l2=l2+l1; > mem.copy(buf,l2,k,1); > l2=l2+1; > l1=str.length(gps.laenge); > mem.copy(buf,l2,gps.laenge,l1); > l2=l2+l1; > mem.copy(buf,l2,k,1); > l2=l2+1; > l1=str.length(gps.laengeL); > mem.copy(buf,l2,gps.laengeL,l1); > l2=l2+l1; > mem.copy(buf,l2,k,1); > l2=l2+1; > l1=str.length(gps.speed); > mem.copy(buf,l2,gps.speed,l1); > l2=l2+l1; > mem.copy(buf,l2,k,1); > l2=l2+1; > l1=str.length(gps.grad); > mem.copy(buf,l2,gps.grad,l1); > l2=l2+l1; > mem.copy(buf,l2,k,1); > l2=l2+1; > l1=str.length(gps.datum); > mem.copy(buf,l2,gps.datum,l1); > l2=l2+l1; > mem.copy(buf,l2,k,1); > l2=l2+1; > k=",,A,*6c"; > l1=str.length(k); > mem.copy(buf,l2,k,l1); > l2=l2+l1; > buf[l2]=12; //in Buf steht dann 13,??? > buf[l2+1]=9; //in buf steht dann 10,??? > k=""; //Wird einfach im Display angezeigt,??? > } > > function auswertung(gpsData gps,byte buf[]) > { > string s14[14]; > int zaehler,pos; > pos=0; > //strx.split(buf,s14,','); geht leider nicht > for zaehler=0 ... 127 > { > if buf[zaehler]=='*' & pos==13 > break; //zaehler=255; //Schleife verlassen > else if buf[zaehler]=='$' > { > for pos=0 ... 13 > s14[pos]=""; //str.clear(s14[pos]); geht nicht richtig! > pos=0; > } > else if buf[zaehler]==',' > pos=pos+1; > else > str.putchar(s14[pos],buf[zaehler]); > } > if strx.comp("GPRMC",s14[0]) > { > gps.kennung=s14[0]; > if str.length(s14[1])==10 //Gültigkeit prüfen > gps.zeit=s14[1]; //und zuweisen > gps.status=s14[2]; > if str.length(s14[3])==9 > gps.breite=s14[3]; > if str.length(s14[4])==1 > gps.breiteB=s14[4]; > if str.length(s14[5])==10 > gps.laenge=s14[5]; > if str.length(s14[6])==1 > gps.laengeL=s14[6]; > if str.length(s14[7])>3 > gps.speed=s14[7]; > if str.length(s14[8])>3 > gps.grad=s14[8]; > if str.length(s14[9])==6 > gps.datum=s14[9]; > //zeigeData(gps.gpsData gps); > } > } > > function auslesen(gpsData gps,byte buf[]) > { > byte buffer[1024]; > byte c; > hwcom.setbuf(buffer,1024); > loop > { > //wait hwcom.rxd(); > wait hwcom.ready(); > c=hwcom.get(); > if c=='*' > { > hwcom.receive(buf,127,500); > //hwcom.send(buf,127); > auswertung(gps,buf); > zeigeData(gps); > hwcom.flush(); > } > } > } > </code> > Bitte helt mir, ich würde zugern mein GPS am Wochenende mit dem schönen Wetter ausprobieren. > Gruß Werner >