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:

  • device Nombre del puerto Requerido
  • params Tabla de parametros, opcional, (valores por defecto en negrita):
    • baudrate 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400
    • parity «none», «even», «odd»
    • databits 5, 6, 7, 8
    • stopbits 1, 2
    • duplex «full», «half» (Nota: half es 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:

  • bytes numero 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:

  • string cadena 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:

  • bytes numero de bytes a leer
  • timeout tiempo 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