Librería Serial LM
LM serial library
require('serial')
Incluir la librería antes de llamar las funciones serial
port, err = serial.open(device, params)
Abre el puerto indicado, devuelve: puerto, o, en caso de error, nil y un mensaje de error
Parametros:
deviceNombre del puerto RequeridoparamsTabla de parametros, opcional, (valores por defecto en negrita):baudrate300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400parity«none», «even», «odd»databits5, 6, 7, 8stopbits1, 2duplex«full», «half» (Nota:halfes necesario para RS-485)
res, err = port:read(bytes)
Lee el numero de bytes indicado, la ejecución se detiene hasta que la lectura finalice
Parámetros:
bytesnumero de bytes a leer
res, err = port:write(str)
Escribe el string indicado en el puerto serial.
Devuelve el numero de bytes escritos, o, en caso de error, nil y un mensaje de error
Parametros:
stringcadena a ser escrita
res, err = port:read(bytes, timeout)
Lee hasta que ocurre un timeout o se recibe el numero especificado de bytes, lo que suceda primero.
Devuelve el dato mas el numero de bytes leídos, o en caso de error, nil y un mensaje de error
Parámetros:
bytesnumero de bytes a leertimeouttiempo máximo de espera para que se complete la lectura, el valor mínimo y resolución del temporizador es 0.1 segundos
port:flush()
borra cualquier byte leído o no enviado
port:drain()
Espera hasta que se haya transmitido toda la salida
port:close()
Cierra el puerto serie, no se pueden llamar otras funciones de puerto después de esta
Ejemplo (Script residente, prueba de eco RS-485):
-- abre el puerto en la primera llamada
if not port then
require('serial')
port = serial.open('/dev/ttyS2', { baudrate = 9600, parity = 'even', duplex = 'half' })
port:flush()
end
-- puerto listo
if port then
-- leer un byte
char = port:read(1, 1)
-- Devolver si se lee con éxito
if char then
port:write(char)
end
end