![]() |
Re: usb raketenwerfer software suckt...
Liste der Anhänge anzeigen (Anzahl: 1)
also wenn ich beim ersten gerät write mache, bekomme ich einen zugriffsfehler. wenn ich dann set features mache, passiert auch nichts. -> screeny
|
Re: usb raketenwerfer software suckt...
okay, kommando zurück, es dreht sich :) ! nur nach links ;) ! aber es dreht sich ;) ! yippi !
ich hab jetzt nur beim 2ten: die 2 werte angegeben ! |
Re: usb raketenwerfer software suckt...
kannst du mir erklären was die einzelnen werte aussagen ?
WR 00 55 53 42 43 00 00 04 00 WR 00 55 53 42 43 00 40 02 00 |
Re: usb raketenwerfer software suckt...
Kannst du die HID Komponente runterladen und mit dem Batchfile in Demos die Demo-Programme uebersetzen? Die Komponente muss dazu nicht installiert sein.
Wenn ja dann aendere in DevReader.pas die Zeile SetReportBtn.Enabled := (Dev.Caps.OutputReportByteLength <> 0) and GetReportBtn.Enabled; in SetReportBtn.Enabled := (Dev.Caps.OutputReportByteLength <> 0) and Dev.HasReadWriteAccess; Damit sollte der "Set Report"-Button freigeschaltet sein. Statt "Write" auf dem ersten Geraet dann "Set Report" verwenden. Schau doch in die C-Source die ich gepostet habe. Das ist einfach die Hex-Repraesentation dieser Init-Daten "USBC...". Statt eines Screenshots kannst du auch das Log mit "Save" speichern und einfach in code Tags hier posten. |
Re: usb raketenwerfer software suckt...
ich habe mir grade admin rechte verpasst :) ich kann auch die komponente installieren...moment , das mache ich mal !
|
Re: usb raketenwerfer software suckt...
japp..hat alles geklappt..so jetzt zu dem c source..ich verstehe den nicht ganz...ich habe jetzt mal die werte geändert wie ich denke ..aber es dreht sich nur nach rechts
ich verstehe das:
Delphi-Quellcode:
if (missile_usb_sendcommand64(control, 0, a, b, c, d, e, 8, 8 ))
ich tausche einfach die buchstaben durch 01 aus, je nach bewegung. aber alles was ich mache führt nur zum rechts dreh ? |
Re: usb raketenwerfer software suckt...
okay ich denke ich weiss woran es liegt, ich muss also jedesmal die beiden werte zuerst schicken , und danach die bewegung ?
1ne bewegung besteht also aus einem block: erst die 2 an den 2ten und danch die bewegung an den ersten ? problem ist nur..der macht eine durchgehende bewegung und nicht wie in der software -> bewegen solange klicken ? |
Re: usb raketenwerfer software suckt...
Ja, jedes Kommando besteht aus den drei Schreiboperationen.
Nochmal zur Bestaetigung: Es muss also "Set Report" auf dem ersten Geraet sein oder "Set Report" auf beiden? Mit den Infos kann ich nun ein simples Testprogramm schnitzen. Ja, jeder Befehl scheint permanente Bewegung auszuloesen. Zum Stoppen einen Befehl mit 00 fuer a, b, c, d, e senden. Ist ja auch logisch. 01 heisst Motor an und 00 Motor aus. |
Re: usb raketenwerfer software suckt...
also bei gerät 2 ist es write (es geht aber auch set report) und bei gerät 1 ist es set report...
|
Re: usb raketenwerfer software suckt...
Na dann weiss ich alles was ich brauche.
|
Re: usb raketenwerfer software suckt...
sau geil...ich bin mal so gespannt ! 10000 dank für deine hilfe usw ! hast was gut !
|
Re: usb raketenwerfer software suckt...
hast du schon was gebastelt ?
|
Re: usb raketenwerfer software suckt...
Jetzt mach aber mal langsam. Roberts Post ist gerade mal zwei Stunden alt und irgendwann muss er wohl auch noch mal etwas Geld verdienen.
|
Re: usb raketenwerfer software suckt...
lol..ich mach doch selber grade sowas ;)...ich wollte nur wissen wie weit er ist ;) also ich hab hier ein paar fehler und es will alles nicht so wie ich es gerne hätte. -> arbeitet ihr zusammen ?
|
Re: usb raketenwerfer software suckt...
Ich hab ihm eine PM geschickt das es bis morgen dauert weil ich ja auch noch arbeiten muss :-)
Ist auch ein bischen trickreich, da zwei Geraete verwaltet werden muessen. Ich glaube ich baue auch noch eine Verwandschaftsfunktion in die HID-Komponente ein. Man muss pruefen koennen ob zwei Geraete nicht in Wirklichkeit nur Teilgeraete eines Geraetes sind. Das wird gebraucht wenn man jemals, wie in den Videos gezeigt, mehrere Raketenwerfer benutzen will. Auf die Idee eine Webcam zu montieren und Zielschiessen zu veranstalten sind die Leute auch schon gekommen. |
Re: usb raketenwerfer software suckt...
man muss nur was machen um die reichweite zu tunen, ich denke 3 neue federn könnten da helfen....mal schauen was man da machen kann
|
Re: usb raketenwerfer software suckt...
Zitat:
|
Re: usb raketenwerfer software suckt...
okay, sorry
|
Re: usb raketenwerfer software suckt...
Wie Lucky andeutet ist das gefaehrlich und daher nicht gern gesehen.
Es gibt aber noch einen anderen Grund warum das nicht so toll ist. Da kann man doch garnicht per Progrsamm die ballistische Kurve ausgleichen. Da macht das Zielschiessen doch nur halb soviel Spass. |
Re: usb raketenwerfer software suckt...
ich meine einfach zum erhöhen der reichweite..bei meiner paintball gun habe ich das genauso gemacht, resultat: 50% weiter.
|
Re: usb raketenwerfer software suckt...
Das erhoeht aber die Durchschlagskraft und damit ist das Ding illegal.
|
Re: usb raketenwerfer software suckt...
Es handelt sich hier doch um Schaumstoffraketen und nicht um Kriegsmaschinerie. Ich find sowas allerdings recht überflüßig, vorallem im Büro, auf LANs mag sowas vielleicht 5 Minuten Spaß machen aber sonst. Und ob man das ding wirklich tunen muss. Mit Paintball Waffen wär ich da lieber vorsichtiger, dass ist ja kein Spiel mehr... Trotzdem ist die Konfigurationsgeschichte interessant, die Source würd ich auch gern sehen wenns fertig ist.
|
Re: usb raketenwerfer software suckt...
Zitat:
finde das auch alles sehr interessant und danke an dieser stelle dem robert nochmal recht herzlich für seine mühe. |
Re: usb raketenwerfer software suckt...
So ein Stueck Schaumstoff bei grosser Geschwindigkeit hat das Space Shuttle kaputtgemacht. Der menschliche Koerper ist da sehr empfindlich z. B. wenn man was ins Auge kriegt.
Natuerlich werde ich die Sourcen hier posten. Es geht hier wie beim PowerMate-Thread um die Erforschung unbekannter HID-Geraete und um das Design einer Anwendung dazu. Besser kann man doch kaum lehren. Der Thread enthaelt alles was man braucht. Schwierigkeiten bei der Kommunikation, rechtliche Grenzen. Das naechste sind die Designideen fuer das Programm. |
Re: usb raketenwerfer software suckt...
das würde ich sehr gerne übernehmen, also das design.
ich glaube das kann ich gut ;). mach am besten nen rohling den sich jeder selbst designen kann ;) das wäre groovie ! |
Re: usb raketenwerfer software suckt...
gibts news ? kann es kaum noch erwarten ;)..ich komm hier nicht weiter
|
Re: usb raketenwerfer software suckt...
Alter Mann ist doch kein D-Zug ;-)
Ich musste noch ein bischen Feinschliff betreiben wie Kommentare. Man erstelle sich ein Delphi-Projekt und speichere als OfficeRocketMain.pas und OfficeRocket.dpr. Danach die untenstehende Source kopieren und in OfficeRocketMain.pas pasten. Das selbe fuer die Form. Dazu schaltet man mit Rechtsklick auf "View as Text" um.
Code:
object OfficeRocketForm: TOfficeRocketForm
Left = 501 Top = 124 BorderIcons = [biSystemMenu, biMinimize] BorderStyle = bsSingle Caption = 'OfficeRocket' ClientHeight = 171 ClientWidth = 173 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = False Position = poScreenCenter PixelsPerInch = 96 TextHeight = 13 object UpBtn: TSpeedButton Tag = 2 Left = 72 Top = 32 Width = 23 Height = 22 AllowAllUp = True GroupIndex = 2 Enabled = False Glyph.Data = { 76010000424D7601000000000000760000002800000020000000100000000100 04000000000000010000120B0000120B00001000000000000000000000000000 800000800000008080008000000080008000808000007F7F7F00BFBFBF000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333000333 3333333333777F33333333333309033333333333337F7F333333333333090333 33333333337F7F33333333333309033333333333337F7F333333333333090333 33333333337F7F33333333333309033333333333FF7F7FFFF333333000090000 3333333777737777F333333099999990333333373F3333373333333309999903 333333337F33337F33333333099999033333333373F333733333333330999033 3333333337F337F3333333333099903333333333373F37333333333333090333 33333333337F7F33333333333309033333333333337373333333333333303333 333333333337F333333333333330333333333333333733333333} NumGlyphs = 2 OnClick = CommandClick end object LeftBtn: TSpeedButton Left = 40 Top = 64 Width = 23 Height = 22 AllowAllUp = True GroupIndex = 1 Enabled = False Glyph.Data = { 76010000424D7601000000000000760000002800000020000000100000000100 04000000000000010000120B0000120B00001000000000000000000000000000 800000800000008080008000000080008000808000007F7F7F00BFBFBF000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333 3333333333333333333333333333333333333333333333333333333333333333 3333333333333FF3333333333333003333333333333F77F33333333333009033 333333333F7737F333333333009990333333333F773337FFFFFF330099999000 00003F773333377777770099999999999990773FF33333FFFFF7330099999000 000033773FF33777777733330099903333333333773FF7F33333333333009033 33333333337737F3333333333333003333333333333377333333333333333333 3333333333333333333333333333333333333333333333333333333333333333 3333333333333333333333333333333333333333333333333333} NumGlyphs = 2 OnClick = CommandClick end object RightBtn: TSpeedButton Tag = 1 Left = 104 Top = 64 Width = 23 Height = 22 AllowAllUp = True GroupIndex = 1 Enabled = False Glyph.Data = { 76010000424D7601000000000000760000002800000020000000100000000100 04000000000000010000120B0000120B00001000000000000000000000000000 800000800000008080008000000080008000808000007F7F7F00BFBFBF000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333 3333333333333333333333333333333333333333333333333333333333333333 3333333333333333333333333333333333333333333FF3333333333333003333 3333333333773FF3333333333309003333333333337F773FF333333333099900 33333FFFFF7F33773FF30000000999990033777777733333773F099999999999 99007FFFFFFF33333F7700000009999900337777777F333F7733333333099900 33333333337F3F77333333333309003333333333337F77333333333333003333 3333333333773333333333333333333333333333333333333333333333333333 3333333333333333333333333333333333333333333333333333} NumGlyphs = 2 OnClick = CommandClick end object DownBtn: TSpeedButton Tag = 3 Left = 72 Top = 96 Width = 23 Height = 22 AllowAllUp = True GroupIndex = 2 Enabled = False Glyph.Data = { 76010000424D7601000000000000760000002800000020000000100000000100 04000000000000010000120B0000120B00001000000000000000000000000000 800000800000008080008000000080008000808000007F7F7F00BFBFBF000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333303333 333333333337F33333333333333033333333333333373F333333333333090333 33333333337F7F33333333333309033333333333337373F33333333330999033 3333333337F337F33333333330999033333333333733373F3333333309999903 333333337F33337F33333333099999033333333373333373F333333099999990 33333337FFFF3FF7F33333300009000033333337777F77773333333333090333 33333333337F7F33333333333309033333333333337F7F333333333333090333 33333333337F7F33333333333309033333333333337F7F333333333333090333 33333333337F7F33333333333300033333333333337773333333} NumGlyphs = 2 OnClick = CommandClick end object ShootBtn: TSpeedButton Tag = 4 Left = 59 Top = 128 Width = 49 Height = 22 AllowAllUp = True Caption = 'Shoot' Enabled = False OnClick = ShootBtnClick end object HidCtl: TJvHidDeviceController OnDeviceChange = HidCtlDeviceChange Left = 136 Top = 8 end end
Delphi-Quellcode:
Ich kann natuerlich nicht garantieren das es funktioniert, daher bitte testen und Fehler beseitigen.
unit OfficeRocketMain;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls, JvHidControllerClass; type TRocketInitRec = packed record ReportID: Byte; Payload: array [0..7] of Byte; end; TRocketCommandRec = packed record ReportID: Byte; Payload: array [0..63] of Byte; end; TRocketCommand = (rcLeft, rcRight, rcUp, rcDown, rcFire); TRocketCommands = set of TRocketCommand; TOfficeRocketForm = class(TForm) UpBtn: TSpeedButton; LeftBtn: TSpeedButton; RightBtn: TSpeedButton; DownBtn: TSpeedButton; ShootBtn: TSpeedButton; HidCtl: TJvHidDeviceController; procedure CommandClick(Sender: TObject); procedure HidCtlDeviceChange(Sender: TObject); procedure ShootBtnClick(Sender: TObject); public // both devices are needed to access Rocket Launcher RocketCommand: TJvHidDevice; RocketInit: TJvHidDevice; Commands: TRocketCommands; procedure SendRocketCommands(Cmds: TRocketCommands); end; var OfficeRocketForm: TOfficeRocketForm; implementation {$R *.dfm} function CheckCommandDevice(HidDev: TJvHidDevice): Boolean; stdcall; begin Result := (HidDev.Attributes.VendorID = $1130) and (HidDev.Attributes.ProductID = $0202) and (HidDev.Caps.OutputReportByteLength = 65); end; function CheckInitDevice(HidDev: TJvHidDevice): Boolean; stdcall; begin Result := (HidDev.Attributes.VendorID = $1130) and (HidDev.Attributes.ProductID = $0202) and (HidDev.Caps.OutputReportByteLength = 9); end; procedure TOfficeRocketForm.HidCtlDeviceChange(Sender: TObject); var Found: Boolean; begin // give back devices no matter which plug or unplug caused the event HidCtl.CheckIn(RocketCommand); HidCtl.CheckIn(RocketInit); // try to get the two Rocket devices if HidCtl.CheckOutByCallback(RocketCommand, CheckCommandDevice) then HidCtl.CheckOutByCallback(RocketInit, CheckInitDevice); // enable/disable GUI Found := Assigned(RocketCommand) and Assigned(RocketInit); DownBtn.Enabled := Found; LeftBtn.Enabled := Found; RightBtn.Enabled := Found; ShootBtn.Enabled := Found; UpBtn.Enabled := Found; end; procedure TOfficeRocketForm.SendRocketCommands(Cmds: TRocketCommands); const // init data to write to RocketInit device Init1: TRocketInitRec = (ReportID: $00; Payload: ($55, $53, $42, $43, $00, $00, $04, $00)); Init2: TRocketInitRec = (ReportID: $00; Payload: ($55, $53, $42, $43, $00, $40, $02, $00)); // data template to write to RocketCommand device (causes stop if unmodified) CmdEmpty: TRocketCommandRec = (ReportID: $00; Payload: ($00, $00, $00, $00, $00, $00, $08, $08, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00)); var Written: DWORD; Init: TRocketInitRec; Command: TRocketCommandRec; I: TRocketCommand; begin // send both init commands Init := Init1; RocketInit.WriteFile(Init, SizeOf(Init), Written); Init := Init2; RocketInit.WriteFile(Init, SizeOf(Init), Written); // collect commands into command record Command := CmdEmpty; for I := Low(TRocketCommand) to High(TRocketCommand) do if I in Cmds then Command.Payload[Ord(I) + 1] := $01; // send commands RocketCommand.WriteFile(Command, SizeOf(Command), Written); end; procedure TOfficeRocketForm.CommandClick(Sender: TObject); begin with Sender as TSpeedButton do if Down then Commands := Commands + [TRocketCommand(Tag)] else Commands := Commands + [TRocketCommand(Tag)]; SendRocketCommands(Commands); end; procedure TOfficeRocketForm.ShootBtnClick(Sender: TObject); begin with Sender as TSpeedButton do begin Commands := Commands + [TRocketCommand(Tag)]; SendRocketCommands(Commands); Commands := Commands + [TRocketCommand(Tag)]; end; end; end. |
Re: usb raketenwerfer software suckt...
Zitat:
|
Re: usb raketenwerfer software suckt...
ich kriege die buttons nicht aktiviert :). also compilieren geht, ich habe die button mal auf enabled = true gesetzt aber es passiert nichts
wenn ich diesen block rausnehme
Delphi-Quellcode:
dann sind die aktiviert aber wenn ich sie dann anklicke, dann bekomme ich einen zugriffsverletzung.
Found := Assigned(RocketCommand) and Assigned(RocketInit);
DownBtn.Enabled := Found; LeftBtn.Enabled := Found; RightBtn.Enabled := Found; ShootBtn.Enabled := Found; upBtn.Enabled := Found; |
Re: usb raketenwerfer software suckt...
Liste der Anhänge anzeigen (Anzahl: 1)
Na das duerfte heissen das die CheckOutByCallback's fehlschlagen. Debugge das doch mal. Pruef auch ob ich VendorID, ProductID und OutputReportByteLength richtig abfrage.
@Lucky, es geht mir hier auch darum die Source direkt vorzustellen damit man sie diskutieren kann. Zip erneuert. |
Re: usb raketenwerfer software suckt...
okay damit bin ich überfordert, kannst du mir step by step sagen wie ich vorgehen soll...ich bekomme keine fehlermeldung
rocket command und init haben bei mir nil |
Re: usb raketenwerfer software suckt...
Zitat:
Ihr müsstet dann natürlich beide zu den Delphi Tagen kommen :mrgreen: |
Re: usb raketenwerfer software suckt...
heheheheh ;) haben auch schon überlegt dahinzufahren .. den raketen werfen kann ich leider nicht verschicken , der ist firmeneigentum. aber wir kriegen das bestimmt auch so hin, der robert ist ein guter lehrmeister :)
|
Re: usb raketenwerfer software suckt...
Wenn ich einen Laden hier in Berlin wuesste wo ich das kaufen kann, dann haette ich schon einen.
Nein, ich bin nicht auf den Delphi-Tagen. Per Post macht das schicken keinen Sinn. Das Forum interaktiv zu nutzen macht da mehr Sinn (und Spass). Luckie kann ja spaeter mal ein bischen ausmisten und irrelevante Posts loeschen. Einen Breakpoint in CheckCommandDevice setzen und das Programm in der IDE starten (F9). $1130 = 4400 und $0202 = 514. Jedesmal wenn der Debugger an der Stelle stehen bleibt, dann die Variablen mit der Maus ansteuern und der Tooltip sagt den Wert. Damit weisst du dann ob das Device gefunden wird. Mit F9 geht es jeweils weiter. Guter Lehrmeister? Willst du mich verleumden? ;-) |
Re: usb raketenwerfer software suckt...
Hmm, der Thread hat mir jetzt echt Appetit gemacht, mir auch mal son Ding zu besorgen *lach*
@Robert: Ist Dir ![]() Momentan werkelt eins davon noch in meiner alten Wohnung, 320km entfernt, ich werd mir aber nochmal eins bestellen, ich find die Dinger superpraktisch :) |
Re: usb raketenwerfer software suckt...
done, also die werte stimmen ! 4400 und 512 OutputReportByteLength = 9 ?
|
Re: usb raketenwerfer software suckt...
Zitat:
sau geil, genau wegen solch einem ding war ich im mediamarkt und die haben mich ausgelacht: sowas gibt es nicht ...ich wusste das es sowas gibt ! danke dir ! |
Re: usb raketenwerfer software suckt...
Das koennte moeglich sein. Es muss ein HID-Geraet sein, damit die HID-Komponente funktioniert. Koennte gut sein, da die Beschreibung "kein Treiber" sagt.
Extra-Netzteil (vermutlich fuer den USB-Teil) ist aber doch ein bischen simpel. |
Re: usb raketenwerfer software suckt...
Zitat:
Das sind so die Fehler die man macht, wenn man ohne Gersaet eine Source schreibt. |
Re: usb raketenwerfer software suckt...
Das Extra-Netzteil braucht man nur wenn man das Ding ohne PC autark laufen lassen will - das Ding hat intern wohl irgend nen µC und kann damit komplexe Timerprogramme fahren auch ohne an den PC angeschlossen zu sein - dann muss allerdings das Netzteil die Stromversorgung übernehmen. Ist der PC angeschlossen, braucht man kein Netzteil. Dient vermutlich zur sauberen Entkopplung vom Leistungsteil. Mechanisch gesehen macht das Ding einen sehr soliden Eindruck, ist sogar mit einer ganzen Menge ordentlicher Schrauben verschraubt statt verschweisst oder verklebt :)
Nachtrag: Kann ich anhand der Registry schauen, ob das Ding ein HID ist? Wie gesagt befindet es sich momentan weit weg aber ich hab Fernzugriff auf den Rechner :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:34 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-2025 by Thomas Breitkreuz