Mehrere Geräte per Java und PCAN-Basic API unter Raspbian
Posted: Wed 8. Oct 2014, 08:34
Guten Morgen Peak-Team,
ich habe ein Programm mit Java geschrieben, welches Daten vom CAN-Bus ausliest und verarbeitet. Für den Bus-Zugriff nutze ich den PCAN-USB sowie den PCAN-USB Pro und die PCAN-Basic API. Das Programm verwende ich sowohl unter Windows 7 (32 und 64 Bit) sowie auch auf einem Raspberry Pi unter Raspbian mit den Linux-Treibern 7.10 / 7.12 sowie der PCAN-Basic API für Linux 2.0.2.
Zum Initialisieren der Hardware iteriere ich über die 8 verfügbaren USB-Geräte (PCAN_USBBUS1 bis 8) und verwende dabei das erste Gerät bzw. die ersten Geräte, die sich initialisieren lassen, also PCAN_ERROR_OK zurückmelden.
Der Zugriff auf einen CAN-Bus funktioniert unter Windows als auch unter Raspbian einwandfrei. Unter Windows ist auch der parallele Zugriff auf mehrere Busse mit dem PCAN-USB Pro und/oder mehreren PCAN-USB möglich.
Unter Raspbian bekomme ich jedoch ein merkwürdiges Verhalten: Beim Versuch, beide Kanäle des PCAN-USB Pros zu initialisieren wird nur PCAN_USBBUS1 initialisiert (PCAN_ERROR_OK), PCAN_USBBUS2 meldet jedoch PCAN_ERROR_NODRIVER.
Wenn ich jedoch zusätzlich zum PCAN-USB Pro noch einen PCAN-USB anschließe, wird PCAN_USBBUS1 weiterhin initialisiert, meldet beim zweiten Initialisierungsversuch korrekt PCAN_ERROR_INITIALIZE, da er bereits initialisiert ist, woraufhin dann PCAN_USBBUS2 PCAN_ERROR_OK zurückgibt. Versuche ich jedoch anschließend ein drittes Gerät zu initialisieren, meldet der bereits initialisierte PCAN_USBBUS1 ebenfalls wieder PCAN_ERROR_OK, es wird also angeblich das 1. USB-Gerät zweimal initialisiert. Beim Anschluss von zwei PCAN-USB (ohne einen Pro) ist das Ergebnis identisch.
Der Linux-Treiber erkennt beide Kanäle korrekt, beim Anschluss des PCAN-USB Pro kann ich über die Chardev-Dateien /dev/pcanusb0 und /dev/pcanusb1 von beiden Kanälen lesen.
Können Sie mir bei diesem Problem weiterhelfen?
Vielen Dank im Voraus
Manfred Vonderheidt
ich habe ein Programm mit Java geschrieben, welches Daten vom CAN-Bus ausliest und verarbeitet. Für den Bus-Zugriff nutze ich den PCAN-USB sowie den PCAN-USB Pro und die PCAN-Basic API. Das Programm verwende ich sowohl unter Windows 7 (32 und 64 Bit) sowie auch auf einem Raspberry Pi unter Raspbian mit den Linux-Treibern 7.10 / 7.12 sowie der PCAN-Basic API für Linux 2.0.2.
Zum Initialisieren der Hardware iteriere ich über die 8 verfügbaren USB-Geräte (PCAN_USBBUS1 bis 8) und verwende dabei das erste Gerät bzw. die ersten Geräte, die sich initialisieren lassen, also PCAN_ERROR_OK zurückmelden.
Der Zugriff auf einen CAN-Bus funktioniert unter Windows als auch unter Raspbian einwandfrei. Unter Windows ist auch der parallele Zugriff auf mehrere Busse mit dem PCAN-USB Pro und/oder mehreren PCAN-USB möglich.
Unter Raspbian bekomme ich jedoch ein merkwürdiges Verhalten: Beim Versuch, beide Kanäle des PCAN-USB Pros zu initialisieren wird nur PCAN_USBBUS1 initialisiert (PCAN_ERROR_OK), PCAN_USBBUS2 meldet jedoch PCAN_ERROR_NODRIVER.
Wenn ich jedoch zusätzlich zum PCAN-USB Pro noch einen PCAN-USB anschließe, wird PCAN_USBBUS1 weiterhin initialisiert, meldet beim zweiten Initialisierungsversuch korrekt PCAN_ERROR_INITIALIZE, da er bereits initialisiert ist, woraufhin dann PCAN_USBBUS2 PCAN_ERROR_OK zurückgibt. Versuche ich jedoch anschließend ein drittes Gerät zu initialisieren, meldet der bereits initialisierte PCAN_USBBUS1 ebenfalls wieder PCAN_ERROR_OK, es wird also angeblich das 1. USB-Gerät zweimal initialisiert. Beim Anschluss von zwei PCAN-USB (ohne einen Pro) ist das Ergebnis identisch.
Der Linux-Treiber erkennt beide Kanäle korrekt, beim Anschluss des PCAN-USB Pro kann ich über die Chardev-Dateien /dev/pcanusb0 und /dev/pcanusb1 von beiden Kanälen lesen.
Können Sie mir bei diesem Problem weiterhelfen?
Vielen Dank im Voraus
Manfred Vonderheidt