Handle auf ein Device



  • Ich hab mal eine Frage zu Handles auf im Rechner eingebaute Hardware. Dabei geht es um eine Messkarte. Zum Initialisieren/Öffnen ruft man eine DeviceOpen-Funktion auf und die gibt mir als Referenz ein Handle zurück.
    Mein Programm ist eine SDI-Anwendung, in der innerhalb verschiedener Routinen (aus verschiedenen Dialogfenstern aber auch aus dem MainView heraus) Spannungswerte abgefragt werden. Jetzt meine Frage: wo setze ich am geschicktesten die DeviceOpen- und die DeviceClose-Funktion hin?
    Sollte man die Open-Funktion in der InitInstance aufrufen und das Handle global lassen? Oder sollte man immer nur dann die DeviceOpen aufrufen wenn man messen will und das Teil danach gleich wieder schließen?



  • SDI = DOC/View

    Wenn du ein DOC hast dann kannst du dort die Daten ablegen und somit kannst du auch das Device dort öffnen und offen lassen.
    Die VIEW holt sich die Daten nicht aus dem Device sondern nur aus der DOC.



  • Unix-Tom schrieb:

    Die VIEW holt sich die Daten nicht aus dem Device sondern nur aus der DOC.

    Hallo Tom,
    das ist mir schon klar. Alle Aktionen, die auf die Hardware zugreifen, finden im Doc statt. Meine Frage bezog sich nur auf die Belegung des Handles. Ich vergleiche das mal mit einer Datei. Wenn ich was reinschreiben will öffne ich sie, schreibe (oder lese) und dann wird die wieder geschlossen. Alternativ könnte man ja beim Programmstart (also entweder in der InitInstance oder auch im Ctor des Docs) die Datei öffnen und erst beim Programmende (hier z.B. in der OnCloseDocument) die Datei wieder schließen. Problem: die Datei ist die ganze Zeit offen und belegt ein Handle. Sollte man dies nicht vermeiden? Anders siehts sicher aus wenn man permanent Zugriffe hat.



  • Wenn man eine Datei nicht schließt hat keine Zugriff. Somit kann sie nicht kopiert oder sonstwas werden. Wenn du eine Hardware hast die Daten liefert kannst du das offen lassen den nur dein Programm fragt diese Daten ab.
    Du musst natürlich immer überprüfen ob das Handle noch gültig ist falls Hardware defekt oder ähnliches. Brauchst du die Daten immer wieder schnell dann lass es offen den das öffnen dauert ja auch seine Zeit.



  • Genau das mit der Gültigkeit hab ich mich auch gefragt. Wie kann man denn das überprüfen? Ich bekomme ein LONG von der Funktion zurückgeliefert. Funktioniert die Gültigkeitsprüfung wie bei Handles auf ein Fenster?


Anmelden zum Antworten