Programm läuft nur richtig im Debugmodus

Alles rund um die Programmierung mit Qt
Antworten
RainerWahnsinn
Beiträge: 7
Registriert: 14. Juli 2009 15:07

Programm läuft nur richtig im Debugmodus

Beitrag von RainerWahnsinn »

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
Strahlex
Beiträge: 158
Registriert: 23. Dezember 2008 15:49
Wohnort: Österreich

Beitrag von Strahlex »

OS, Qt Version, Qt Creator Version...

Ein paar Infos mehr währen schon Hilfreich...
RainerWahnsinn
Beiträge: 7
Registriert: 14. Juli 2009 15:07

Beitrag von RainerWahnsinn »

Win Vista 64, QT Creator 1.2.0, QT Version 4.5.2
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

Compile output und linker? Meldungen in der Ausgabe?
Hans
Beiträge: 9
Registriert: 26. Februar 2005 18:26
Kontaktdaten:

Re: Programm läuft nur richtig im Debugmodus

Beitrag von Hans »

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.
RainerWahnsinn
Beiträge: 7
Registriert: 14. Juli 2009 15:07

Beitrag von RainerWahnsinn »

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.
Antworten