Programmgesteuertes Sprechen mit einem seriellen Port unter OS X oder Linux

  • Ich habe ein Prolite-LED-Zeichen, das ich so einrichten möchte, dass Bildsuchabfragen aus Apache-Protokollen und anderen Spaßstatistiken angezeigt werden. Das Problem ist, mein G5 hat keine serielle Schnittstelle, daher muss ich einen USB-Dongle verwenden. Es wird als /dev/cu.usbserial und /dev/tty.usbserial angezeigt.

    Wenn ich dies tue, scheint alles ziemlich viel zu sein:

     stty -f /dev/cu.usbserial
    speed 9600 baud;
    lflags: -icanon -isig -iexten -echo
    iflags: -icrnl -ixon -ixany -imaxbel -brkint
    oflags: -opost -onlcr -oxtabs
    cflags: cs8 -parenb
     

    Alles funktioniert auch, wenn ich das Tool für den seriellen Anschluss verwende, um mit zu sprechen it.

    Wenn ich diesen Code während des oben genannten Tools für den seriellen Anschluss ausführte, funktioniert auch everthing. Sobald ich das Werkzeug trenne, geht die Verbindung jedoch verloren.

     #!/usr/bin/python
    
    import serial
    
    ser = serial.Serial('/dev/cu.usbserial', 9600, timeout=10) 
    ser.write("<ID01><PA> \r\n") 
    read_chars = ser.read(20)
    print read_chars
    
    ser.close()
     

    Die Frage ist also, welche Zauberköpfe ich ausführen muss, um mit dem seriellen Port ohne die Verbindung zu beginnen serielles Port-Tool? Ist das ein Berechtigungsproblem? Was ist der Unterschied zwischen /dev/cu.usbserial und /dev/tty.usbserial?


    Nein, keine Seriennummern. Die Sache ist, das Problem bleibt auch beim Sudo-Laufen des Python-Skripts bestehen, und das einzige, was dazu führt, dass es durchgeht, wenn ich die Verbindung in dem GUI-Tool öffne, das ich erwähnt habe.

    21 August 2012
    casperOnezina
2 answers
  • /dev/cu.xxxxx ist das "Callout" -Gerät. Es ist das, was Sie verwenden, wenn Sie eine Verbindung zum seriellen Gerät herstellen und mit ihm sprechen. /dev/tty.xxxxx ist das Einwahlgerät, das zur Überwachung eines Ports auf eingehende Anrufe für z. ein Fax-Listener.

    07 August 2008
    Kevin Ballard
  • Haben Sie versucht, den Datenverkehr zwischen der grafischen Benutzeroberfläche und der seriellen Schnittstelle zu überwachen, um zu sehen, ob ein spezieller Befehl gesendet wird? Auch nur neugierig, Python sendet ASCII und nicht UTF-8 oder etwas anderes richtig? Der Grund, warum ich frage, ist, dass ich bemerkt habe, dass Ihr Zitat für die Zeichenfolgen geändert wurde. In einigen Sprachen ist dies tatsächlich der Unterschied zwischen ASCII und UTF-8

    15 November 2015
    Tom Zychm3rg