gehe zum Quellcode dieser Datei
Übersicht | |
struct | can_api |
Verwaltungsstruktur, wird in allen Funktionen benötigt. Mehr... | |
struct | can_api_send_thread |
Senden aus Hintergrundthreads. Mehr... | |
Funktionen | |
can_api *WINAPI | canInit (HWND hParent, const void *pUserData, int(*events)(struct can_api *c, double absTime, double relTime, ISRInfo *i)) |
Initialisieren der CAN Routinen. | |
void WINAPI | canDeInit (struct can_api *c) |
Deinitialisieren der CAN Routinen. | |
int WINAPI | canOpenDevice (struct can_api *c, const char *pDevName, int mode, int format, DWORD *pErr) |
CAN Treiber öffnen. | |
void WINAPI | canCloseDevice (struct can_api *c) |
CAN Treiber schliessen. | |
void WINAPI | canExtendedFrames (struct can_api *c, int format) |
Framing Format. | |
unsigned char WINAPI | canGetRegisterRR1 (struct can_api *c, unsigned char nIndex) |
Register des SJA1000 im Reset Modus auslesen. | |
void WINAPI | canSetRegisterRR1 (struct can_api *c, unsigned char nIndex, unsigned char nNewValue) |
Register des SJA1000 im Reset Modus beschreiben. | |
unsigned char WINAPI | canGetRegister (struct can_api *c, unsigned char nIndex) |
Register des SJA1000 im Normalmodus auslesen. | |
void WINAPI | canSetRegister (struct can_api *c, unsigned char nIndex, unsigned char nNewValue) |
Register des SJA1000 im Normalmodus beschreiben. | |
int WINAPI | canTransmitDataByISR (struct can_api *c, struct ISRInfo *isr) |
CAN Botschaft senden. | |
int WINAPI | canTransmitData (struct can_api *c, unsigned long id, int rtr, int dlc, unsigned char *data) |
CAN Botschaft senden. | |
unsigned char WINAPI | canGetSJA1000Status (struct can_api *c) |
Statusregister des SJA1000 auslesen. | |
int WINAPI | canSetSJA1000Command (struct can_api *c, unsigned char command) |
Kommando an den SJA1000 übergeben. | |
int WINAPI | canAcceptanceCodeMask (struct can_api *c, unsigned long code, unsigned long mask) |
Hardware Akzeptanzfilter des SJA1000 einstellen. | |
int WINAPI | canAcceptanceFilter (struct can_api *c, unsigned long code, unsigned long mask) |
Akzeptanzfilter. | |
int WINAPI | canSetBaudrate (struct can_api *c, unsigned long baudrate) |
Baudrate einstellen. | |
void WINAPI | canResetTime (struct can_api *c) |
Absolute Zeit rücksetzen. | |
long WINAPI | canGetTime (struct can_api *c) |
Absolute Zeit ermitteln. | |
long WINAPI | canGetLostDataMsg (struct can_api *c) |
Ermittelt die Anzahl verlorener Nachrichten. | |
double WINAPI | canGetBusLoad (struct can_api *c) |
Liefert als Ergebnis die Buslast. | |
void WINAPI | canSetLostDataMsg (struct can_api *c, long nNewValue) |
Manipulation eines internen Wertes. | |
void WINAPI | canShowMessages (struct can_api *c, int on_off) |
Ereignisse weitermelden ein/ausschalten. | |
int WINAPI | canDeleteTransmitThread (struct can_api *c, int threadId) |
Thread beenden. | |
void WINAPI | canDeleteAllTransmitThreads (struct can_api *c) |
Alle Threads beenden. | |
int WINAPI | canAddTransmitThread (struct can_api *c, int threadId, unsigned long canId, int rtr, int dlc, unsigned char *data, unsigned long delay) |
Neuen Thread anlegen. | |
int WINAPI | canIsDeviceOpened (struct can_api *c) |
Ermitteln ob CAN Gerät geöffnet wurde. |
Es gibt mehrere Möglichkeiten diese Routinen einzubinden:
|
Hardware Akzeptanzfilter des SJA1000 einstellen. Die Werte werden direkt an den SJA1000 Baustein eingetragen. Die Werte sind nicht selbsterklärend, es wird dringend empfohlen, vorher das Datenblatt zum SJA1000 Baustein zu lesen! Als Alternative kann canAcceptanceFilter() verwendet werden. Die Standardeinstellung ist 0xffffffff für Code und Mask. Es werden dann keine Botschaften gefiltert.
|
|
Akzeptanzfilter. Dieser Akzeptanzfilter ist im Treiber als Softwarelösung implementiert. Das heißt, der SJA1000 Baustein ist am besten so eingestellt, dass alle Botschaften weitergeleitet werden. Die Filterung übernimmt danach der Treiber.
Die Filterformel lautet: ((empfangene ID) AND mask) = (code AND mask) Bei Gleichheit wird die Botschaft weitergeleitet.
|
|
Neuen Thread anlegen. Es wird ein Thread mit der Identifikation threadId angelegt. In einer festgelegten Periodenzeit (delay) wird dann Endlos lange die angegeben CAN Nachricht gesendet.
|
|
CAN Treiber schliessen. Das zuvor über canOpenDevice() geöffnete Gerät wieder schliessen.
|
|
Deinitialisieren der CAN Routinen. Interne Strukturen wieder aufräumen, bevor das Programm beendet wird.
|
|
Alle Threads beenden. Alle Threads, die durch canAddTransmitThread() angelegt wurden, wieder beenden.
|
|
Thread beenden. Ein zuvor durch canAddTransmitThread() angelegter Thread beenden.
|
|
Framing Format. Framing Format einstellen. Die Einstellung wird nur im PeliCAN Modus übernommen.
|
|
Liefert als Ergebnis die Buslast. Die Buslast wird in CAN API.CPP in einem parallel laufenden Thread ständig berechnet. Da dies nicht der Treiber erledigt, ist dieser Wert sehr ungenau!
|
|
Ermittelt die Anzahl verlorener Nachrichten.
|
|
Register des SJA1000 im Normalmodus auslesen.
|
|
Register des SJA1000 im Reset Modus auslesen.
|
|
Statusregister des SJA1000 auslesen.
|
|
Absolute Zeit ermitteln. Die Zeit ist ein 64 Bit Wert und ist abhängig vom Betriebsystem. Unter Windows 9x beträgt die Auflösung 800 ns und unter Windows NT 100 ns. Der 64 Bit Wert wird durch einen Betriebsystemspezifischen 32 Bit Wert dividiert. Vom Ergebnis wird der niederwertige 32 Bit Wert als Ergebnis geliefert.
|
|
Initialisieren der CAN Routinen. Bevor die Routinen verwendet werden können muss canInit() aufgerufen werden. Dieser Funktion wird ein HANDLE auf ein vorhandenes Fenster übergeben (z.B. das Hauptfenster der Applikation) oder NULL. Dieses HANDLE wird nur für MessageBox() Aufrufe benötigt. Der zweite Parameter ist ein Pointer auf eine Funktion (Callback Funktion). Diese Funktion wird aus der API Sammlung heraus immer dann aufgerufen, wenn der CAN Treiber ein Ereignis signalisiert. Diese Funktion wird asynchron zu beliebigen Zeiten aufgerufen, dies muss unter Umst. anden bei der Programmierung ber. ucksichtigt werden: Vorsicht bei Zugriffe auf globale oder statische Daten. Als Ergebnis wird bei Erfolg ein Pointer zurückgegeben, der bei allen anderen Funktionen angegeben werden muss. Bei Misserfolg wird NULL zurückgegeben.
|
|
Ermitteln ob CAN Gerät geöffnet wurde. Über diese Funktion kann ermittelt werden, ob das CAN Gerät mit canOpenDevice() bereits geöffnet wurde.
|
|
CAN Treiber öffnen. Ein Gerät öffnen. Damit unter NT ebenfalls das Gerät \\.\CANPAR (ohne angehängte Ziffer!) geöffnet werden kann, sind Registryeinträge notwendig. Erst wenn ein Gerät geöffnet ist, können CAN Nachrichten gesendet und empfangen werden.
|
|
Absolute Zeit rücksetzen.
|
|
Baudrate einstellen. Die Demoversion erlaubt hier nur maximal 150000 Baud.
|
|
Manipulation eines internen Wertes. Hiermit kann die Anzahl der verlorenen Nachrichten manipuliert werden. Im Normalfall sollte diese Funktion verwendet werden, um den Wert auf null rückzusetzen.
|
|
Register des SJA1000 im Normalmodus beschreiben.
|
|
Register des SJA1000 im Reset Modus beschreiben.
|
|
Kommando an den SJA1000 übergeben.
|
|
Ereignisse weitermelden ein/ausschalten. Benachrichtigung beim Eintreffen neuer Nachrichten (empfangene, ge- sendete CAN Botschaften oder Fehler) ein- oder ausschalten.
|
|
CAN Botschaft senden. CAN Botschaft senden. Die Botschaft wird direkt angegeben.
|
|
CAN Botschaft senden. CAN Botschaft senden. Wobei die Botschaft in einer ISR Struktur übergeben wird.
|