Zugang zu USB-HID-Geräten verschaffen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

Guten Tag, :)

Es gibt ein USB-HID-Gerät names CronusMax.
Wie kann ich das Gerät vom Programm erkennen lassen und dann Skript/s darauf installieren?

Mit freundlichen Grüßen,
xXSkyWalkerXx1 ^^
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@xXSkyWalkerXx1: Hast Du denn eine Beschreibung des Protokolls über das man mit dem Gerät kommunizieren muss?
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das kann dir hier keiner sagen. Prinzipiell kannst du https://github.com/trezor/cython-hidapi benutzen, um mit dem Ding zu reden. Nur musst du deine Skripte ja kompilieren, und dann auf das Ding bekommen. Das geht mit deren IDE, aber generisch ist da nix. Entweder hartes reverse engineering von allem, oder du hast Glueck und die haben zB einen compiler, den du einfach benutzen kannst. Und dann ist es "nur" das HID device ansprechen um das Skript draufzukriegen. Aber auch das ist kein Standardweg.
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

__blackjack__ hat geschrieben: Montag 2. Juli 2018, 16:52 @xXSkyWalkerXx1: Hast Du denn eine Beschreibung des Protokolls über das man mit dem Gerät kommunizieren muss?
Habe mal nachgeschaut und nichts gefunden.
Und ich selbst kenne mich da noch nicht aus.
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

__deets__ hat geschrieben: Montag 2. Juli 2018, 17:01 Das kann dir hier keiner sagen. Prinzipiell kannst du https://github.com/trezor/cython-hidapi benutzen, um mit dem Ding zu reden. Nur musst du deine Skripte ja kompilieren, und dann auf das Ding bekommen. Das geht mit deren IDE, aber generisch ist da nix. Entweder hartes reverse engineering von allem, oder du hast Glueck und die haben zB einen compiler, den du einfach benutzen kannst. Und dann ist es "nur" das HID device ansprechen um das Skript draufzukriegen. Aber auch das ist kein Standardweg.
Warte mal, ich glaube die haben ne API hochgeladen - da müsste doch was stehen oder?
Denn CronusPro enthält ein Compiler.
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

Was heisst "CronusPro enthaelt einen Compiler"? Das USB-Geraet selbst? Ganz bestimmt nicht, das ist ein popeliger AVR-Kern mit 16MHz. Da laeuft kein Compiler drauf. Sondern nur ein Interpreter fuer deine Skripte. Das die Software fuer den CronusPro die Skript compiliert ist klar. Das meinte ich mit "IDE". Ob *du* die Skripte von deinem Python-Programm aus selbst uebersetzen kannst, ohne die IDE benutzen zu muessen, das kann ich so nicht sagen. Wenn die eine Api "hochgeladen" haben, dann steht da vielleicht was dazu, ja. Ich hab' da nix gefunden.
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

__deets__ hat geschrieben: Montag 2. Juli 2018, 17:20 Was heisst "CronusPro enthaelt einen Compiler"? Das USB-Geraet selbst? Ganz bestimmt nicht, das ist ein popeliger AVR-Kern mit 16MHz. Da laeuft kein Compiler drauf. Sondern nur ein Interpreter fuer deine Skripte. Das die Software fuer den CronusPro die Skript compiliert ist klar. Das meinte ich mit "IDE". Ob *du* die Skripte von deinem Python-Programm aus selbst uebersetzen kannst, ohne die IDE benutzen zu muessen, das kann ich so nicht sagen. Wenn die eine Api "hochgeladen" haben, dann steht da vielleicht was dazu, ja. Ich hab' da nix gefunden.
CronusPro ist ja das Programm, nicht das Gerät.
Das Gerät ist der CronusMax.

Kurz:
CronusMax = Gerät
CronusPro = Compiler mit weiteren Features

Achso. Wie kann man denn sowas übersetzen?
Was müsste das Programm machen?
Wo/Was hast nichts gefunden - die API oder nützliche Infos aus der API?

Kann ja die API hier hochladen wenn du sie nicht haben solltest.
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

Es muss ein Programm geben wie zb cl.exe bei VisualStudio, das dort C++ nach Maschinensprache uebersetzt. Nur eben fuer dein GDC. Ob es das gibt, oder ob die den eingebaut haben in CronusPro so das man ohne die komplette IDE nix machen kann, kann ich dir nicht sagen. Dazu muesstest du mal deine Installation durchforsten, was da so drin is, und mit Task-Manager und Debugger schauen, was die Anwendung macht, wenn du auf den compile-Button drueckst.
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

__deets__ hat geschrieben: Montag 2. Juli 2018, 17:46 Es muss ein Programm geben wie zb cl.exe bei VisualStudio, das dort C++ nach Maschinensprache uebersetzt. Nur eben fuer dein GDC. Ob es das gibt, oder ob die den eingebaut haben in CronusPro so das man ohne die komplette IDE nix machen kann, kann ich dir nicht sagen. Dazu muesstest du mal deine Installation durchforsten, was da so drin is, und mit Task-Manager und Debugger schauen, was die Anwendung macht, wenn du auf den compile-Button drueckst.
In der API Datei sind 3 "interessante" Datein, die wie das Herz des Programmes aussehen - sind aber auch leider verschlüsselt.
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich glaube wir beide haben sehr unterschiedliche Ansichten darueber, was eine API ist... was ich damit meine weiss ich. Was DU damit meinst leider nicht. Kannst du das mal erklaeren?
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

__deets__ hat geschrieben: Montag 2. Juli 2018, 17:49 Ich glaube wir beide haben sehr unterschiedliche Ansichten darueber, was eine API ist... was ich damit meine weiss ich. Was DU damit meinst leider nicht. Kannst du das mal erklaeren?
Klar, was genau soll ich erklären?
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@xXSkyWalkerXx1: API meint für Programmierer das es da eine Dokumentation gibt die einem sagt wie die Schnittstelle für den Programmierer aussieht. Das können per Definition keine ”interessanten” verschlüsselten Dateien sein. Ich bin mir auch nicht sicher ob Du den Begriff „verschlüsselt“ hier richtig verwendest. Wahrscheinlich sind es Kompilate. Nur weil Du etwas nicht lesen kannst, ist es ja nicht verschlüsselt.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

Achsu, die ... aber ne, die 3 Dateien sind wirklich verschlüsselt - zeigte mir mein RasPi an, beim Versuch es zu öffnen.
Sowas eben lerne ich noch - die Begriffe und so...

EDIT: In der API lässt sich allerdings nichts über die Compilierung finden.
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@xXSkyWalkerXx1: Was zeigte Dir Dein RasPi an, und wie hast Du versucht die Dateien zu öffnen?
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

Momentmal, ich glaube sie ist garnicht verschlüsselt.
Habe wahrscheinlich gerade mein Fehler erkannt! :D

Aber wie kann ich dann ne ".dll" öffnen?
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

Gar nicht. Das ist eine Programmbibliothek, die nur unter Windows ausgeführt werden kann.
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

Achsu. Und wie könnte ich sie über Windows öffnen?
Hab ja auch nen Windows PC... ^^
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich hab' nicht oeffnen geschrieben. Ich habe ausfuehren geschrieben. Das ist Programmcode.

Den du so ohne weiteres nicht ausfuehren kannst. Theoretisch kannst du die DLLs in Python laden mit ctypes, und die darin enthaltenen Funktionen aufrufen. Praktisch kann das sehr schwer werden, weil es davon abhaengt, was genau in den DLLs ist, und ob das verstaendlich genug ist, um das ohne API-Dokumentation zu nutzen. Und wenn es sich dabei um C++ handelt, das darin enthalten ist, wuerde ich sogar so weit gehen zu sagen, dass es praktisch nicht machbar ist.

Vor allem aber stellt sich mir die Frage: warum? Da du noch nicht mal weisst, was eine DLL *ist*, ist es doch fraglich, ob du die ueberhaupt *brachst* fuer dein Vorhaben? Woher weisst du das denn?
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@xXSkyWalkerXx1: Was meinst Du mit ”öffnen”? Da ist Maschinensprache drin die Dein Prozessor ausführen kann, und eventuell auch Daten. Wobei es heutzutage auch möglich wäre das .NET-Bytecode für die .NET-VM enthalten ist. Dann könnte man den Code *vielleicht* auch auf einem Raspi verwenden. Auf jeden Fall bräuchte man eine API-Beschreibung, denn an den exportierten Symbolen alleine wird man wohl nur in seltenen/einfachen Fällen raten können wie man die API benutzt.

Werkzeug für native DLLs wäre beispielsweise Dependency Walker. Für .NET gibt's sicher auch irgendwas was da ein wenig Reflection betreibt.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
xXSkyWalkerXx1
User
Beiträge: 379
Registriert: Mittwoch 27. Juni 2018, 17:39

__deets__ hat geschrieben: Montag 2. Juli 2018, 21:36 Ich hab' nicht oeffnen geschrieben. Ich habe ausfuehren geschrieben. Das ist Programmcode.

Den du so ohne weiteres nicht ausfuehren kannst. Theoretisch kannst du die DLLs in Python laden mit ctypes, und die darin enthaltenen Funktionen aufrufen. Praktisch kann das sehr schwer werden, weil es davon abhaengt, was genau in den DLLs ist, und ob das verstaendlich genug ist, um das ohne API-Dokumentation zu nutzen. Und wenn es sich dabei um C++ handelt, das darin enthalten ist, wuerde ich sogar so weit gehen zu sagen, dass es praktisch nicht machbar ist.

Vor allem aber stellt sich mir die Frage: warum? Da du noch nicht mal weisst, was eine DLL *ist*, ist es doch fraglich, ob du die ueberhaupt *brachst* fuer dein Vorhaben? Woher weisst du das denn?
Naja, ob ich die brauch, weiß ich nicht 100%, allerdings habe ich alle anderen Datein durchforstet - nichts was zur Übertragung der Daten zum CronusMax ist enthalten.
Und da ist es sehr wahrscheinlich, dass dann nur noch in der DLL was stehen kann.

Und ich weiß in etwa was ne DLL ist.
Antworten