# Versión del codigo provisto inicialmente para esta actividad modificado para mayor comodidad en
# el cambio de parámetros y explorar mas posibilidades de configuración y programación. El código
# se comportó de la misma forma en todas la pruebas, al provisto inicialmente.
from machine import UART
from utime import sleep_ms
# Datos para la programacion de los pines de los puertos serie
# UART0 UART1 UART2
# tx 1 10 17
# rx 3 9 16
# Las velocidades posibles en una comunicacion serie: 110,300, 600, 1200,
# 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 y 115200 baudios
# Se establecen los string de caracteres a transmitir
# mytext="IoT Analis"
# Codigo para el conteo del numero maximo de caracteres que se pueden transmitir
mytext="0123456789"
# sum_mytext="IoT Analis"
# Codigo para el conteo del numero maximo de caracteres que se pueden transmitir
sum_mytext="0123456789"
# Se establece el tamaño del buffer de lectura, conincidente con el numeros de caracteres transmitidos
nread=10
# Tiempo de espera, entre rafagas de envios y lecturas de string de caracteres
retardo=2000
Rx=""
# Se crean dos instancia de UART, definidas para las UART0(TX0,RX0) y UART2(TX2,RX2) del ESP32.
# Los parámetros de del protocolo de comunicación serie, se establecen como constantes. De esta
# forma se pueden modificar en forma mas rápida y comoda.
nbits1=8
nbaud1=9600
nstop1=2
nparity1=None
nbits2=8
nbaud2=9600
nstop2=2
nparity2=None
# Inicialización de dos instancias de UART, para cada puerto serie del ESP32
uart0 = UART(1,nbaud1)
uart2 = UART(2,nbaud2)
# Inicialización con los parametros programados
uart0.init(nbaud1, bits=nbits1, parity=nparity1, stop=nstop1, tx=1, rx=3)
uart2.init(nbaud2, bits=nbits2, parity=nparity2, stop=nstop2, tx=17, rx=16)
# Inicio del bucle infinito
while True:
# Escribe el string de datos en la UART2
uart2.write(sum_mytext)
# Lee los el string de datos transmitidos en la UART0
Rx = uart0.read(nread)
# Imprime el string LEIDO
print("String LEIDO",Rx)
# Imprime el tamaño del buffer de lectura solicitada
print("Buffer de lectura solicitada",nread)
# Imprime el tamaño del string que se pudo leer
lstring=str(Rx)
print("Tamaño del string que se pudo leer" , len(lstring))
# Codigo para el conteo del numero maximo de caracteres que se pueden transmitir
nread=nread+10
# Para el conteo del numero maximo de caracteres que se pueden transmitir
sum_mytext=sum_mytext+mytext
sleep_ms(retardo)