Überprüfen und empfangen Sie die serielle Schnittstelle in Python (Portprüfung)

Beim Empfang von Daten von Serial in Python muss SerialPort angegeben werden. Wenn jedoch nur eine Serial vorhanden ist, ist auch die Baudrate bekannt

from serial.tools import list_ports
import serial
ports = list_ports.comports()
ser = serial.Serial(ports[0].device,9600,timeout=0.1)

Sie können den Port wie folgt öffnen.

Wenn dies zu gewalttätig ist, können Sie das Format der fließenden Daten für alle verfügbaren Ports überprüfen und den Port öffnen, wenn Sie die serielle Baudrate und das Format der eingehenden Daten kennen. ..

Zum Beispiel von Arduino, das regelmäßig mit 9600 Bit / s an einen PC angeschlossen ist

test:data=***

Wenn Sie Daten wie erhalten

from datetime import datetime as dt
from serial.tools import list_ports
import serial
import re

#---------------------------
def ReceiveSerial(_ser):
    _dataStr = ""
    if(_ser!=None):
        _data = _ser.readline()
        if(len(_data)>0):
            try:
                tmpDataStr = _data.decode('utf-8') # 'temp,24.5,hum,50.0'
            except:
                pass
            else:
                _dataStr = re.sub(r'\r|\n|','',tmpDataStr)
    return _dataStr
#---------------------------

def ScanUsingSerialPortName(_reg="^", _baudrate = 115200):
    devName = ""
    ckSer = serial.Serial()
    ckSer.baudrate = _baudrate
    ckSer.timeout = 0.1
    ports = list_ports.comports()
    print("find " + str(len(ports))+"ports")
    if len(ports) > 0:
        deviceNames = []
        for info in ports:
            deviceNames.append(info.device)	#Holen Sie sich den Namen des Ports
            isReady = SerialPortCheck(ckSer,info.device,_reg)
            if (isReady):
                devName = info.device
                break;
    return devName

def SerialPortCheck(_serial, _portName, _reg):
    ret = False
    _serial.port = _portName	#Geben Sie den Port an

    try:
        _serial.open()
    except:
        pass
    else:
        print("SerialPortCheck " + _serial.port )
        startDt = dt.now()
        while True:
            #Lesen Sie eine Zeile
            s = ReceiveSerial(_serial)
            if(len(s)>0):
                print(">" + s)
                matchOB = re.match(_reg,s)
                if matchOB:
                    print("match")
                    ret = True
                    break

            tickTime = (dt.now() - startDt).seconds
            if ((_serial.is_open==False) or (tickTime > 3)):
                print("TimeOut" + s)
                break
        _serial.close()
    return ret

#---------------------------

def SetSerial(_serial, _reg="^", _baudrate=115200):
    if((_serial!=None)and(_serial.is_open)):
        _serial.close()
    tmpSer = None
    usingPortName = ScanUsingSerialPortName(_reg,_baudrate)
    if(usingPortName!=""):
        tmpSer = serial.Serial()
        tmpSer.baudrate = _baudrate
        tmpSer.timeout = 0.1
        tmpSer.port = usingPortName	#Geben Sie den Port an

        try:
            tmpSer.open()
        except:
            tmpSer = None
        else:
            print("SetSerialOK")
    return tmpSer
#---------------------------
ser =SetSerial(ser,"^"+"test:data=",9600)

Sie können den Port identifizieren, indem Sie wie folgt vorgehen.

Recommended Posts

Überprüfen und empfangen Sie die serielle Schnittstelle in Python (Portprüfung)
Überprüfen und verschieben Sie das Verzeichnis in Python
Suchen und überprüfen Sie die inverse Matrix in Python
Empfangen und Anzeigen von HTML-Formulardaten in Python
POST JSON mit Python und empfange mit PHP
Erhalten Sie das Formular in Python und führen Sie verschiedene Aktionen aus
Empfangen Sie Laufzeitargumente in Python 2.7
Schreiben Sie Tests in Python, um die Abdeckung zu profilieren und zu überprüfen
Stapel und Warteschlange in Python
Unittest und CI in Python
Versuchen Sie einfach, einen Webhook mit ngrok und Python zu erhalten
Überprüfen Sie Python auf Speicherlecks
Pakete, die MIDI mit Python Midi und Pretty_Midi verarbeiten
Unterschied zwischen list () und [] in Python
Unterschied zwischen == und ist in Python
Zeigen Sie Fotos in Python und HTML an
Sortieralgorithmus und Implementierung in Python
Bearbeiten Sie Dateien und Ordner in Python
Über Python und Cython dtype
Zuweisungen und Änderungen in Python-Objekten
Verschlüsselung mit Python: IND-CCA2 und RSA-OAEP
Hashing von Daten in R und Python
Funktionssynthese und Anwendung in Python
Exportieren und Ausgeben von Dateien in Python
Reverse Flat Pseudonym und Katakana in Python2.7
Lesen und Schreiben von Text in Python
[GUI in Python] PyQt5-Menü und Symbolleiste-
Erstellen und lesen Sie Messagepacks in Python
Überprüfen Sie, ob Sie in Python eine Verbindung zu einem TCP-Port herstellen können
Hinweise zur Verwendung von cChardet und python3-chardet in Python 3.3.1.
Module und Pakete in Python sind "Namespaces"
Vermeiden Sie verschachtelte Schleifen in PHP und Python
Überprüfen Sie das Verhalten des Zerstörers in Python
Unterschiede zwischen Ruby und Python im Umfang
AM-Modulation und Demodulation mit Python Part 2
Unterschied zwischen Anweisungen (Anweisungen) und Ausdrücken (Ausdrücken) in Python
Echte Werte und Eigenvektoren: Lineare Algebra in Python <7>
Warteschlangen- und Python-Implementierungsmodul "deque"
Gefaltetes Liniendiagramm und Skalierungslinie in Python
Implementieren Sie den FIR-Filter in Python und C.
Unterschiede zwischen Python- und Java-Syntax
POST verschieden mit Python und empfange mit Flask
Suchen und spielen Sie YouTube-Videos mit Python
Unterschied zwischen @classmethod und @staticmethod in Python
[Python] [Windows] Serielle Kommunikation in Python über DLL
Überprüfen Sie, ob die URL in Python vorhanden ist
Unterschied zwischen Anhängen und + = in der Python-Liste
Unterschied zwischen nicht lokal und global in Python
Schreiben Sie die O_SYNC-Datei in C und Python
So überprüfen Sie die Version von opencv mit Python
Umgang mit "Jahren und Monaten" in Python
Lesen und schreiben Sie JSON-Dateien mit Python
Zeichnen Sie Daten einfach in Shell und Python
Private Methoden und Felder in Python [Verschlüsselung]
Lineare Unabhängigkeit und Basis: Lineare Algebra in Python <6>
Rufen Sie sudo in Python auf und füllen Sie das Passwort automatisch aus
Setzen Sie Tkinter in Macbook ein und überprüfen Sie den Betrieb
Unterschiede in der Multithread-Verarbeitung zwischen Python und Jython
Modulimport und Ausnahmebehandlung in Python
Verwendung ist und == in Python
SublimeText2 und SublimeLinter - Syntax prüfen auf Python3--