Senden und Empfangen von Binärdaten über serielle Kommunikation mit Python3 (auf Mac)

Dinge die zu tun sind

Die serielle (UART) Kommunikation zwischen Mac und Python3 wird unter Verwendung eines seriellen USB-Treibers oder dergleichen durchgeführt.

Wie macht man

Sie können dies tun, indem Sie pyserial mit pip installieren und serial importieren. Ich habe in der Suche viele Artikel gefunden, die ich mit Python3 nicht machen konnte, aber ab dem 29. Februar 2020 konnte ich es mit Python3 machen.

Umgebung

Verfahren

Installieren Sie pyserial

install.sh


$ pip install pyserial

Erhalten

Der Code lautet wie folgt: Er empfängt 1 Byte seriell, konvertiert es in Dezimalschreibweise und konvertiert es in Standardausgabe.

serial_read.py


import serial
import struct

ser = serial.Serial(
      port = "/dev/cu.usbserial-XXXXXXXX",
      baudrate = 115200,
      #parity = serial.PARITY_NONE,
      #bytesize = serial.EIGHTBITS,
      #stopbits = serial.STOPBITS_ONE,
      #timeout = None,
      #xonxoff = 0,
      #rtscts = 0,
      )

while True:
      if ser.in_waiting > 0:
            recv_data = ser.read(1)
            print(type(recv_data))
            a = struct.unpack_from("B",recv_data ,0)
            print( a )

Die Portzeichenfolge sollte "ls / dev / cu. *" Sein und das entsprechende Gerät aus den Geräten auswählen, die als "usbserial -..." angezeigt werden. Der auskommentierte Teil behält die Standardeinstellungen bei. Kommentieren Sie diese aus und stellen Sie gegebenenfalls die entsprechenden Parameter ein.

Sie können überprüfen, ob im seriellen Puffer Daten empfangen wurden (die Anzahl der im Puffer enthaltenen Bytes), indem Sie auf "ser.in_waiting" verweisen.

Die empfangenen Daten werden als Zeichenfolge behandelt, auch wenn es sich um Binärdaten handelt. Wenn die empfangenen Daten binär sind, müssen Sie sie mit struct_unpack_from () wie im obigen Code in eine Zahl konvertieren. Für utf8-Zeichenfolgen müssen Sie dekodieren. Wenn es sich um eine sogenannte 7-Bit-Zeichenfolge handelt, kann sie unverändert behandelt werden, ohne sie zu dekodieren oder zu entpacken.

Senden

Senden Sie eine beliebige Byte-Zeichenfolge (buf).

serial_write.py


import serial
import struct

def send( buf ):
      while True:
            if ser.out_waiting == 0:
                  break
      for b in buf:
            a = struct.pack( "B", b )
            ser.write(a)
      ser.flush()

ser = serial.Serial(
      port = "/dev/cu.usbserial-XXXXXXXX",
      baudrate = 115200,
      #parity = serial.PARITY_NONE,
      #bytesize = serial.EIGHTBITS,
      #stopbits = serial.STOPBITS_ONE,
      #timeout = None,
      #xonxoff = 0,
      #rtscts = 0,
      )

x = [ 0x01, 0xFF, 0x02, 0xFE, 0x03]
send( x )

Wenn Sie nicht selbst spülen, wird es anscheinend erst gesendet, wenn einige Übertragungsdaten gepuffert sind. Wenn Sie "ser.out_waiting" nicht aktivieren, scheint es, dass es manchmal nicht normal gesendet werden kann.

Wenn Sie eine (alphabetische) Zeichenfolge anstelle einer Binärzeichenfolge senden möchten, können Sie dies unten tun.

serial_str_write.py


x = b'abcdef'
ser.write( x )

Wenn Sie eine utf8-Zeichenfolge senden möchten, müssen Sie sie codieren.

Zusammenfassung

Ich dachte, es wäre einfacher als in C-Sprache oder schnell zu schreiben, aber ich hatte eine Menge Dinge außerhalb des Kommunikationsteils zu tun, so dass ich Schwierigkeiten hatte, etwas über das Auspacken und Codieren herauszufinden.

Recommended Posts

