Ich habe ein kleines Problem mit fwrite, dazu erstmal meinen Code:
...
double MaschinePosX, MaschinePosY, MaschinePosZ;
float PosX, PosY, PosZ;
std::vector <double> ScannerValuesX(nResolution), ScannerValuesZ(nResolution);
...
for(unsigned int k=0; k<nResolution; k++)
{
PosX = float (MaschinePosX + 10 + ScannerValuesX.at(k));
PosY = float (MaschinePosY);
PosZ = float (MaschinePosZ + ScannerValuesZ.at(k));
fwrite(&PosX, sizeof(PosX), 1, m_DataFileStripe);
fwrite(&PosY, sizeof(PosY), 1, m_DataFileStripe);
fwrite(&PosZ, sizeof(PosZ), 1, m_DataFileStripe);
}
Also ich versuche mit fwrite immer 3 float Variablen in eine Datei zu schreiben und das ziemlich oft hintereinander. Einen anderen Dateizugriff außer diesem hier gibt es im Programm nicht. Also Fehler von dort ausgeschlossen.
Aber nun erstmal das Problem:
In der Datei finden sich Anfangs immer schön 32Bit für PosX, PosY und PosZ. Nach einer weile verrutsch alles aber um 16 bit. Dann steht da zwischen PosY und PosZ, z.B. 5F(Hex) oder 0D oder 3D. Das passiert dann immer mal wieder. Die fwrite zugriffe hab ich auch schon überprüft die liefern keine Fehler.
Das ganze verhindert, dass ich die Werte später wieder auslesen kann. Also kann mir irgendwer helfen?
...
double MaschinePosX, MaschinePosY, MaschinePosZ;
float PosX, PosY, PosZ;
std::vector <double> ScannerValuesX(nResolution), ScannerValuesZ(nResolution);
...
for(unsigned int k=0; k<nResolution; k++)
{
PosX = float (MaschinePosX + 10 + ScannerValuesX.at(k));
PosY = float (MaschinePosY);
PosZ = float (MaschinePosZ + ScannerValuesZ.at(k));
fwrite(&PosX, sizeof(PosX), 1, m_DataFileStripe);
fwrite(&PosY, sizeof(PosY), 1, m_DataFileStripe);
fwrite(&PosZ, sizeof(PosZ), 1, m_DataFileStripe);
}
Also ich versuche mit fwrite immer 3 float Variablen in eine Datei zu schreiben und das ziemlich oft hintereinander. Einen anderen Dateizugriff außer diesem hier gibt es im Programm nicht. Also Fehler von dort ausgeschlossen.
Aber nun erstmal das Problem:
In der Datei finden sich Anfangs immer schön 32Bit für PosX, PosY und PosZ. Nach einer weile verrutsch alles aber um 16 bit. Dann steht da zwischen PosY und PosZ, z.B. 5F(Hex) oder 0D oder 3D. Das passiert dann immer mal wieder. Die fwrite zugriffe hab ich auch schon überprüft die liefern keine Fehler.
Das ganze verhindert, dass ich die Werte später wieder auslesen kann. Also kann mir irgendwer helfen?