Hallo,
Das nachfolgende Beispiel zeigt den c++ Code
In der Hilfe ist beschrieben, das der float Wert im Intel-Format abgelegt ist.
In meinem Puffer (cTest) sind diese 4 Bytes abgelegt.
Mit Welcher Funktion kann ich dieses Intel-Format in Xbase wandeln ?
Code: Alles auswählen
INT32 HBM_XUTIL_GetDaqData ( const UINT8 * pSrcBuf,
UINT32 DataOffset,
const struct stDaqHeader * pHdr,
void * pDstBuf,
UINT32 DstSize
)
Kopiert die Messdaten an die gewuenschte Stelle im Speicher. Die Daten werden dabei im Intel-Format abgelegt (im Rohdatenblock liegen die Messdaten im Motorola-Format vor!). Das Datenformat des Signals steht im Header (analoge Signale in der Regel float). Fuer CAN-Signale kann das Ausgabeformat vom Anwender gewaehlt werden (siehe HBM_XUTIL_ComoposeCanSensor()) Der Puffer auf den pDstBuf zeigt sollte vom Datentyp der erwarteten Messdaten sein.
Anwendung: siehe Beispiel
Parameters:
[in] pSrcBuf,: Zeiger auf Rohdaten-Buffer
[in] DataOffset,: Offset des Signals im Rohdaten-Buffer
[in] pHdr,: Zeiger auf den Header
[out] pDstBuf,: Bufferadresse, an die die Messwerte kopiert werden sollen
[in] DstSize,: Groesse des Zielbuffers in Byte
Returns:
0 = ok; <0 = Fehler, siehe Liste der Fehlermeldungen
**************************
XBASE
nStatus := HBM_XUTIL_GetDaqHeader(0, 1, @DataBuf,len(DataBuf), @cHeader, @Offset)
nStatus := HBM_XUTIL_GetDaqData(@DataBuf, Offset, @cHeader,@cMess,len(cMess))
for i:=1 to 100
aWerte[i] := asc(substr(DataBuf,i,1))
bWerte[i] := asc(substr(cMess,i,1))
next i
test := ?????(substr(cMess,1,4))
mfg
mkersch