USB-Buffer?

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Mad Andy.

    Hallo,

    ich lese mit meinem Programm Daten vom ComPort (USB). Weiss jemand was da im Hintergrund des Programms genau abläuft? Z.B. wo sich der Datenbuffer der USB-Schnittstelle befindet, wie gross dieser Buffer ist und wie schnell man diesen auslesen kann?

    Danke & schönes Weekend!
    Sandra
    Der ComPort ist aber kein USB? Das sind 2 verschiedene Schnittstellen. ComPort ist Parallel und USB Seriell!
    Oder hast du ein USB -> RS232 Konverter? Dan befindet sich der Datenbuffer sicher in dem Konverter und die Größe müsstest du sicher aus dem Datenblatt dafür finden.

    Da USB eine sehr schnelle Schnitstelle ist, kannst du sicher auch die höchste Baudrate nehmen, die der Konverter kann!
    Ich lese aber mit dem Befehl Daten aus die über den USB-Port geschickt werden..

    VB.NET-Quellcode

    1. buff = ComPort.ReadChar.ToString


    Hab auch gerade gesehen dass man die Grösse des Buffers selbst definieren kann:

    VB.NET-Quellcode

    1. 'ComPort
    2. '
    3. Me.ComPort.BaudRate = 57600
    4. Me.ComPort.ReadBufferSize = 1048576
    5. Me.ComPort.ReadTimeout = 1000


    Ich denke es ist egal ob man mit ComPort.Read Daten einer Parallelen oder Seriellen Schnittstelle ausliest, da ja sowiso alle Daten zuerst im Buffer des Computers zwischengespeichert werden.
    Ich vermute, dass du einen Converter zwischen COM und USB verwendest?!
    In dem Fall entnimmst du die Baudrate dem Datenblatt vom Converter und dem anderen Endgerät. Der Buffer sollte relativ egal sein, kA, ob der Buffer erst voll sein muss, bevor die Daten weitergegeben werden (können) -> ausprobieren.

    Im Normalfall (nicht speziall auf VB oder Windows bezogen), liest man von nem COM Port mit ner Endlosschleife, die nichts anderes macht als Read, Auswerten, Read, Auswerten, ... Wenn der Buffer leer ist, steht das Programm an der Stelle, bis was in den Buffer kommt. Man sollte den COM-Port imho also immer in einem getrennten Thread auslesen, damit das restliche Programm nicht dort stehen bleibt.
    Nicht ganz @ Dodo. Der Comport ist auch seriell. Da sind dann noch ein paar Handshaking Leitungen dran. Parallel ist der Parallelport, wie der Name schon sagt.
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    USB ist aber kein Bus in dem Sinne von I²C, ProfiBus, etc. letztendlich sollte es für den Programmierer immer eine serielle Verbindung (ala COM) zwischen Host und Endpoint sein. Das "Routing" übernimmt dabei der Controller-Treiber und interessiert den Programmierer nur sehr begrenzt. Es steht dabei nicht die Leitung mit Adressangabe zu Verfügung, sondern ein haufen Verbindungen, die durch "anmelden" der Endpoints generiert werden.