Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Wie Singles zu convertieren? Kategorie: Programmierung Basic (von ulrich korth - 19.11.2010 14:59)
Als Antwort auf Re: Wie Singles zu convertieren? von Baltus - 18.11.2010 20:03
Ich nutze:
C-Control Pro Mega128, CC-Pro 128 Application Board, Pro-Bot128
> Schade: Es handelt hier nicht um Long variabelen; es geht um Single .
>
> Am moment arbeite ich an eine Lösung (gültig für alle Dezimale) mit alle Ziffern in vier Bytes, und der Position
> der Komma und das Zeichen in ein fünfter Byte.
> Bespiel:
> Zahl: -123456,8877
> Long: 1234568877
> 5er Byte: Zeichen=-,   Ziffern vor der Komma=6
>
>
Bisschen schwer zu verstehen, was du eigentlich willst. Jetzt verstehe ich das so, dass du in Basic
eine SINGLE variable ins EEPROM schreiben und dann auch wieder lesen willst. Dazu gibt es die
beiden Funktionen, die du in der Hilfe findest:

Sub EEPROM_WriteFloat(pos As Word,val As Single)
Sub EEPROM_ReadFloat(pos As Word) As Single

Alles ganz einfach...

 



> > > > > Ich wolle Singles (32 bits = 4 bytes) in vier auffolgende Adresse in EEPROM speichern.
> > > > >
> > > > > Wie kann ich eine Single in vier Bytes aufteilen? (Biteshift ">>" functioniert nicht am Single)
> > > > > Oder gibt es vielleicht eine andere Lösung?
> > > >
> > > > Ich würde die Single in 2 Word aufteilen. Die oberen 16 Bit durch 0xFFFF Dividieren.
> > > > Die Division braucht ohnehin etwa die gleiche Zeit wie Shift Befehle und funktioniert bei Single.
> > > > Gruß
> > > > Ernst H.
> > > Irrtum - ich dachte an ULong - bei Single .. keine Ahnung
> >
> > egal ob long, dword oder unsigned long kannst du folgende Routinen verwenden - nur den
> > Datentyp entspr. anpassen!
> > Gruss Ulrich
> >
> > void EEPROM_WriteLong(word pos, long val){
> >    EEPROM_WriteWord(pos, val);
> >    EEPROM_WriteWord(pos+2, val>>16);
> > }
> > long EEPROM_ReadLong(word pos){
> >   long l;
> >   l=EEPROM_ReadWord(pos+2);
> >   l=(l<<16) + EEPROM_ReadWord(pos);
> >   return l;
> > }


    Antwort schreiben


Antworten: