Wie stelle ich eine serielle Verbindung USB-A zu USB-B her?

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    ich habe ein Gerät mit USB-B Buchse, das ich beim PC Windows7 an die USB-A Buchse anstecke und es dann mittels Putty seriell steuern kann. Parameter 38400 8N1.
    Ich möchte statt des PC einen Raspi zum Steuern verwenden, weiß aber nicht, wie ich das anstellen muß. Es genügt mir, in minicom Befehle tippen zu können.

    sudo minicom -o -D 38400 /dev/ttyUSB0 startet zwar minicom, aber der Status wird als offline gezeigt. Ich würde erwarten, daß ich einen Befehl tippe und das Gerät reagiert.

    Mit ls /dev/tty* sehe ich, daß es sich um ttyUSB0 handelt, wenn ich das Kabel an- und abstecke.

    Worin besteht mein Fehler? :helpnew:

  • Wie stelle ich eine serielle Verbindung USB-A zu USB-B her?? Schau mal ob du hier fündig wirst!

  • Servus,
    das wird so nicht funktionieren ...
    Der Raspi ist kein Slave am USB ( -> hatten wir übrigens schon mal <- ).

    Du könntest z.B. ein PL2303-Kabel an den UART I/Os Rx und Tx des Raspi anschliessen und dann per serieller Konsole (soweit diese aktiviert ist) auf den Raspi zugreifen. Das klappt prima ...

    Aber Achtung! Nur GND, Rx und Tx des Kabels mit dem Raspi verbinden (überkreuzen, also Rx Raspi auf Tx des PC und vice versa). Die (meist) rote Vcc-Leitung hat 5V!

    cu,
    -ds-

  • Wenn ich das richtig verstanden habe, will Gummischnitzel nicht seinen Pi an seinen PC, sondern ein USB-Gerät an seinen Pi anschließen. Was das mit Deinem link zu tun hat, erschließt sich mir nicht.

    Warum das im Eingangspost beschriebene Vorgehen nicht funktioniert, allerdings auch nicht. Um was für ein Gerät handelt es sich denn?


  • ich habe ein Gerät mit USB-B Buchse, das ich beim PC Windows7 an die USB-A Buchse anstecke und es dann mittels Putty seriell steuern kann. Parameter 38400 8N1.

    Dann arbeitet DIESES Gerät und nur DIESES Gerät als virtuelle Com Schnittstelle über USB, das geht auch am PI, aber nur für dieses Gerät.

    Andere Geräte wie Tastaturen, Festplatten, TV Karten uvam. müssen nicht als virtuelle Com Geräte an USB laufen!


    Ich möchte statt des PC einen Raspi zum Steuern verwenden, weiß aber nicht, wie ich das anstellen muß. Es genügt mir, in minicom Befehle tippen zu können.
    Worin besteht mein Fehler? :helpnew:

    zu denken das alle Geräte virtuelle Com sind?!?

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Einmal editiert, zuletzt von jar (8. Oktober 2016 um 14:12)

  • Hi Manul,


    ... nicht seinen Pi an seinen PC ...

    autsch ... da hast Du vollkommen recht. Thema verfehlt ... Asche auf mein Haupt :blush: ... "I werd' oid =( ..."
    Stimmt ... stellt sich in der Tat die Frage, welches Gerät und ob es vielleicht sogar eine Beschreibung des Protokolls gibt.

    Vielleicht muss der Hardware-Handshake aktiviert werden?
    Vielleicht erwartet das Gerät eine bestimmte Zeichenfolge (z.B. mehrmals ENTER wegen Baudraten-Anpassung)?

    Ich hatte mal ein Problem mit einem USB-Kabel mit micro-USB Stecker. Das wollte ich zum flashen eines NEXTION-LCDs verwenden. Das hat ums Verrecken nicht funktioniert. Ich hab's dann mal durchgemessen und siehe da: anscheinend war das ein reines Ladekabel, weil die Datenleitungen gar nicht verbunden waren.
    Wär' auch noch eine Option ...

    cu,
    -ds-


  • ich habe ein Gerät mit USB-B Buchse, das ich beim PC Windows7 an die USB-A Buchse anstecke und es dann mittels Putty seriell steuern kann. Parameter 38400 8N1.

    Ich möchte statt des PC einen Raspi zum Steuern verwenden, weiß aber nicht, wie ich das anstellen muß.

    sudo minicom -o -D 38400 /dev/ttyUSB0 startet zwar minicom, aber der Status wird als offline gezeigt.

    Blöde Frage aber wie hast du PuTTY denn eingestellt um auf das Gerät zuzugreifen? :huh: 38400 8N1 ist nur die Einstellung der Seriellen Schnittstelle nicht PuTTY

    "sudo minicom" brauchst du btw nicht, minicom kann man auch als normaler Benutzer ausführen.

    Ich würde erwarten, daß ich einen Befehl tippe und das Gerät reagiert.

    Kannst du auch, du siehst in minicom nur nicht was du eingibst :fies: Eingaben sind für dich unsichtbar, Ausgaben siehst du.

    Muss es denn unbedingt minicom sein?
    Ich würds nämlich sonst einfach mal mit Python probieren, das "pyserial" Module ermöglicht nämlich eine umfangreiche/einfachere Konfiguration der Seriellen Schnittstelle.

    Beispiel:

    [code=php]
    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    import serial
    import time
    import sys
    #-------------------------------------------------------------------
    ser = serial.Serial()

    ser.port = "/dev/ttyUSB0"
    ser.baudrate = 38400
    ser.bytesize = serial.EIGHTBITS #number of bits per bytes
    ser.parity = serial.PARITY_NONE #set parity check: no parity
    ser.stopbits = serial.STOPBITS_ONE #number of stop bits
    #ser.timeout = None #block read
    ser.timeout = 1 #non-block read
    #ser.timeout = 2 #timeout block read
    ser.xonxoff = False #disable software flow control
    ser.rtscts = False #disable hardware (RTS/CTS) flow control
    ser.dsrdtr = False #disable hardware (DSR/DTR) flow control
    ser.writeTimeout = 2 #timeout for write
    #-------------------------------------------------------------------

    try:
    ser.open()
    except Exception as e:
    print("Error open serial port: " + str(e))
    sys.exit()
    if ser.isOpen():
    try:
    while True:
    Eingabe = raw_input("Was soll gesendet werden? > ")
    if not Eingabe:
    print("Bitte irgend etwas eingeben!")
    continue
    response = None
    print("Sende: %s" % input)
    ser.write(Eingabe + "\n")
    while response is None:
    time.sleep(0.01)
    response = ser.readline().strip()
    print("Antwort: %s" % response)
    except Exception as e:
    print("Error...: " + str(e))
    except (KeyboardInterrupt, SystemExit):
    print("\nSchliesse Programm..\n")
    if ser: ser.close()
    [/php]

  • Oha, peinlich. Ich habe es natürlich mit minicom -o -b 38400 -D /dev/ttyUSB0 versucht, hier hatte ich es falsch geschrieben.
    Das Gerät ist eine Einzelanfertigung und zeigt Zahlen auf 7-Segment-Anzeigen an. Man kann einen Zählvorgang starten und stoppen, sowie eine Zahl für den Start vorgeben. Außerdem ist es möglich, die Versionsnummer der Software abzufragen. All das funktioniert auch am PC mit Putty im seriellen Betrieb.

    Ich muß nicht zwingend mit minicom arbeiten; in erster Linie will ich überhaupt erstmal die Verbindung zustande bekommen und z.B. den Buchstaben "S" senden, der den Start auslöst.
    Das lokale Echo habe ich bei minicom eingeschaltet; ich sehen was ich tippe, aber es passiert nichts. Was mir logisch erscheint, weil "offline" in der Statusleiste zu lesen ist.
    Ich probier mal das oben erwähnte Python Skript.


  • Mal abgesehen davon dass auch mit minicom gehen sollte, Putty gibt es ja auch für Linux.

    ...Aber, wer nutzt scho ne GUI :auslachen: ... püh!

  • Jener, welcher eine pragmatische Lösung sucht. Ich gebe zu, daß meine Kenntnisse um Linux und Derivate nicht extrem hoch sind.

    Ja, der Lernfaktor hält sich hierbei in Grenzen, wenn ich nicht der Ursache bis ins letzte Detail auf den Grund gehe. Grundsätzlich interessieren mich nahezu alle Themen rund um EDV sehr stark, aber irgendwo muß ich, wie wohl jeder andere auch, mich auf bestimmte Gebiete konzentrieren, die ich besser beherrschen kann. Ich habe zwar ein breites, aber nicht sehr stark in die Tiefe gehendes Wissen. Wie man mit Konsolen umgeht, weiß ich durchaus. Dummerweise muß ich oft nachschlagen, weil mir längst nicht alles im Gedächtnis bleibt, das ich Monate oder Jahre zuvor schon mal durchexerziert habe. Eine GUI hilft mir sehr viel besser, mich an Abläufe zu erinnern.

  • Naja ... nachdem es mit putty auf Anhieb funktioniert hat tippe ich mal darauf, dass es an einer/den Einstellung(en) lag. Wie gesagt - die Handshakes oder so.
    Das würde ich zumindest noch mal nachverfolgen ... dass putty verfügbar ist und auch gleich funktionierte war imho erst mal Zufall. Beim nächsten mal läuft's evtl. anders ... und dann kennst Du wenigstens den Grund. Wie gesagt - das wär' jetzt meine Denke.

    Aber prima wenn es klappt,
    -ds-

  • Das Skript funktioniert nicht richtig. Es wird zwar eine Verbindung zu dem Gerät aufgebaut, aber offenbar nicht die richtigen Befehle gesendet. Die verfügbaren Befehle wurden der Reihe nach abgearbeitet, unabhängig davon, welchen Buchstaben ich getippt habe. Kurioserweise ist es jetzt egal was ich tippe, es passiert nichts und es kommt auch keine Fehlermeldung zurück. Das Skript arbeitet einfach weiter.

    Das Gerät habe ich schon aus- und angeschaltet, USB-Kabel ab/angesteckt, Raspi neu gestartet. Da ändert sich nix. Mit Putty am Raspi und am PC kann ich aber normal da Gerät steuern. Die Möglichkeit zur Steuerung mittels Skript ist allerdings notwendig, da beim Auslösen eines bestimmten Befehls alle 30 Sekunden noch ein anderer Befehl automatisch gestartet werden muß.

    Wo kann ich da suchen?

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!