12.05.2006, 09:25
Hallo zusammen
Ich habe ein USB 2 CAN Konverter welchen ich via ActiveX ansteuern kann.
Der Konverter soll ein anderes Steuergerät via CAN Calibration Protocol (CCP; Point to Point) ansteuern können.
Das heisst ich schicke via Konverter ein Kommando an das Steuergerät (max 8Byte). Dieses wiederum sendet eine passende
Antwort zurück ( max 8Byte). Für das schicken verwende ich eine Activex Methode.
Der Empfang einer Nachricht kann nur über einen ActiveX Event stattfinden. Für das registriere ich einen Activex
Callback am Anfang meines Programms. Als Benutzer Parameter dieses Callbacks übergebe ich eine Referenz meiner
Anzeigedaten auf dem Main Vi.
Nach dem Senden meiner Nachricht warte ich nun in einer while Schlaufe so lange, bis der Status meiner Anzeigedaten
den Empfang von CAN Daten anzeigt( via Eigenschaftsknoten). Danach muss ich wieder via Eigenschaftsknoten den Wert
zurücksetzten und ich kann die gelesenen Daten ausgeben und weiterverarbeiten. Danach beginnt das Spiel wieder von
vorne(senden lesen. etc). Das Ganze funktioniert auch wunderbar. Nur ist alles viel zu langsam. Mit einer anderen
Hardware welche ich direkt via dll ansteuere bin ich etwa um Faktor 10 schneller.
Gibt es eine Möglichkeit das Ganze zu beschleunigen, oder ist Activex einfach nicht schneller?
Zum besseren Verständnis sind noch einige Screenshots beigelegt.
Für Eure Hilfe wäre ich wirklich dankbar.
Gruss
Baesi
Ich habe ein USB 2 CAN Konverter welchen ich via ActiveX ansteuern kann.
Der Konverter soll ein anderes Steuergerät via CAN Calibration Protocol (CCP; Point to Point) ansteuern können.
Das heisst ich schicke via Konverter ein Kommando an das Steuergerät (max 8Byte). Dieses wiederum sendet eine passende
Antwort zurück ( max 8Byte). Für das schicken verwende ich eine Activex Methode.
Der Empfang einer Nachricht kann nur über einen ActiveX Event stattfinden. Für das registriere ich einen Activex
Callback am Anfang meines Programms. Als Benutzer Parameter dieses Callbacks übergebe ich eine Referenz meiner
Anzeigedaten auf dem Main Vi.
Nach dem Senden meiner Nachricht warte ich nun in einer while Schlaufe so lange, bis der Status meiner Anzeigedaten
den Empfang von CAN Daten anzeigt( via Eigenschaftsknoten). Danach muss ich wieder via Eigenschaftsknoten den Wert
zurücksetzten und ich kann die gelesenen Daten ausgeben und weiterverarbeiten. Danach beginnt das Spiel wieder von
vorne(senden lesen. etc). Das Ganze funktioniert auch wunderbar. Nur ist alles viel zu langsam. Mit einer anderen
Hardware welche ich direkt via dll ansteuere bin ich etwa um Faktor 10 schneller.
Gibt es eine Möglichkeit das Ganze zu beschleunigen, oder ist Activex einfach nicht schneller?
Zum besseren Verständnis sind noch einige Screenshots beigelegt.
Für Eure Hilfe wäre ich wirklich dankbar.
Gruss
Baesi