Advertisement
Guest User

Untitled

a guest
Mar 30th, 2020
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.88 KB | None | 0 0
  1. /*2 Übertragungs-Bytes zu unsigned 16 Bit Integer zusammenfassen */UInt16UInt16Decodieren(byteinbyByteA, byteinbyByteB){return(UInt16)((UInt16)((255 -inbyByteA) << 8) | inbyByteB);}/*2 unsigned 16 Bit Integer zu unsigned32 Bit Integer zusammenfassen */UInt32UInt32Decodieren(UInt16inui16Wert1, UInt16inui16Wert2){return(UInt32)(inui16Wert1 << 16 | inui16Wert2);}Byte[]Beispieldaten = {0xFE, 0x0F, 0x10, 0x72, 0xFF, 0x84, 0x00, 0xFC, 0x05}; /*=> -0.04 *//*4 Bytes aus Übertragung in Messwert oder Fehlercode umrechnen */Int16Messwert32Decodieren (byteinbyByte3, byteinbyByte4, byteinbyByte6, byteinbyByte7, outdoubleoutdblFloatWert, outInt16outi16DezimalPunktPosition){outdblFloatWert = 0;outi16DezimalPunktPosition = 0;UInt16ui16Integer1, ui16Integer2;ui16Integer1 = UInt16Decodieren(inbyByte3, inbyByte4);ui16Integer2 = UInt16Decodieren(inbyByte6, inbyByte7);UInt32ui32Integer = UInt32Decodieren(ui16Integer1, ui16Integer2);/* Bytes zusammenfassen, mit Beispieldaten: 0x8DFFFFFC*/outi16DezimalPunktPosition = (Int16)(((0xFF –inbyByte3) >> 3) -15);/* Dezimalpunkt dekodieren, mit Beispieldaten: 0x0002*/ui32Integer = ui32Integer & 0x07FFFFFF;/* Rohwert dekodieren, mit Beispieldaten: 0x05FFFFFC*/if((100000000 + 0x2000000)> ui32Integer){/*Daten sind gültige Werte*/if(0x04000000== (ui32Integer & 0x04000000)){ui32Integer = (ui32Integer | 0xF8000000);/*Mit Beispieldaten: 0xFDFFFFFC */}ui32Integer = (UInt32)((UInt64)ui32Integer + 0x02000000);/*Mit Beispieldaten:0xFFFFFFFC */}else{   /*Daten sind Fehlercodes, Fehlercode auscodieren*/outdblFloatWert = (double)(ui32Integer -0x02000000 -16352.0);outi16DezimalPunktPosition = 0;return-36;/*Rückgabewert ist Fehlercode */}/*Umwandlung in Fliesspunkt Zahl, mit Beispieldaten: -4f */outdblFloatWert = (double)(Int32)ui32Integer;outdblFloatWert = outdblFloatWert / (Math.Pow(10.0f, (double)outi16DezimalPunktPosition));return0;/*Rückgabewert ist OK, mit Beispieldaten: -0,04 */}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement