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

Re: wie bekomme ich den string in ein Byte[] Kategorie: Programmierung (von wernerAZ - 30.03.2007 3:59)
Als Antwort auf Re: wie bekomme ich den string in ein Byte[] von wernerAZ - 29.03.2007 22:58
Ich nutze:
C164CI-ControllerBoard, CC2-Application-Board, OSOPT V3.1
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.


//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;
    }

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!
>
> //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");
>

> 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
> > >
> > >
> > >


    Antwort schreiben


Antworten:

Re: wie bekomme ich den string in ein Byte[] (von wernerAZ - 30.03.2007 4:30)
    Re: wie bekomme ich den string in ein Byte[] (von AndrĂ© H. - 30.03.2007 9:13)
        Re: wie bekomme ich den string in ein Byte[] (von wernerAZ - 30.03.2007 13:55)
            Re: wie bekomme ich den string in ein Byte[] (von AndrĂ© H. - 9.04.2007 19:19)