SimpleHIDWrite alternative für Mac

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • SimpleHIDWrite alternative für Mac

    Hallo alle miteinander,

    ich probier mich gerade ein bisschen mit den Sony Buzz Kontrollern rum.
    Am PC kann ich mit dem SimpleHIDWrite die Werte die das Dongle sendet auslesen.
    Leider gibt es das Programm nicht für den Mac.

    Könnt ihr mir da eine Alternative nennen, oder eine Anleitung geben, wie ich Hex Werte an USB Geräte senden bzw. empfangen kann?


    Danke schon im vorraus für eure Antworten.
    Grüße Mario
  • Hab jetzt mal den Vortrag angeschaut, sehr gelungen nebenbei bemerkt, jedoch kann ich den Receiver nicht mit den Beispielprogrammen "aufspüren". Habs mit noch anderen Geräten versucht, teilweise werden die angezeigt, teilweise auch nicht.
    Muss ich hier jetzt tiefer in USB selber eindringen? Letztendlich müsst ich eig nur HEX Werte vom Receiver auslesen bzw. am Anfgang "00 00 00 00 00 00 00" senden.
  • Danke! Hast du Probleme, das Gerät überhaupt zu finden oder dann mit dem Gerät zu kommunizieren? Wenn du es gar nicht erst findest, liegt das wahrscheinlich an dem matching dictionary, das du IOHIDManagerSetDeviceMatching() gibst. Das muss auf dein Zielgerät passen, sonst erscheint es nicht. Da kannst du nach allem Möglichen filtern (Hersteller- oder Produkt-ID, irgendwelche implementierten Standardinterfaces oder sonstwas). Einige Hersteller halten sich nicht an die Standardprotokolle, das kann man sich gut mit dem USB Prober ansehen. Von USB musst du eigentlich nur vendorID und productID kennen, so tief muss man da nicht eindringen (obwohl es natürlich total hilfreich und interessant ist...)

    Wenn du erst eine Verbindung zum Gerät hast, kannst du auf zwei Arten mit ihm kommunizieren: Einmal über values (die Einzeldaten von und zum Gerät, schon aufgedröselt) oder reports (die rohen Datenpakete von und zum Gerät). Beide haben Funktionen zum lesen und schreiben. Wenn es geht, ist der erste Weg der empfohlene. Dummerweise halten sich einige Geräte nicht an die Spezifikationen, da muss man dann über die rohen Reports gehen. Dazu war im Vortrag keine Zeit mehr - ist aber im HID5-Beispiel.
    Multigrad - 360°-Produktfotografie für den Mac
  • SimpleHIDWrite alternative für Mac

    Wie im Vortrag beschrieben hab ich das matching Dictionary leer erzeugt. Dann sollt es doch alle HID Geräte anzeigen. Trotzdem kann ich se nicht finden.
    Neuer Mac. Neues Glück. Am MacBook wurde der Receiver einfach so erkannt!

    Der USB Prober ist leider für Yosemite noch nicht draussen hab mir gestern schon mit der alten Version schon die IOUSBFamily.kext zerschossen. Gibt es da noch alternativen?
    Mit einem anderen Programm hab ich die Controller gefunden, also vendorID und productID. Jedoch arbeitet das Program über IOServiceMatching oder sowas ähnliches. Ich kann den Link dazu nachert mal noch posten.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Marioheld ()

  • Oh ja, der scheint tatsächlich verschwunden zu sein - hoffentlich kommt der irgendwann wieder, war sehr praktisch. Um nur die Gerätedaten wie Vendor- und ProductID angeschlossener Geräte zu sehen reicht auch der IORegistryExplorer, der ist noch in den Hardware IO Tools enthalten. Darin auf IOUSB-Layer stellen.
    Multigrad - 360°-Produktfotografie für den Mac
  • Mittlerweile kann ich die Inputs auslesen. Jezt fehlt nur noch die LED auslesen zu können.

    Ich nimm alle Elemente uns filtere die raus die den Type 129 (Output) haben.
    Dann nehm ich:

    Quellcode

    1. IOHIDDeviceSetValue(ref, element, IOHIDValueCreateWithIntegerValue(CFAllocatorGetDefault(), element, 0, (CFIndex)255));

    Jedoch ändern sich die LEDs nicht. Was mach ich falsch?
  • Zum einen ist es etwas optimistisch, einfach Einsen an die Outputs zu schreiben. Zum anderen sind Geräte von Sony dafür bekannt, dass sie sich nicht immer so genau an die Specs halten. Wie der Zufall es will habe ich hier auch ein paar Buzz-Controller herumliegen, ich hab' eben mal etwas damit gespielt. Die LEDs werden tatsächlich über die Outputs angesteuert, allerdings nur Outputs 2-5 (von 1-7). Zudem scheinen die Report Descriptors nicht ganz in Ordnung zu sein, sodass man den Report direkt hinschicken sollte. Folgender Code funktioniert bei mir:

    Quellcode

    1. - (void) writeLed1:(BOOL)led1 led2:(BOOL)led2 led3:(BOOL)led3 led4:(BOOL)led4 {
    2. uint8_t report[7] = { 0, led1?0xff:0, led2?0xff:0, led3?0xff:0, led4?0xff:0, 0, 0 };
    3. IOHIDDeviceSetReport(self.deviceRef, kIOHIDReportTypeOutput, 0, report, 7);
    4. }
    Multigrad - 360°-Produktfotografie für den Mac