Vérifier et recevoir le port série en Python (vérification du port)

Lors de la réception de données de Serial en Python, il est nécessaire de spécifier SerialPort, mais s'il n'y a qu'un seul Serial et que le débit en bauds est également connu

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

Vous pouvez ouvrir le port comme suit.

Si cela est trop violent, vous pouvez vérifier le format des données en circulation pour tous les ports disponibles et ouvrir le port si vous connaissez le débit en bauds série et le format des données entrantes. ..

Par exemple, depuis Arduino connecté à un PC régulièrement à 9600bps

test:data=***

Si vous recevez des données comme

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)	#Obtenez le nom du port
            isReady = SerialPortCheck(ckSer,info.device,_reg)
            if (isReady):
                devName = info.device
                break;
    return devName

def SerialPortCheck(_serial, _portName, _reg):
    ret = False
    _serial.port = _portName	#Spécifiez le port

    try:
        _serial.open()
    except:
        pass
    else:
        print("SerialPortCheck " + _serial.port )
        startDt = dt.now()
        while True:
            #Lire une ligne
            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	#Spécifiez le port

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

Vous pouvez identifier le port en faisant comme.

Recommended Posts

Vérifier et recevoir le port série en Python (vérification du port)
Vérifiez et déplacez le répertoire en Python
Rechercher et vérifier la matrice inverse en Python
Recevoir et afficher les données de formulaire HTML en Python
POST JSON avec Python et recevez avec PHP
Recevez le formulaire en Python et faites diverses choses
Recevoir des arguments d'exécution dans Python 2.7
Écrire des tests en Python pour profiler et vérifier la couverture
Pile et file d'attente en Python
Unittest et CI en Python
Essayez simplement de recevoir un webhook avec ngrok et Python
Rechercher les fuites de mémoire dans Python
Paquets qui gèrent le MIDI avec Python midi et pretty_midi
Différence entre list () et [] en Python
Différence entre == et est en python
Afficher les photos en Python et html
Algorithme de tri et implémentation en Python
Manipuler des fichiers et des dossiers en Python
À propos de Python et Cython dtype
Affectations et modifications des objets Python
Chiffrement avec Python: IND-CCA2 et RSA-OAEP
Hashing de données en R et Python
Synthèse de fonctions et application en Python
Exporter et exporter des fichiers en Python
Inverser le pseudonyme plat et le katakana en Python2.7
Lire et écrire du texte en Python
[GUI en Python] Menu PyQt5 et barre d'outils-
Créer et lire des paquets de messages en Python
Vérifiez si vous pouvez vous connecter à un port TCP en Python
Notes utilisant cChardet et python3-chardet dans Python 3.3.1.
Les modules et packages en Python sont des "espaces de noms"
Évitez les boucles imbriquées en PHP et Python
Vérifiez le comportement du destroyer en Python
Différences entre Ruby et Python dans la portée
Modulation et démodulation AM avec Python Partie 2
différence entre les instructions (instructions) et les expressions (expressions) en Python
Valeurs authentiques et vecteurs propres: Algèbre linéaire en Python <7>
Module d'implémentation de file d'attente et Python "deque"
Graphique à lignes pliées et ligne d'échelle en python
Implémenter le filtre FIR en langage Python et C
Différences entre la syntaxe Python et Java
POSTER diversement avec Python et recevoir avec Flask
Rechercher et lire des vidéos YouTube avec Python
Différence entre @classmethod et @staticmethod en Python
[Python] [Windows] Communication série en Python à l'aide de DLL
Vérifiez si l'URL existe en Python
Différence entre append et + = dans la liste Python
Différence entre non local et global en Python
Ecrire le fichier O_SYNC en C et Python
Comment vérifier la version d'opencv avec python
Gérer les "années et mois" en Python
Lire et écrire des fichiers JSON avec Python
Représentez facilement des données graphiques dans le shell et Python
Méthodes et champs privés en python [chiffrement]
Indépendance et base linéaires: Algèbre linéaire en Python <6>
Appelez sudo en Python et mot de passe à saisie automatique
Mettez Tkinter dans Macbook et vérifiez le fonctionnement
Différences de multithreading entre Python et Jython
Importation de modules et gestion des exceptions en python
Comment utiliser is et == en Python
SublimeText2 et SublimeLinter - Vérification de la syntaxe pour Python3 -