chefsalat-
Mitglied
Hallo zusammen,
fogende Ausganssituation:
Ich muss ein Programm in C++ schreiben, mit dem ich Werte aus einer Beckhoff-SPS (mitTwincat programmiert) ereignisgesteuert auslesen soll.
Das Beckhoff-Programm steht schon. In meinem C++ Programm kann ich DINT und REAL-Werte schon auslesen.
Nur mit LREAL-Werten habe ich noch massive Probleme.
Die Test-Callback-Funktion soll erst mal nix anderes machen, als den Wert, den sie über pNotification->data übergeben bekommt, umzuwandeln und in einem CString abzuspeichern.
Meine Callback-Funktion für int (DINT) sieht folgendermaßen aus:
Für Float (REAL) nehme ich diese Umwandlung:
Das klappt dann auch wunderbar.
Nur für double (LREAL) gibt es mir immer 0.0000... aus.
Und eigentlich passt das mit double ja schon, weil ich beim Schreiben von LREAL-Werten in die SPS ja auch double verwende.
Hat jemand einen Vorschlag, wie ich das Problem beheben kann?
Gruß chefsalat-
fogende Ausganssituation:
Ich muss ein Programm in C++ schreiben, mit dem ich Werte aus einer Beckhoff-SPS (mitTwincat programmiert) ereignisgesteuert auslesen soll.
Das Beckhoff-Programm steht schon. In meinem C++ Programm kann ich DINT und REAL-Werte schon auslesen.
Nur mit LREAL-Werten habe ich noch massive Probleme.
Die Test-Callback-Funktion soll erst mal nix anderes machen, als den Wert, den sie über pNotification->data übergeben bekommt, umzuwandeln und in einem CString abzuspeichern.
Meine Callback-Funktion für int (DINT) sieht folgendermaßen aus:
C++:
void fn_Callback(AmsAddr* pAddr, AdsNotificationHeader* pNotification, ULONG hUser) {
CString sWert = "";
sWert.Format("%d", *(ULONG *)pNotification->data);
}
Für Float (REAL) nehme ich diese Umwandlung:
C++:
sWert.Format("%f", *(float *)pNotification->data);
Das klappt dann auch wunderbar.
Nur für double (LREAL) gibt es mir immer 0.0000... aus.
C++:
sWert.Format("%f", *(double *)pNotification->data);
Und eigentlich passt das mit double ja schon, weil ich beim Schreiben von LREAL-Werten in die SPS ja auch double verwende.
Hat jemand einen Vorschlag, wie ich das Problem beheben kann?
Gruß chefsalat-