CAN-Kommunikation
-
Hallo zusammen,
kann mir jemand sagen, wie ich in C den Versand/ Empfang von CAN-Botschaften
einbinden kann?DANKE
-
Du benötigst in jedem Fall einen CAN-Treiber. Diese haben im allgemeinen eine Treiber-API, die mit C oder C++ anzusprechen ist.
Welches Betriebssystem und welche CAN-Karte (Lieferant) benutzt Du?
-
Das Betriebssystem ist Windows XP und die Karte ist eine PCMCIA-CAN/2 Karte von National Instruments.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Ich kenne die CAN-API von esd www.esd-electronics.com, SIE www.s-i-e.de und kvasar . Die von NI habe ich noch nicht gesehen. Wenn Du die Karte besitzt solltest Du auch über den Treiber und ein sogenanntes SDK (Software Developer Kit) verfügen. Den Treiber muss man installieren; das SDK besteht mindestens aus einer Library und einer oder mehreren Header-Dateien, die im Allgemeinen ein C-Funktionsinterface anbieten.
Ich unterstelle mal, das API ist bei NI nicht grundsätzlich anders als bei den drei erstgenannten. Du hast ein Paar von Funktionen, die ein canOpen und canClose machen. Beim canOpen wirst Du den CAN-Identifier übergeben müssen. Daneben gibt es mindestens ein zweites Paar mit canWrite und canRead, mit denen ein CAN-Telegramm geschrieben bzw. empfangen werden kann. Die Daten werden i.A. in eine Hersteller-spezifische Struktur geschrieben. Diese Struktur enthält dann auch das CAN-Telegramm, dass im einfachsten Fall aus 8 Byte besteht.
Im Internet habe ich das CAN-API von NI auf die schnelle nicht gefunden. Es würde mich aber interessieren, wie das aussieht. Hast Du eine Quelle?
Gruß
Werner