Nouveau : le pare-feu IA surveille toute la plateforme et explique chaque incident en termes simples. Découvrez comment ça marche

Réponse à : Indicateur de balance USB-RS232 sur Pi : erreur de permission, ttyUSB0/ttyUSB1 qui change, readline bloqué

Traduit de Türkçe par IA ·

J’ai rencontré les deux, dans un projet de pesée.Nom du port : le numéro ttyUSB est attribué selon l’ordre d’énumération, donc ne lui fais pas confiance. Regarde avec ls -l /dev/serial/by-id/, il y a un nom permanent qui contient le numéro de série du convertisseur, utilise-le. Si tu as deux puces identiques sans numéro de série, tu peux les nommer selon le port USB avec une règle udev, mais la plupart du temps by-id suffit.readline : par défaut, il attend
. La plupart des indicateurs terminent leurs lignes par , donc il ne rend jamais la main. De plus, sans timeout, il attend indéfiniment quand le câble est débranché. Voici ce que j’utilise :

PORT = '/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A10K3XYZ-if00-port0'
ser = serial.Serial(PORT, 9600, bytesize=8, parity='N', stopbits=1, timeout=2)
buf = b''
while True:
    chunk = ser.read(64)
    if not chunk:
        continue          # pas de données depuis 2 s, journaliser ici
    buf += chunk
    while b'' in buf:
        line, buf = buf.split(b'', 1)
        w = parse_weight(line)   # ex. b'ST,GS,+0012.45kg'
        if w is not None:
            client.publish('v1/telemetry', json.dumps({'weight_kg': w}), qos=1)

Si l’indicateur affiche plusieurs fois par seconde, n’envoie pas chaque ligne. Envoie une fois par seconde, ou seulement les lignes ST (stable). Écris une unit systemd pour le service, mets ton propre utilisateur dans la ligne User=, et utilise Restart=always.

Ağ geçidi yine bağlanıyor…
Solution acceptée♥ 5