Hallo,
hab ein Qt-Programm das über ein Usb-Gerät Eingangsspannungen feststellen kann.
Mein Problem ist nun, wenn ich im QT creator normal auf run clicke, das Einlesen des Gerätes nicht funktioniert.
Sobald ich es ohne Haltepunkte debugge, läuft es ohne Probleme.
Brauche schnell Hilfe.
mfg Rainer
Programm läuft nur richtig im Debugmodus
-
RainerWahnsinn
- Beiträge: 7
- Registriert: 14. Juli 2009 15:07
-
RainerWahnsinn
- Beiträge: 7
- Registriert: 14. Juli 2009 15:07
Re: Programm läuft nur richtig im Debugmodus
An welcher Stelle scheitert das Lesen? Wird das Gerät gar nicht erkannt, oder schlägt ein späterer Zugriff fehl?
Sicher, dass keine Race Condition vorliegt? Ein "Lesen bis zum Datenende" ist da immer sehr gefährlich. Mit Debugcode haben die Daten möglicherweise ein paar Takte mehr Zeit, um anzukommen.
Sicher, dass keine Race Condition vorliegt? Ein "Lesen bis zum Datenende" ist da immer sehr gefährlich. Mit Debugcode haben die Daten möglicherweise ein paar Takte mehr Zeit, um anzukommen.
-
RainerWahnsinn
- Beiträge: 7
- Registriert: 14. Juli 2009 15:07
Hab den Fehler gefunden, aber weiß nun nicht warum er so auftritt. Beim Einlesen des Gerätes muss ein BYTE array und eine länge angegeben werden. Die Mindestlänge errechnet sich aus der Anzahl der Channels des Gerätes + 2 da in diesem Fall im 3 BYTE die Information über die 8 Eingänge liegen.
Beim normalen Ausführen liest er nun nicht die korrekte Anzahl Channels ein. ( beim Debuggen schon)
Habe nun den Wert fest eingestellt.
Zuerst wird eine Funktion
Oak_FindSensor("Suchparameter",&Sensor)
aufgerufen, die auch bestens funktioniert.
Dieses Gerät hat eine Channel.
Hab auch noch andere im Betrieb die mehr haben.
vorher :
Oak_GetCurrentInReport(Sensor.DevicePath, inReport,3*Sensor.NumChannels)
nachher :
Oak_GetCurrentInReport(Sensor.DevicePath, inReport,3);
Problem gelöst. Kann mir trotzdem jemand erklären warum das so Auftritt.
Habe diesen kleinen Programmteil im Originalen unter VS 2003 getestet und dort geht es problemlos.
PS : Danke schon mal für die Antworten.
Beim normalen Ausführen liest er nun nicht die korrekte Anzahl Channels ein. ( beim Debuggen schon)
Habe nun den Wert fest eingestellt.
Zuerst wird eine Funktion
Oak_FindSensor("Suchparameter",&Sensor)
aufgerufen, die auch bestens funktioniert.
Dieses Gerät hat eine Channel.
Hab auch noch andere im Betrieb die mehr haben.
vorher :
Oak_GetCurrentInReport(Sensor.DevicePath, inReport,3*Sensor.NumChannels)
nachher :
Oak_GetCurrentInReport(Sensor.DevicePath, inReport,3);
Problem gelöst. Kann mir trotzdem jemand erklären warum das so Auftritt.
Habe diesen kleinen Programmteil im Originalen unter VS 2003 getestet und dort geht es problemlos.
PS : Danke schon mal für die Antworten.