Aller au contenu

Module Lua serial

Le module serial permet d'interagir avec des ports série, en facilitant la communication série pour la lecture et l'écriture de données. Les paramètres de configuration incluent la vitesse de transmission, les bits de données, la parité, et le timeout.

Pour l'importer il faut utiliser la déclaration suivante :

local serial = require("serial") 
-- remplacer serial par le name dans le fichier de configuration

Configuration

Le module serial nécessite une configuration spécifique pour fonctionner. Cette configuration est définie dans le fichier de configuration de l'agent.

Pour la configuration voici un exemple de toutes les options possibles :

iot:
  modules:
    serial: # module serial
      - name: serial1 # nom du module
        port: /dev/ttyUSB0 # port
        timeout: 5 # timeout
        baudrate: 9600 # vitesse de transmission
        databits: 8 # bits de données
        stopbits: 1 # bits d'arrêt
        parity: N # parité

Détails de la configuration

  • name : Nom du module. Il doit être unique et ne pas contenir d'espaces ou de caractères spéciaux.
  • port : Port série à utiliser. Il doit être au format /dev/ttyUSB0 ou COM3 (pour Windows).
  • baudrate : Vitesse de transmission (baud rate). Par défaut, c'est 9600 (ex. 9600, 115200).
  • databits : Nombre de bits de données. Par défaut, c'est 8 (ex. 7, 8).
  • stopbits : Nombre de bits d'arrêt. Par défaut, c'est 1 (ex. 1, 2).
  • parity : Type de parité. Par défaut, c'est N (None). Les valeurs possibles sont :
  • N : Aucune parité
  • E : Parité paire
  • O : Parité impaire
  • timeout : Délai d'attente pour la lecture. Par défaut, c'est 5 secondes.

Fonctions Lua

serial.connect()

Établit une connexion avec le port série configuré.

  • Paramètres : Aucun
  • Retour :
  • true si la connexion est réussie.
  • En cas d'échec, retourne nil suivi d'un message d'erreur.
local serial = require("serial1")

local status, err = serial.connect()
if not status then
    print("Erreur lors de la connexion au port série : " .. err)
else
    print("Connexion réussie au port série.")
end

serial.disconnect()

Ferme la connexion avec le port série.

  • Paramètres : Aucun
  • Retour :
  • true si la déconnexion est réussie.
  • En cas d'échec, retourne nil suivi d'un message d'erreur.
local serial = require("serial1")

local status, err = serial.disconnect()
if not status then
    print("Erreur lors de la déconnexion du port série : " .. err)
else
    print("Déconnexion réussie du port série.")
end

serial.writestring(message)

Écrit une chaîne de caractères dans le port série.

  • Paramètres :
  • message (string) : Le message à écrire dans le port série.

  • Retour :

  • true si l'écriture est réussie.
  • En cas d'échec, retourne nil suivi d'un message d'erreur.
local serial = require("serial1")

local message = "Hello, Serial Port!"
local status, err = serial.writestring(message)
if not status then
    print("Erreur lors de l'écriture dans le port série : " .. err)
else
    print("Message écrit avec succès dans le port série.")
end

serial.write(byteTable)

Écrit une séquence de bytes dans le port série.

  • Paramètres :
  • byteTable (table) : Un tableau Lua contenant des entiers représentant les bytes à écrire.

  • Retour :

  • true si l'écriture est réussie.
  • En cas d'échec, retourne nil suivi d'un message d'erreur.
local serial = require("serial1")

local byteTable = {0x01, 0x02, 0x03}
local status, err = serial.write(byteTable)
if not status then
    print("Erreur lors de l'écriture dans le port série : " .. err)
else
    print("Bytes écrits avec succès dans le port série.")
end

serial.readstring(length)

Lit une chaîne de caractères depuis le port série.

  • Paramètres :
  • length (int) : Le nombre de caractères à lire depuis le port série.

  • Retour :

  • La chaîne de caractères lue depuis le port, ou nil suivi d'un message d'erreur en cas d'échec.
local serial = require("serial1")

local length = 10
local message, err = serial.readstring(length)
if not message then
    print("Erreur lors de la lecture du port série : " .. err)
else
    print("Message lu depuis le port série : " .. message)
end

serial.read(length)

Lit une séquence de bytes depuis le port série.

  • Paramètres :
  • length (int) : Le nombre de bytes à lire depuis le port série.

  • Retour :

  • Un tableau Lua contenant les bytes lus, ou nil suivi d'un message d'erreur en cas d'échec.
local serial = require("serial1")

local length = 10
local byteTable, err = serial.read(length)
if not byteTable then
    print("Erreur lors de la lecture du port série : " .. err)
else
    print("Bytes lus depuis le port série :")
    for i, byte in ipairs(byteTable) do
        print(i, byte)
    end
end

Champs Lua associés

  • serial.name : Retourne le nom de l'instance Serial.
  • serial.type : Retourne le type du module (ici, serial).