8. Tx Rx con Python

Python posee una poderosa libreria para manejar comunicaciones seriales la cual se muestra a continuación.

La liberaria tiene el nombre de pySerial, mientras que su modulo se llama serial

1. Instalación

Para poder utilizar la libreria primero se debe realizar la instalación.
 Linux, original, logo Free Icon - Icon-Icons.com Podemos utilizar pip para la instalación:
          pip install pyserial
 windows, computer, desktop, technology, screen, microsoft, os icon | Social  Media & Logos I Filled Line icon sets | Icon Ninja Se puede instalar mediante pip, o se debe descargar los sources de
         https://github.com/pyserial/pyserial/releasesy luego correr el instalador que trae el paquete
  
python setup.py install

instalar pip:
https://www.geeksforgeeks.org/how-to-install-pip-on-windows/

2. Inicializacion

Como primer punto es necesario importar la libreria al codigo:

import serial

Para iniciar el puerto creamos un objeto y llamamos la función:

ser = serial.Serial(port, baudrate, xxx,....)

Algunos de los parámetros básicos de configuración son los siguientes:

  • port : Nombre del puerto, en windows tenemos  COMx, mientras que en linux puede ser /dev/ttyUSBx, /dev/ttyACMx, /dev/ttySx, etc dependiendo del tipo de dispositivo.
  • baudrate: velocidad de transmision, por defecto 9600
  • timeout: tiempo de espera para recepción, por defecto sin timeout.
  • stopbits: bits de stop a enviar, por defecto 1
  • bytesize: tamaño de dato, por defecto 8
  • parity: paridad serial.PARITY_NONE, N, serial.PARITY_EVEN, E, serial.PARITY_ODD, O. por defecto Sin paridad

Ejemplo:

ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1, stopbits=1,bytesize=8,parity=serial.PARITY_NONE)

3. lectura y escritura

 

write(data)
Escribe un dato del tipo byte a la salida del puerto, se puede utilizar bytearray para poder mandar cadenas codificadas
write(b'\x0D\x0A')                       //escribe CR+LF ingresado en Hex
write(bytearray('Hola\r\n','latin1')) //escribe "Hola" + CR+LF
write(b"Hello World") //escribe "Hello world"
write(chr(27)) //escribe caracter 'ESC'

 

read(size)
Lee un determinado numero de bytes del puerto serial.

 read(10) //Lee 10 bytes del buffer de entrada.

importante: Las funciones de lectura de puerto pueden verse afectadas por el paràmetro timeout en la configuracion del puerto