![]() |
Re: usb raketenwerfer software suckt...
also write lässt sich klicken...ob es schreibt weiss ich nicht...jetzt geht auch das ballern nicht mehr ? hab ich was zerstört ?
ahh jetzt gehts wieder ...aber nur schießen ..das ding bewegt sich nicht ...aber ich weiss, es muss gehen :) ! hab jetzt mal die ersten 3 felder jeweils mit 01 oder und ff gefüllt...es passiert nicht ;( kann es sein , das das erste zum schießen ist und das 2te zum bewegen ? |
Re: usb raketenwerfer software suckt...
Zitat:
lol in dem code sieht das so aus als hätte seine software mehr features als die die dabei war ..von wegen alle auf einmal feuern usw ;) |
Re: usb raketenwerfer software suckt...
Also in dem Python-Source werden drei Nachrichten an das Device geschrieben. Die ersten beiden Nachrichten sind jeweils 8 Bytes lang und immer gleich, die dritte Nachricht 64 Bytes und enthält die eigentlichen Steuerbefehle.
Nachricht 1: 85, 83, 66, 67, 0, 0, 4, 0 Nachricht 2: 85, 83, 66, 67, 0, 64, 2, 0 Nachricht 3: Byte #1 ist immer 0 Byte #2 = 1 heißt Bewegung nach links, sonst 0 Byte #3 = 1 heißt Bewegung nach rechts Byte #4 = 1 heißt Bewegung nach oben Byte #5 = 1 heißt Bewegung nach unten Byte #6 = 1 heißt Feuern Byte #7 = 8 Byte #8 = 8 Byte #9..64 = 0 Die Bewegungsbytes #2 bis #5 kann man kombinieren, zumindestens in sinnvollen Kombinationen. Das eigentliche Senden macht diese Funktion hier:
Code:
wobei ich nicht herausgefunden habe, wofür die anderen Parameter sind:
self.dev.handle.controlMsg(0x21, 0x09, <nachricht>, 0x02, 0x01)
Code:
Den Rest müsste jetzt jemand zusammenbasteln, der weiß, wie man USB von Delphi aus programmiert.
requestType: specifies the direction of data flow, the type of request, and the recipient.
request: specifies the request. buffer: ... value: specific information to pass to the device. (default: 0) index: specific information to pass to the device. (default: 0) timeout: operation timeout in miliseconds. (default: 100) Zwei Pearl-Raketenwerfer hab ich hier auch stehen :-) |
Re: usb raketenwerfer software suckt...
Die Nachrichten gehen direkt an den libusb-Treiber der fuer das Geraet eingerichtet wird.
USB kennt allerlei verschiedene Arten der Datenuebertragung. Die weiteren Parameter sind USB-spezifisch und machen nur Sinn auf Treiberebene. Fuer den Zugang ueber das HID API ist das irrelevant weil die Werte festliegen und innerhalb des HID-Treibers eingefuegt werden. |
Re: usb raketenwerfer software suckt...
also ich habe keine bewegung hingekriegt bis jetzt... schießen ja, drehen nein ...ich teste weiter..ich verstehe das auch nicht mit den bewegungsbytes...bei mir passiert nichts ?
|
Re: usb raketenwerfer software suckt...
Ich habe mal Sourcen gesucht:
Code:
Das hier sollte weiterhelfen. Erst mal werden zwei Initialisierungen geschrieben. Da dies 8 Byte sind muss es als "Set Feature" an das erste Geraet oder als "Write" and das zweite Geraet gehen. Die 64 Bytes des eigentlichen Kommandos gehen an das erste Geraet per "Write".
static void missile_do( missile_usb *control, int cmd )
{ int a, b, c, d, e; /* Two fixed-format initiator packets appear to be required */ if (missile_usb_sendcommand(control, 'U', 'S', 'B', 'C', 0, 0, 4, 0 )) { perror("missile_usb_sendcommand failed"); return; } if (missile_usb_sendcommand(control, 'U', 'S', 'B', 'C', 0, 64, 2, 0 )) { perror("missile_usb_sendcommand failed"); return; } /* Now the actual movement command! */ a = cmd & missile_left ? 1 : 0; b = cmd & missile_right ? 1 : 0; c = cmd & missile_up ? 1 : 0; d = cmd & missile_down ? 1 : 0; e = cmd & missile_fire ? 1 : 0; if (missile_usb_sendcommand64(control, 0, a, b, c, d, e, 8, 8 )) { perror("missile_usb_sendcommand failed"); return; } } Die Init-Reports in Hex: 55 53 42 43 00 00 04 00 55 53 42 43 00 40 02 00 Der 64 Byte Report sollte man auch so hinkriegen. Die beiden 08 Bytes nicht vergessen. Bitte mit SimpleHIDWrite experimentieren und hier posten ob man beide Geraete ansprechen muss oder ob es Set Feature an das erste Geraet ist (meine Wette steht auf zwei Geraete). Sobald das klar ist, kann ich ein Delphiprogramm zur Kommunikation entwerfen. |
Re: usb raketenwerfer software suckt...
also ich spreche das erste gerät an und egal was ich da per set feature hinschicke, es feuert. bei dem 2ten gerät tut sich nichts..
aber ich glaube ich verstehe das auch nicht wirklich ..kannst du mir einen screeny machen von dem (1a tool) hid mit den werten die ich eintragen soll, danke dir ! |
Re: usb raketenwerfer software suckt...
Erst das zweite Geraet auswaehlen und die beiden Init-Reports per "Write" schreiben (ReportID natuerlich 00).
Das erste Geraet auswaehlen und per "Write" und ReportID 00 00 01 00 00 00 00 08 08 schreiben (die restlichen Bytes leer lassen, da sie automatisch mit 00 gefuellt werden). Das sollte eine Bewegung nach links ausloesen. Fuer weitere Experimente sei noch erwaehnt das man Zeilen Log-Window doppelklicken kann. Da faellt mir gerade noch eine Optimierung fuer SimpleHIDWrite ein. Pasten von Strings mit Hex. |
Re: usb raketenwerfer software suckt...
Liste der Anhänge anzeigen (Anzahl: 1)
also ich habe jetzt beim 2ten das eingegeben aber es tut sich nichts.
|
Re: usb raketenwerfer software suckt...
Bitte mitlesen. An das zweite Geraet sollte zweimal geschrieben werden (ReportID jeweils 00):
55 53 42 43 00 00 04 00 55 53 42 43 00 40 02 00 Im Log sollte WR 00 55 53 42 43 00 00 04 00 WR 00 55 53 42 43 00 40 02 00 auftauchen. Danach das erste Geraet auswaehlen und 00 01 00 00 00 00 08 08 schreiben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz