Mal wieder serielle Schnittstelle

24/07/2009 - 14:29 von Hans Peters | Report spam
Hallo NG,

habe mal wieder ein Problem.
Ich habe hier ein Messgeràt, dass mir Daten über die serielle
Schnittstelle an den PC sendet.
Dies erfolgt auf Knopdruck am Geràt. Handshake ist nicht vorhanden.
Jetzt muss ich diese Daten per Access erfassen, und weiterverarbeiten.
Ich habe bereits eine funktionierende Funktion über API-'ReadFile', mit
der ich bei einem anderen Messgeràt eine Messung vom PC aus veranlasse,
und anschließend die Daten auslese.
Also habe ich diese Funktion mal benutzt, um sie regelmàßig per Timer
aufzurufen. Sobald ich am Messgeràt die Übertragentaste drücke bekomme
ich auch Daten, leider nicht immer vollstàndig (kann ein Timing oder
Puffergrößenproblem sein). Und solange keine Daten gesendet werden ist
Access Quasi blockiert, da die Funktion zum Auslesen einen Timeout hat,
falls keine Daten anstehen.
Jetzt habe ich nach einigen Googeln gesehen, dass es noch eine
API-Funktion 'ReadFileEx' gibt, die zum asynchronen Datenempfang geeignet
wàre, was, sollte mein Verstàndnis nicht ganz daneben liegen, ja genau
meinem Problem entgegenkàme. Nur habe ich keinerlei Plan, wie ich
'ReadFileEx' in mein Modul einbinde. Von direkter API-Programmierung habe
ich wenig Plan, und die Sache mit 'ReadFile' habe ich auch nur der
'Knowhow'MDB entnommen. Einfach 'Readfile' durch 'ReadFileEx' austauschen
funktioniert leider nicht.

Kann mir jemand mitteilen, wie ich von Acces2003 aus die serielle
Schnittstelle überwache (Polle?) ob Daten anstehen, um diese dann
auszulesen, ohne durch die Abfragerei den PC lahmzulegen?
Oder bin ich auf dem falschen Dampfer, und es geht nicht mit Access,
sondern nur mit externen Tools?

Momentan etwas hilflose Grüße

Hans
 

Lesen sie die antworten

#1 Oliver Straub
24/07/2009 - 17:01 | Warnen spam
Hallo Hans,

um asynchron zu arbeiten, muss man einen Callback-Funktion benutzen. Meiner
Erfahrung nach funktioniert so etwas mit Access nicht. Denke das kannst Du
knicken.

Gruss
Oliver




Dies erfolgt auf Knopdruck am Geràt. Handshake ist nicht vorhanden.
Jetzt muss ich diese Daten per Access erfassen, und weiterverarbeiten.
Ich habe bereits eine funktionierende Funktion über API-'ReadFile', mit
der ich bei einem anderen Messgeràt eine Messung vom PC aus veranlasse,
und anschließend die Daten auslese.
Also habe ich diese Funktion mal benutzt, um sie regelmàßig per Timer
aufzurufen. Sobald ich am Messgeràt die Übertragentaste drücke bekomme ich
auch Daten, leider nicht immer vollstàndig (kann ein Timing oder
Puffergrößenproblem sein). Und solange keine Daten gesendet werden ist
Access Quasi blockiert, da die Funktion zum Auslesen einen Timeout hat,
falls keine Daten anstehen.
Jetzt habe ich nach einigen Googeln gesehen, dass es noch eine
API-Funktion 'ReadFileEx' gibt, die zum asynchronen Datenempfang geeignet
wàre, was, sollte mein Verstàndnis nicht ganz daneben liegen, ja genau
meinem Problem entgegenkàme. Nur habe ich keinerlei Plan, wie ich
'ReadFileEx' in mein Modul einbinde. Von direkter API-Programmierung habe
ich wenig Plan, und die Sache mit 'ReadFile' habe ich auch nur der
'Knowhow'MDB entnommen. Einfach 'Readfile' durch 'ReadFileEx' austauschen
funktioniert leider nicht.

Ähnliche fragen