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 :
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
ouCOM3
(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é paireO
: 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'instanceSerial
.serial.type
: Retourne le type du module (ici,serial
).