USB-Port ansprechen



  • Hallo!

    Möchte mit einem kleinen Programm am USB-Port mithören und die Bits und Bytes in einem Fenster anzeigen lassen (Informationsaustausch zwischen PC und irgendeinem Gerät ). Dazu kann ich doch den USB-Treiber verwenden um auf den Port zugreifen zu können, oder?
    Wie muss ich vorgehen? Kann mir jemand weiterhelfen?



  • Verwendest du irgendeine spezielle Bibliothek? In reinem Standard C++ geht das nämlich nicht. Dein Problem hört sich nach WinAPI an. Oder Linux?
    Welches Betriebssystem verwendest du?



  • Also doch, ich hab's irgendwann mal mitbekommen das dies nur über WinAPI funktioniert. Ich verwende XP als Betriebssystem, habe leider aber in der hardwarenahen Programmierung noch nicht so die Erfahrung. Kannst Du mir helfen? Auf was muss ich achten?



  • Mit WinAPI kann ich dir leider nicht dienen,
    aber ich kann dich dorthin verschieben 😉



  • Danke 🙂



  • Geht es dir darum, sowas selber zu schreiben, oder würdest du dich auch mit nem fertigen Programm zufrieden geben 🤡



  • Hallo!

    Konnte gestern leider nicht mehr antworten. Ich wollte es eigentlich selber schreiben (habe ich auch zum Teil schon), aber wenn Du ein Programm bereits hast, würde ich mich freuen 🙂 . Könnte daraus 'ne Menge lernen, vor allem was ich bisher falsch gemacht habe.



  • Hallo !
    Ich würde gerne auch so etwas machen. Ich gehe über eine TK-Anlage, die an den USB-Port angeschlossen wird, ins Internet. Und ich würde gerne einen PacketSniffer schreiben, für den USB-Port, so wie es schon Ethereal und andere für RJ45 gibt. Weis einer wie so etwas zu machen ist? Was benutze ich und wo finde ich Infos ?



  • Ist leider afaik kein Source-Code mit dabei: http://www.sysinternals.com/ntw2k/freeware/portmon.shtml



  • flenders schrieb:

    Ist leider afaik kein Source-Code mit dabei:

    Genau, der ist ohne Quellen. Und eignet sich auch nicht für USB, sondern nur für LPT und COM.

    proga schrieb:

    Was benutze ich und wo finde ich Infos?

    Im User-Mode ist da schon mal gar nichts zu machen, deswegen solltest Du Dich zunächst mit dem DDK und dessen Dokumentation auseinandersetzen.

    Wenn es aber dann doch etwas fertiges sein darf: http://www.hhdsoftware.com/ (Habe ich aber selber auch noch nicht benutzt, ich bin glücklich mit meinem in Hardware gegossenen Analyzer).



  • -King- schrieb:

    Und eignet sich auch nicht für USB, sondern nur für LPT und COM.

    Sorry, hatte mir das Programm nicht so genau angeschaut (nur mit dem COM-Port hatte ich es mal getestet) 🙄



  • Hallo Leute!
    Ich habe einfach mal hier weitergeschrieben.
    Mittlerweile bin ich in meinem Praktikum ein ganzes Stück weitergekommen, habe jetzt aber ein neues Problem:
    Letztendlich will ich mit einer SPS (speicherprogrammierbaren Steuerung) arbeiten und sie steuern, da das Programm der Herstellerfirma zu teuer ist.
    Zur Kommunikation mit dem PC dient ein USB/PPI-Adapterkabel(USB ähnliches Protokoll), was sich unter

    Eingabegeräte(HID)-->USB-HID(HID) im Gerätemanager anmeldet.
    So spreche ich es an:

    HANDLE hTreiber = INVALID_HANDLE VALUE;
    int main()
    {
        hTreiber = CreateFile("\\\\.\\USB#Vid_0909_&Pid_0200#5&dfa6a2&0&!#{a5dcbf10-6530--11d2-901f-00c04fb951ed}",
        GENERIC_READ | GENERIC_WRITE,
        0,
        NULL,
        OPEN_EXISTING,
        0,
        NULL)
    
        if (hTreiber == INVALID_HANDLE_VALUE)
        {
             printf("Verbindung zum USB-Port konnte nicht hergestellt werden!\nError:\n", GetLastError());
             CloseHandle(hTreiber);
             return 0;
        }
        else
        {
         .
         .
         .
        }
    }
    

    Mit dem Prog WinObj, hier aus dem Forum, habe ich den SymbolicLink herausbekommen, nicht wundern, ist das gleiche wie "\\\.\\LPT1" zum Beispiel.

    Mein Problem ist, ich kann so auf jedes andere Gerät draufzugreifen(z.B. mit meinem USB-Stick funkionierts).
    Bei GetLastError() bringt er mir: Error: 6.
    Meine Vermutung, es könnte vielleicht an der Baudrate
    (PPI 9,6;19,2;187,5 kBitps) liegen, oder dass sich der Adapter als HID anmeldet.
    Hat jemand 'ne Ahnung?



  • baschti schrieb:

    Meine Vermutung, es könnte vielleicht an der Baudrate
    (PPI 9,6;19,2;187,5 kBitps) liegen, oder dass sich der Adapter als HID anmeldet.

    Eher letzteres. Das ist doch aber überaus erfreulich. Was besseres als ein HID kann Dir doch gar nicht passieren. Du kannst die Namen einfachst Enumerieren, brauchst den Namen von WinObj nicht fest zu codieren (sicher, man kann auch die Ports selbst enumerieren, nur lange nicht so einfach). Die Daten werden weiterhin per ReadFile/ WriteFile übertagen. Das Format kannst Du durch einfaches Parsen der Reports herausbekommen.



  • Hallo King!
    Danke für Deine Antwort. Hört sich gut an, könntest mir trotzdem bitte 'n bissl Code posten bzw. sagen worauf ich achten muß und wo ich Hilfe finde? Bin noch immer kein Profi in der harwarenahe Programmierung. Bis jetzt habe ich aber ganz gut durchgesehen.
    Thx 🙂



  • Mir ist übrigens gerade aufgefallen, daß der Name nicht stimmen kan:

    6530--11d2
    

    Da ist ein '-' zuviel.

    Und Code? Hier findest Du jedenfalls schonmal was zum Thema Enumerieren:
    http://www.c-plusplus.net/forum/viewtopic.php?t=14977&

    In diesem Beispiel wird das SetupApi verwendet. Du mußt natürlich noch den GUID anpassen. Den HID-GUID bekommst Du von HidD_GetHidGuid.

    Zum Parsen der Report-Descriptoren stehen Dir dann einige andere Funktionen zur Verfügung.



  • Prima, danke. Werde mich gleichmal dahinter klemmen.
    Sorry war'n Schreibfehler von mir.

    6530--11d2
    

    sollte eigentlich

    6530-11d2
    

    heißen.



  • hiii

    wie schauts auf...hattest du schon erfolg das usb port anzusprechen???

    mfg surf.



  • Da geh ich mal von aus, daß er das hinbekommen hat. So schwierig ist es dann nun auch wieder nicht. Sag doch einfach, was Du wissen willst. Dann kan man gezielte Hinweise geben.



  • hi! ich wollte fragen ob du da ein tu über usb und ansteuerung mit winapi hast?
    ich will mich mal da in das thema einlesen.....will so eine camera über usb mit c++ also winapi ansteuern....

    mfg surf.



  • Nein, ich kenne kein tu. Aber was ist denn das für eine Kamera? Was kannst Du denn da alles Steuern? Und warum willst Du mit aller Gewalt direkt mit der Kamera sprechen?


Anmelden zum Antworten