USB-Port ansteuern



  • Hi @ all
    Ich würde auch gern den USB-Port via C oder auch C++ ansprechen. ich möchte, wie man es bei der parallelen Schnittstelle machen kann, ein Byte senden. Da ich mir ein Notebook zugelegt habe und das über keinen Printer-Port mehr verfügt, sondern nur über USB-Ports, wüsste ich gerne, wie man das macht....
    Um die parallele Schnittstelle anzusprechen hab ich das immer mit folgender Funktion gemacht:

    outportb(int portid, unsigned char value);
    

    geht das auch mit dem USB-Port so, wenn man die entsprechende PortId angibt?
    Hab nich wirklich eine Idee...hoffe ihr könnt mir helfen 🙂



  • Hallo,
    Standard-C++ kennt keine Ports. Welches BS verwendest du?



  • Windows XP



  • es gibt nen treiber der den usb-port in einen virtuellen rs232 verwandelt. kannst es dann über windows com schnittstelle ansprechen. Find leider den namen nicht, aber der google hilft bestimmt



  • Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Was willst Du den genau machen?
    Normalweise liefert jedes USB Gerät den passenden Treiber mit. Und wenn es sich dabei um ein serielles Gerät handelt, dann wird auch ein serieller Treiber installiert, welcher dann ganz normal mit "COMx" angesprochen werden kann...
    USB kann man prinzipiell nicht direkt ansprechen, da musst Du dann schon einen Treiber schreiben / verwenden.



  • Moin. Vielleicht hilft dir ja ein Hinweis auf www.codemercs.com - und insbesondere auf den IOWarrior - weiter.

    Wenn du allerdings schon ein fertiges Gerät hast, wirst du wohl einen Treiber schreiben müssen.





  • Ein nennenswerter Treiber für Schnittstellenansteuerung ist inpout32.dll. Gibt es als Freeware.



  • Jochen Kalmbach schrieb:

    Was willst Du den genau machen?

    Also ich hab mir n PLatinchen mit nem Open-Collector-Treiber-IC und 4 Relais gebastelt. Bis jetzt hab ich die immer über meine parallele Schnittstelle angesprochen mit der Funktion outportb(),um dann jeweils die Relais zu schalten. Nun möchte ich das Ganze auf USB umrüsten, also ein Byte über USB an den Treiber schicken. Mir ist auch klar, dass das nicht ohne Aufrüsten meiner Platine geht, da über die USB-Schnittstelle ja nur immer ein Bit nach dem anderen gesendet werden kann, deshalb werde ich die Platine noch zusätzlich mit einem Mikrocontroller ausrüsten, der die einzelnen Bits wieder zusammensetzt. Mein Problem ist jetzt wie gesagt nur, den USB-Port anzusteuern...
    Soviel zu meinem Nutzen 😉



  • Dann solltest Du einen Device-Treiber schreiben, der speziell für Deinen Fall ein spezielles Protokoll implementiert.
    Oder Du kaufst Dir ein USB<=>Seriell Baustein, der sich als Serielle-Schnittstelle ausgibt und dann geht schon alles...



  • Okay, vielen Dank...ich werd mich hinsichtlich des Device-Treibers mal schlau machen...hasst du zufällig einen schlauen Link parat? Sonst begebe ich mich mal auf die Suche in den Weiten des WWW's. 🙂



  • KMDF (enthält das DDK):
    http://www.microsoft.com/whdc/driver/wdf/KMDF.mspx

    Aber ich persönlich Rate Dir davon ab. Kauf Dir lieber einen Chip, der USB kann und eine serielle Schnittstelle emuliert. Das wird es sicherlich geben..
    Z.B.
    http://www.ftdichip.com/

    Da gibt es den Chip, welcher USB kann und gleich den passenden (zertifizierten) Treiber für Windows dazu.

    Siehe auch das Datenblatt:
    http://www.ftdichip.com/Documents/DataSheets/DS_FT232R_v104.pdf



  • Jochen Kalmbach schrieb:

    http://www.ftdichip.com/

    Da gibt es den Chip, welcher USB kann und gleich den passenden (zertifizierten) Treiber für Windows dazu.

    Da hast Du gleich den Schlechtesten empfohlen, die FTDIs sollte man allenfalls mit der Kneifzange anfassen!

    Die AMs waren teuer, brauchten extrem viel externe Beschaltung und funktionierten, entgegen des Datasheets, ohne EEPROM gar nicht. Die BMs funktionierten dann zwar ohne EEPROM, benötigten trotzdem extrem viel externe Beschaltung und waren ebenfalls vergleichsweise teuer. Aktuell sind die RLs, die traditionsgemäß teuer sind und während der Enumeration die Leitung /PWEN toggeln. Letzteres macht die Bausteine praktisch unbrauchbar.

    Die Produkte des Wettbewerbs (SiLabs, TI, Prolific, ...) sind billiger und funktionieren besser (ja, auch Prolific)!!!



  • Ich hab mit diesen Dinger noch nie was gemacht, deswegen habe ich nur einfach einen Beispielhaft rausgepickt...
    Aber danke für die Hinweise!!!



  • Moin

    ich empfehl dir auch entwerder nen passendes Schnitstellen adapter usb-rs232 zu besorgen. oder doch mal die docu vom IO-Warior zu lesen. Da ist sogar beschrieben wie man Relaise an den ic anzuschliesen hat.

    Gruss

    ps. Wieso die leute immer glauben moderne Technik sei so einfach. Einfach irgend was basteln, drannklemmen und tut ist leider nicht mehr. Die guten alten zeiten mit ISA Karten, LPT und COM gehen leider dem ende zu.


Anmelden zum Antworten