Senden und Empfangen von Binärdaten über serielle Kommunikation mit Python3 (auf Mac)
Senden und Empfangen von Daten mit MQTT über die Watson IoT Platform
Serielle Kommunikation mit Python
Versuchen Sie, MLB-Daten auf Mac und Python zu importieren
Starten Sie die Kommunikation mit UDP und senden und empfangen Sie mit TCP
Installieren Sie Selenium auf Ihrem Mac und probieren Sie es mit Python aus
Senden Sie Daten von Python über die Socket-Kommunikation an Processing
Senden und empfangen Sie Google Mail über die Google Mail-API mit Python
Die I2C-Kommunikation erfolgt durch Steuerung der seriellen Kommunikation mit Python (über ein USBGPIO8-Gerät).
Serielle Kommunikationssteuerung mit Python- und SPI-Kommunikation (mit USBGPIO8-Gerät)
Senden Sie E-Mails über Google Mail mit Python 3.4.3.
Erstellen Sie mit Anaconda und PyCharm eine Python-Umgebung auf Ihrem Mac
Fehler und Lösung bei der Installation von Python3 mit Homebrew auf einem Mac (Catalina 10.15)
Holen Sie sich Daten von VPS MySQL mit Python 3 und SQL Alchemy
Installieren Sie lp_solve unter Mac OSX und rufen Sie es mit Python auf.
Datenpipeline-Aufbau mit Python und Luigi
Empfangen Sie Textdaten von MySQL mit Python
Versuchen Sie, mit Binärdaten in Python zu arbeiten
Überprüfen und empfangen Sie die serielle Schnittstelle in Python (Portprüfung)
POST verschieden mit Python und empfange mit Flask
Ein Memo mit Python2.7 und Python3 in CentOS
Verfolgen Sie aktive Anwendungen auf einem Mac mit Python
Hinweise zum Erstellen von Python und Pyenv auf dem Mac
Erstellen Sie eine Python-Umgebung mit Anaconda auf einem Mac
Senden Sie eine E-Mail mit SES in Python und eine Kurznachricht mit SMS auf SNS
Setzen Sie die MeCab-Bindung für Python unter Windows, Mac und Linux mit pip ein
Erstellen Sie eine Python3-Umgebung mit pyenv auf einem Mac und zeigen Sie NetworkX-Diagramme an
Empfangen und Anzeigen von HTML-Formulardaten in Python
Eine Geschichte über den Umgang mit Binärdaten in Python
Python auf Mac
Versuchen Sie, mit Mongo in Python auf dem Mac zu arbeiten
Fügen Sie Python 2.7.x in pyenv unter Mac OSX 10.15.5 ein
Installieren Sie MongoDB unter Ubuntu 16.04 und arbeiten Sie über Python
Installieren Sie Python3 auf einem Mac und erstellen Sie eine Umgebung [Definitive Edition]
Hinweise zur HDR- und RAW-Bildverarbeitung mit Python
Automatisches Folgen auf Twitter mit Python und Selen! (RPA)
Installieren von Python 3 auf einem Mac und Überprüfen der Grundfunktionen Teil 1
Ubuntu 20.04 auf Himbeer-Pi 4 mit OpenCV und mit Python verwenden
E-Mail Hipchat mit Postfix, Fluentd und Python auf Azure
Untersuchen Sie den Java- und Python-Datenaustausch mit Apache Arrow
Automatisieren Sie Chrome mit Python und Selen auf Ihrem Chromebook
Abrufen von Daten aus der Datenbank über ODBC mit Python (Access)
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
Installieren Sie Python auf dem Mac
Installieren von Python 3 in einer Mac-Umgebung
Dichotomie mit Python
Dichotomie mit Python 3
HTTP-Kommunikation mit Python
Mail per Python senden
Installieren Sie Python 3.4 auf einem Mac
Datenanalyse mit Python
Word Count mit Apache Spark und Python (Mac OS X)
Hinweise zum Importieren von Daten aus MySQL oder CSV mit Python
Erstellen einer Python-Umgebung auf einem Mac bis zur Verwendung von Jupyter Lab
Hinweise zum Umgang mit großen Datenmengen mit Python + Pandas
IP-Spoof mit tor unter macOS und mit Python prüfen
Testen Sie Python mit Miniconda unter OS X und Linux mit travis-ci
TWE-Lite App für die serielle Kommunikation Byte-Modus-Einstellung (in Python senden)
Befreien Sie sich mit Python und regulären Ausdrücken von schmutzigen Daten
Löse das Spiralbuch (Algorithmus und Datenstruktur) mit Python!