Hat es jemand geschafft Ixxat oder Kvaser USB zu CAN converter brauchbar zu machen für in wine installierte SW? Ich hab da Ubuntu am Heimlaptop und wollte über CAN bus mit meiner Maschine reden. Die Ixxat und Kvaser stellen Treiber für Linux bereit. Aber z.B. die SW Composer mit der man Motorservotreiber von Elmo einstellen kann, ist nur für Windows geschrieben. Sie lässt sich zwar im wine betreiben, aber ich bekomme keine Kommunikation zustande. Ixxat canAnalyser mini sagt, er findet keinen USB2CAN controller. Hat das jemand geschafft über wine das USB zum laufen zu bringen?
Ich denke das wird so nichts. Die Programme/Libraries/Treiber scheinen nicht nur über libusb mit den Geräten zu kommunizieren, sondern diese Geräte haben eigene Windows USB Treiber. Da es libusb unter fast allen Systemen gibt, hätte man sonst darüber gehen können, aber bei Geräte spezifischen Treibern wie hier kann man leider an der stelle nichts machen. Bei Linux gibt es wenigstens eine standardisierte API, aber unter Windows kann ich nichts derartiges finden. Da gibt es CANAL oder neu vscp[1], CANlib[2], VCI[3], etc. Die API von CANAL und CANLib sehen sehr einfach aus, und könnte ich vermutlich in ein zwei Stunden implementieren, wenn ich irgendwelche CAN Devices und ein Program zum testen hätte. Das Problem ist nur, dieser "SW Composer", und was für Programme du sonst noch gerne nutzen würdest, welche Devices unterstützen diese, über welche Libs greifen diese darauf zu? Es wäre sinnlos die falschen Libs zu ersetzen/implementieren. Eine Liste, welche DLLs die Programme suchen, die du willst, wäre hier nützlich, um zurückverfolgen zu können wo man was implementieren muss. Ansonsten ist das ganze Unterfangen absolut aussichtslos. 1) https://www.8devices.com/products/usb2can -> https://www.8devices.com/media/products/usb2can/downloads/CANAL_API.pdf -> https://github.com/krumboeck/usb2can_canal/blob/master/CANAL/CANAL/win32/usb2can.def -> https://github.com/grodansparadis/vscp/blob/master/src/vscp/drivers/level1/usb2can/usb2can/win32/usb2can.def bzw. https://github.com/grodansparadis/vscp/blob/3ec15a8d22adfedcbda2f24ef265b9fd20030af9/src/vscp/drivers/level1/ixxat_vc2/win32/ixxatvcidrv.def 2) https://www.kvaser.com/kvaser/site/canlib-webhelp/page_core_api_calls.html 3) https://www.ixxat.com/products/products-industrial/pc-interfaces/pc-can-interfaces/windows
wow. Wenn ich das rein finanziell überdenke, dann ist es günstiger einen Windows PC zu kaufen und da die Programme laufen zu lassen... Aber das ist Hobby und da zählt kein Geld oder Zeit... Dieser Composer von Elmo kann 3 Sachen verwenden: Kvaser Treiber über den Kvaser eigenen Treiber, und Ixxat Treiber über VCI Treiber, oder Softing mit einem mir unbekannten Treiber. Ich würde gerne Kvaser oder IXXAT erst mal zum Laufen bringen. Ich habe da was gefunden: https://github.com/brentr/wineftd2xx Das ist für die Intronix Logic analyser. Ein FTDI Treiber. Ich werd daraus nicht schlau. also das ist eine DLL die dem wine vorgaukelt ein echter Treiber zu sein und benutzt die Linux treiber? Aber ich verstehe noch nicht wie das funktioniert. Sowas ähnliches müssten wir auch für die USB2CAN Treiber machen... Im Wine lässt sich COmposer locker installieren und er läuft auch. Aber er erkennt den VCI Treiber nicht. Sogar Ixxats eigener Canalyser erkennt nichts. Wie sehe ich welche dll er benutzen will?
Wäre es nicht weniger Aufwand, die Funktion von "Composer" selbst als Linux-Programm nachzubauen? Dann würde der ganze Wine-Treiber-DLL-Wasauchimmer-Kram einfach wegfallen ...
Martin G. schrieb: > Im Wine lässt sich COmposer locker installieren und er läuft auch. Aber > er erkennt den VCI Treiber nicht. Sogar Ixxats eigener Canalyser erkennt > nichts. > Wie sehe ich welche dll er benutzen will? Es gibt mehrere Möglichkeiten: 1) Am effektivsten wäre wohl die Anwendung in Wine von der Konsole aus zu starten, und vorher die Environmentvariable "WINEDEBUG=+loaddll" zu setzen [1]. So sieht man welche DLLs wann tatsächlich gestartet werden. Schreibe die Ausgabe am besten gleich auch noch in eine Datei: "WINEDEBUG=+loaddll wine anwendung.exe 2>&1 | tee winelog.log". Stelle vorher sicher, dass die Anwendung mit "wine anwendung.exe" gestartet werden kann. Falls das nicht geht, prüfe, ob das current working directory und das WINEPREFIX stimmen. Danach kann man die Datei mit den Ausgaben noch weiter durchsuchen, z.B. so: "grep -i can winelog.log" oder "grep -i vci winelog.log". 2) Man könnte z.B. mit "strings anwendung.exe | grep '.dll$'" in einer .exe oder .dll alle Strings ausgeben, die mit .dll enden, womit man dann die meisten DLLs haben sollte. Die DLLs können aber auch DLLs nachladen. Die canlib API von Kvaser scheint mir im vergleich zu VCI einfacher. Könntest du nachsehen, ob bei "grep 'canlib.*.dll' pfad/zum/verzeichnis/" auf das Verzeichnis, wo das Programm mit all seinen DLLs, das du nutzen willst, installiert wurde, etwas findet? Das wäre dann nämlich ein gutes Indiz, dass die canlib32.dll verwendet wurde. Dann könnte man in einem nächsten schritt mal eine dummy dll erstellen, und von der Anwendung laden lassen, und dann Schließlich die Funktionen implementieren. Bei der DLL kann man die Funktionssignaturen und Konstanten ziemlich leicht in der SDK von Kvaser in der canlib.h nachlesen. 1) https://wiki.winehq.org/Wine_User%27s_Guide
Martin G. schrieb: > Ein FTDI Treiber. > Ich werd daraus nicht schlau. also das ist eine DLL die dem wine > vorgaukelt ein echter Treiber zu sein und benutzt die Linux treiber? Wine unterstützt keine Treiber. Programme sprechen normalerweise nicht direkt mit Geräten, stattdessen verwenden sie die API einer DLL, die zum Treiber gehört, die dann die Kommunikation mit dem Kernel/Treiber usw. übernimmt. Wine kann eigene .dll und .dll.so statt der nativen laden, die die selbe API exportiert. Letztere können auf Linux APIs und Libraries zurückgreifen, und mit diesen die API der DLL implementieren.
Danke für die Tipps mit WINEDEBUG... Werd's weiter versuchen. Rufus Τ. F. schrieb: > Wäre es nicht weniger Aufwand, die Funktion von "Composer" selbst als > Linux-Programm nachzubauen? Dann würde der ganze > Wine-Treiber-DLL-Wasauchimmer-Kram einfach wegfallen ... Leider sendet der Composer sehr viele Daten, mit Befehl-Paketen, die nicht beschrieben sind im Benutzerhandbuch. Irgendwie schafft er es den Servo zu tunen und alles einzustellen, aber es ist nicht richtig beschrieben, sondern "der macht das schon". Ich würde das Tunen gerne selber machen, denn zur Zeit sind die Teile ziemlich laut eingestellt. (lautes Rauschen im Pos-Regelbetrieb) Ich denke die Strommessung ist zu rauschbehaftet.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.