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 ! > Danke für deine Hilfe Andre' > , aber mittlerweile läut das Einlesen sehr gut. > Werde mir aber deinen Souce genauer ansehen, sieht interessant aus. > Mein Problem jetzt: Die Daten in einem Thread einlesen und aktualisieren > und im main Werte anzeigen und berechnen. > <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; > } > > function auswertung(gpsData gps,byte buf[]) > { > string s14[14]; > int zaehler,pos; > pos=0; > > 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]); Werte werden nicht immer gelöscht > 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]; > } > } > > function auslesen(gpsData gps,byte buf[]) > { > byte buffer[1024]; > byte c; > hwcom.setbuf(buffer,1024); > loop > { > wait hwcom.ready(); > c=hwcom.get(); > if c=='*' > { > hwcom.receive(buf,127,500); > hwcom.send(buf,127); > auswertung(gps,buf); > //zeigeData(gps); > hwcom.flush(); > } > } > } > > thread com > { > gpsData gps; > byte buf[255]; > auslesen(gps,buf); > menu.location[1].breite=gps.breite; > menu.location[1].breiteB=gps.breiteB; > menu.location[1].laenge=gps.laenge; > menu.location[1].laengeL=gps.laengeL; > } > </code> > > Hier das Hauptprogramm > <code> > 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); > run v24.com; > > 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> > Und hier ein Teil von menu: > <code> > //Modul menu > > type gpsDaten > { > string breiteB; > string breite; > string laengeL; > string laenge; > string datum; > string name; > } > string s,hs; > int i,a,uhr; > float posBreite,posLaenge,zielBreite,zielLaenge,entfernung; > gpsDaten location[15]; > > > function anzeigen(int i3) returns int > { > loop > { > lcdext.clear(); > lcdext.print2(location[i3].name); > lcdext.line(2); > lcdext.print("Koordinaten"); > touchlcd.clear(); > lcdext.clear(); > anzeige.kreis(); > //Entfernung anzeigen > touchlcd.font(3,1,1); > s=location[1].breite; > posBreite=berechnung.inStunden(s); > s=location[1].laenge; > posLaenge=berechnung.inStunden(s); > s=location[i3].breite; > zielBreite=berechnung.inStunden(s); > s=location[i3].laenge; > zielLaenge=berechnung.inStunden(s); > entfernung=berechnung.entfernung(posBreite,posLaenge, > zielBreite,zielLaenge); > str.clear(s); > str.putfloatf(s,entfernung,4); > touchlcd.text2('L',15,29,s); > uhr=berechnung.grobeRichtung(posBreite,posLaenge, > zielBreite,zielLaenge); > anzeige.kompass(0); > if uhr!=360 > anzeige.zeiger(uhr); > touchlcd.font(2,1,1); > //s="ZIEL"; > //touchlcd.text2('L',94,0,s); > touchlcd.text2('R',127,0,location[i3].name); > touchlcd.font(1,1,1); > touchlcd.text2('L',78,7,location[i3].breiteB); > touchlcd.text2('L',86,7,location[i3].breite); > touchlcd.text2('L',78,14,location[i3].laengeL); > touchlcd.text2('L',82,14,location[i3].laenge); > s="POS."; > touchlcd.text2('L',94,44,s); > touchlcd.text2('L',78,51,location[1].breiteB); > touchlcd.text2('L',86,51,location[1].breite); > touchlcd.text2('L',78,58,location[1].laengeL); > touchlcd.text2('L',82,58,location[1].laenge); > s="DATENBANK"; > touchlcd.text2('L',80,30,s); > s=""; > touchlcd.button(0,7,7,'*',0,s,str.length(s)); > s=""; > touchlcd.button(0,4,5,'+',0,s,str.length(s)); > s="DATENBANK"; > touchlcd.button(0,9,10,'#',2,s,str.length(s)); > s=""; > touchlcd.button(0,14,15,'-',0,s,str.length(s)); > while(!swcom.rxd()); > a=swcom.get(); > if a=='+' > { > return edit(i3); > } > if a=='-' > { > return anzeigen(1); > } > if a=='#' > { > lcdext.clear(); > lcdext.print("Datenbank"); > return auswahl(i3); > } > if a=='*' > { > lcdext.clear(); > lcdext.print("Entfernung"); > } > } > } > </code> > > Was ich nicht verstehe, im thread v24.com die Zeile: > menu.location[1].breite=gps.breite; > Hier wollte ich eigentlich die aktuellen Koortinaten(z.B. gps.breite) > in menu.location[1].breite kopieren. > Die aktuellen Werte würden dann im Hauptprogramm angezeigt werden. > Geht aber nicht. Was mache ich falsch? > > Gruß > Werner >