Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

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 !  

> Lieber Andre', > respekt, respekt... > Deine inline funktionen haben mich sehr beeindruckt. > Wie kommt man dann an diese faszinierenden Funktionen. > Also wenn du mal ein Buch darüber schreibst, kauf ich es sofort. Ehrenwort! > Deine Hilfe hat mir sehr geholfen. Danke. > > ...dann kann ich ja schon an die Berechnungen, bis bald. > Werner > > > Hallo Werner, > > > > Du machst Dir unnötig Arbeit. > > Du brauchst hier nichts kopieren, sondern lediglich erweiterte Funktionen für flash.c2, > > um Deinen eigenen Datentyp direkt speichern zu können: > > > > Versuche einfach folgendes: > > <code> > > type gpsDaten > > {// Länge: 5x32Byte =160Byte > > string breiteB; > > string breite; > > string laengeL; > > string laenge; > > string name; > > } > > > > > > inline function writegpsDaten (byte segment, int addr, gpsDaten data, int len) returns int > > { > > inline vmcodes.VM_INLINE_SYSCALL+flash.Segment; > > inline flash._WRBYTEARR; > > } > > > > inline function readgpsDaten (byte segment, int addr, gpsDaten data, int len) > > { > > inline vmcodes.VM_INLINE_SYSCALL+flash.Segment; > > inline flash._RDBYTEARR; > > } > > > > gpsDaten location[15]; > > > > thread main > > { > > //... > > writegpsDaten(1, 0, location[0], 160); > > writegpsDaten(1, 160, location[1], 160); > > readgpsDaten(1, 0, location[15], 160); > > //... > > } > > </code> > > Als Länge muß hier immer die Größe eines Arrays(=5Strings) angegeben werden. > > Hier sind das 160Byte. > > > > Wenn Du den gesamten Inhalt von location[] in den Flash schreiben willst, > > geht das auch sehr einfach, und ohne For-Schleife. ;-) > > <code> > > type gpsDaten > > {// Länge: 5x32Byte =160Byte > > string breiteB; > > string breite; > > string laengeL; > > string laenge; > > string name; > > } > > > > > > inline function writegpsDatenArray (byte segment, int addr, gpsDaten data[], int len) returns int > > { > > inline vmcodes.VM_INLINE_SYSCALL+flash.Segment; > > inline flash._WRBYTEARR; > > } > > > > inline function readgpsDatenArray (byte segment, int addr, gpsDaten data[], int len) > > { > > inline vmcodes.VM_INLINE_SYSCALL+flash.Segment; > > inline flash._RDBYTEARR; > > } > > > > gpsDaten location[15]; > > > > thread main > > { > > //... > > writegpsDatenArray(1, 0, location, 160*15); > > readgpsDatenArray(1, 0, location, 160*15); > > //... > > } > > </code> > > Die Größe besteht hier aus 160Byte der 5 Strings mal der Anzahl der location-Elemente. > > > > Wenn Du Dir die Längenangaben sparen bzw. vereinfachen willst, kannst > > Du einfach entsprechende Funktoinen zwischenschalten: > > <code> > > function flashWrGPSDaten (byte segment, int addr, gpsDaten data) returns int > > { > > return writegpsDaten(segment, addr, data, 160); > > } > > > > function flashRdGPSDaten (byte segment, int addr, gpsDaten data) returns int > > { > > return readgpsDaten(segment, addr, data, 160); > > } > > > > function flashWrGPSDatenArray (byte segment, int addr, gpsDaten data[], int len) returns int > > { > > return writegpsDatenArray(segment, addr, data, 160*len); > > } > > > > function flashRdGPSDatenArray (byte segment, int addr, gpsDaten data[], int len) returns int > > { > > return readgpsDatenArray(segment, addr, data, 160*len); > > } > > </code> > > > > Beachte aber beim Flash immer, daß dieser nur Segmentweise gelöscht werden kann! > > Ein Überschreiben bereits vorhandener Werte ergibt eine "nette" Datenverknüpfung. > > So etwas kann man an Hand der Rückgabewerte der Schreibfunktionen erkennen. > > (Es wird false zurückgegeben.) > > > > MfG André H. > > > > > > > sorry, ist schon spät, > > > nicht midString, sondern strx.insert ist die Zauber-Routine. > > > Gute Nacht > > > Werner > > > > > > > Hallo nochmal, > > > > also ins Flash schreiben ging gut. Mit dem Auslesen war es schwieriger. Die Ausgabe auf mein Tochlcd funktionierte gleich, > > > > aber um die Daten auf das lcdext zu bekommen und um die Daten weiter zu bearbeiten, > > > > mußten die byteBuf[]-Daten wieder in ein String umgewandelt werden. > > > > Mit flash.readStringArray bekam ich auch die abgespeicherten Werte ab einer bestimmten Position > > > > aufs extLCD, aber ich konnte nicht die Länge bestimmen. > > > > Und an dem Versuch, es gleich als StringArray abzuspeichern, bin ich kläglich gescheitert. > > > > Falls das jemand geschaft hat, täte mich ein kleines Beispiel interessieren. > > > > > > > > Wie dem auch sei, mit der Zauber-Routine von midString gelang es mir dann byte buf[] in String umzuwandeln. > > > > Falls jemand eine konventionelle Lösung hat...Bin ich daran interessiert. > > > > > > > > <code> > > > > //Flash lesen > > > > zeile=0; > > > > lcdext.clear(); > > > > touchlcd.clear(); > > > > for k=1 ... 10 > > > > { > > > > str.clear(s); > > > > flash.readByteArray(1,k*64,buf,64); > > > > //mem.copy(s,0,buf[35],20); //funktioniert leider nicht > > > > strx.insert(buf[35],s,0,20);//geht doch, byte[] in string > > > > lcdext.delline(1); > > > > lcdext.line(1); > > > > lcdext.print(s); > > > > lcdext.delline(2); > > > > lcdext.line(2); > > > > lcdext.zahl3(str.length(s)); > > > > touchlcd.text('L',0,zeile,buf[35],20); > > > > zeile=zeile+6; > > > > sleep 3000; > > > > } > > > > </code> > > > > mfg > > > > Werner > > > > > > > > > Hey Martin, > > > > > dann klon ich eben Äpfel und Birnen. Ich möchte Datensätze die größer sind als 30 Byte abspeichern. > > > > > Aber dank eines Beitrages vom April 2003 in diesem Forum über mem.copy, habe ich die Lösung gefunden. > > > > > Bin gerade am ausprobieren.Sieht aber gut aus. Anbei der Zaubercode! > > > > > <code> > > > > > //irgendwo am Anfang > > > > > byte buf[64]; > > > > > > > > > > //Flash beschreiben > > > > > for k=2 ... 11 > > > > > { > > > > > mem.fill(buf,64,32); > > > > > mem.copy(buf,0,location[k].breiteB,1); > > > > > mem.copy(buf,1,location[k].breite,11); > > > > > mem.copy(buf,12,location[k].laengeL,1); > > > > > mem.copy(buf,13,location[k].laenge,12); > > > > > mem.copy(buf,25,location[k].datum,10); > > > > > l=str.length(location[k].name); > > > > > mem.copy(buf,35,location[k].name,l); > > > > > lcdext.line(1); > > > > > lcdext.zahl(flash.writeByteArray(1,k*64,buf,64)); > > > > > } > > > > > lcdext.line(2); > > > > > lcdext.print("Erledigt"); > > > > > </code> > > > > > Aber trotzdem vielen Dank für deine Antwort. > > > > > > > > > > Ein glücklicher Werner. > > > > > > > > > > > Hallo Werner > > > > > > > > > > > > Du versuchst gerade Äpfel auf Birnen zu Klonen ;) > > > > > > ein String benötigt unabhängig von seiner Länge immer 32 Byte! > > > > > > Strings kannst du mit der Funktion Flash.writeString() direkt in den Flash schreiben, > > > > > > dabei musst du beachten daß du mit 32 er Schritten Addressierst. > > > > > > Siehe Modulhilfe Flash.HTML. > > > > > > > > > > > > Gruß Martin > > > > > > > > > > > > > > > > > > > Hallo zusammen, > > > > > > > ich möchte mehrere Strings in ein byte[] Array schreiben, um es dann in den Flash-Speicher zu speichern. > > > > > > > Hier meine definition: > > > > > > > > > > > > > > type gpsDaten > > > > > > > { > > > > > > > string breiteB; > > > > > > > string breite; > > > > > > > string laengeL; > > > > > > > string laenge; > > > > > > > string name; > > > > > > > } > > > > > > > > > > > > > > gpsDaten location[15]; > > > > > > > > > > > > > > byte buf[64]={location[x].breiteB,location[x].breite,location[x].laengeL,location[x].laenge,location[x].name}; > > > > > > > > > > > > > > Aber irgendwie gelingt mir das nicht. Was mache ich verkehrt? Wie bekomme ich die Daten in buf? > > > > > > > > > > > > > > mfg > > > > > > > Werner > > > > > > > > > > > > > > > > > > > > >
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB