Hallo,
mein Name ist Mario und ich hab ein recht spezielles Problem mit einem USB Gerät welches einen LPC214x Microcontroler hat und darüber gesteuert wird.
Ich besitze eine Helo Lasergraviermaschine und die original Software dazu. Leider ist die Software nicht perfekt, und ich habe hier jede Menge gute Ideen eine bessere zu programmieren.
Ich beschäftige mich seit Jahren mit Visual Basic6 und lerne hier hauptsächlich aus „Code Schnipseln“. Ich habe bereits mehrere eigene Fräsen gebaut und diverse Software zur Ansteuerung von Schrittmotorkarten geschrieben (Takt-Richtung bzw. SMC Karten). Leider bisher nur über den Parallelport und mit Hilfe von IOPORT.DLL
Jetzt würde ich gerne eine Steuerung für eben diese Lasermaschine schreiben. Leider fehlt mir die Erfahrung wie ich den Treiber oder aber die Maschine direkt ansteuern kann.
Was ich bisher weiß:
-
Maschine ist über USB Port verbunden
-
Ein Treiber (LPC214x.SYS) ist von der org. Software installiert und steuert sie offenbar an.
-
Die Maschine besitzt eine Schrittmotorsteuerung welche einen LPC214 Microcontroler beeinhaltet. Ich kenne mich mit den Dingern leider nicht aus, aber es ist auf jeden Fall eine Schrittmotorkarte.
-
Per USB Monitorsoftware habe ich z.B. folgenden „Mitschnitt“ von den an den USB Port gesendeten Daten machen können:
[33] URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER (SUCCESS/0x00000000) 20091204184330.859 (+0)
Pipe handle: 0x82D648CC
Transfer flags: 0x00000002 (USBD_SHORT_TRANSFER_OUT, USBD_SHORT_TRANSFER_OK)
Transfer buffer MDL: 0x82BC78F0
Transfer buffer length: 16
Bytes transferred
0x0000: 5A 5A 5A 46 69 6C 65 30 3B 52 53 3B 5A 45 44 3B (ZZZFile0;RS;ZED:wink:
Mein Problem: Ich möchte den String „ZZZFILE0;RS;ZED;“ an den USB Port senden. Offensichtlich sind die Daten welche an den Treiber bzw. an die Maschine gesendet werden Plotter ähnliche Befehle (ich vermute die umsetzung ist dann die Sache des Microcontrolers)
Das oben genannte Beispiel ist eine Fahrt zum Maschinennullpunkt. „ZZZFILE0;“ und „ZED;“ stehen am Anfang bzw. Ende eines jeden Befehls.
Ich habe eine VID 0471 und PID999 der USB Hardware. Was ich nicht hinbekomme ist ein String an den USB Ausgang zu senden (ich hab schon viel gelesen und weiß, daß es nicht so einfach ist wie mit den Parallel Ports).
Ich bräuchte jemand der mir meinen CODE so umschreibt, oder mir Hilfestellung geben kann wie ich es machen muss um in VB6 und unter WIN XP Pro den oben genannten String zu senden. Alle anderen Befehle kann ich mir ja dann herleiten.
Im Netz habe ich eine LIBUSBVB.DLL gefunden mit welcher per VB6 die LIBUSB-WIN32 DLL angesteuert werden kann. Diese DLL soll eine einfache Ansteuerung aller USB Geräte ermöglichen.
Mein Beispielprojekt mit dem entscheidenden Senden Button kann ich gerne jedem zusenden der mir hier evtl. weiterhelfen kann. Ich wäre auch bereit etwas zu „spenden“ für denjenigen der mir hier weiterhelfen kann
Das Problem ist leider sehr speziell und vermutlich finde ich nicht viele Leute die sich auch noch mit Visual Basic auskennen und wissen wie ich das Senden eines Befehls an den USB Port hinbekomme :-/
Ich weiss auch nicht ob ich überhaupt den original Treiber LPC214X.SYS benötige oder ob man einfach über VID und PID senden kann. Und in welchem Format die Daten gesendet werden müssen (Hex oder Dezimal?!)
Die im Netz zu findende DLL LIBUSB kann auch einen eigenen Treiber herstellen der dann jegliche USB Hardware steuern kann. Leider mangelt es mir an Erfahrung was ich für Buffer und Timeout etc. einfüllen muss und welche Funktion wirklich das sendet was ich benötige. Deshalb wäre ich überglücklich über ein Beispielprojekt welches den obigen Beispielstring sendet.
Mit freundlichen Grüßen
Mario Pagliarini