SerialTool con Python®.


Tabla de contenidos


¿Qué es Python?

Python® es un lenguaje de programación de alto nivel, orientado a objetos e interpretado, con semántica dinámica. Sus estructuras de datos de alto nivel incorporadas, combinadas con la tipificación dinámica y el enlace dinámico, lo hacen muy atractivo para el Desarrollo Rápido de Aplicaciones, así como para su uso como lenguaje de scripting o pegamento para conectar componentes existentes.
La sintaxis simple y fácil de aprender de Python enfatiza la legibilidad y, por lo tanto, reduce el costo de mantenimiento del programa. Python admite módulos y paquetes, lo que fomenta la modularidad del programa y la reutilización del código. El intérprete de Python y la extensa biblioteca estándar están disponibles en forma de fuente o binaria sin cargo para todas las plataformas principales y pueden distribuirse libremente.
Para obtener información más detallada sobre Python®, por favor, consulte su sitio web: www.python.org

Aviso legal: "Python" es una marca registrada de PSF. SerialTool no está afiliado ni patrocinado por PSF. SerialTool utiliza Python como un lenguaje de programación compatible para ejecutar scripts y requiere una versión oficial de Python instalada en su PC.

SerialTool y Python

Editor de código Python para SerialTool.


¿Alguna vez has querido usar el puerto serie y tener una interfaz gráfica fantástica disponible que pudiera mostrar datos hacia y desde el puerto serie?
Si necesitas esto y quieres crear tu propio programa para controlar fácilmente el puerto serie sin tener que instalar bibliotecas en un lenguaje simple accesible para todos, SerialTool con Python es la herramienta que estabas buscando.
Algunos programas que utilizan el puerto serie ofrecen algunas soluciones de scripting, lo que significa que puedes escribir tu código y ejecutarlo, pero muy a menudo no conoces el lenguaje o tienes que pasar horas averiguando cómo integrar unas pocas líneas de tu código. Con SerialTool y Python integrado, puedes escribir tu script en Python y aprovechar todas las características de SerialTool sin límites.
SerialTool integra funciones básicas en forma de biblioteca (ya importada e integrada), y con unas pocas líneas, puedes buscar el puerto serie deseado, abrirlo, leer y escribir. SerialTool manejará toda la gestión gráfica de paquetes entrantes y salientes y te permite usar tu código Python para realizar las funciones que desees sin límites.
Para facilitar la escritura y prueba en Python, SerialTool proporciona un editor de texto donde puedes cargar y modificar tus scripts. El editor integrado reconoce la sintaxis de Python y permite la redacción fácil del código.

Más detalles sobre el puerto serie y Python

Adentrándonos más en las características ofrecidas por SerialTool y su biblioteca de Python integrada, comencemos con un ejemplo práctico.
Tienes la intención de entregar a un cliente o colega un software que permita la carga de firmware en un dispositivo creado por nosotros y actualizable a través del puerto serie. Un escenario bastante común en el que se debe crear software desde cero, posiblemente multiplataforma, e integrar una serie de aspectos comenzando por la interfaz gráfica y la interacción con el usuario, la selección de archivos y los mensajes de error o confirmación.
En este caso, a diferencia de otros lenguajes, Python facilita el trabajo pero al mismo tiempo requiere que se instalen y sigan actualizadas las bibliotecas externas.
SerialTool soluciona el problema desde su base ofreciendo algunas funciones simples que permiten una selección rápida e intuitiva del puerto serie, cuadros de diálogo para la carga y guardado de archivos, y cuadros de mensajes para informar al usuario sobre la ejecución del programa.
Estas son funciones muy simples que se llaman rápidamente, nativas en las plataformas donde se puede instalar SerialTool (Windows, MacOS y Linux). Esto elimina completamente las dependencias de bibliotecas externas, y las funciones básicas de interacción con el usuario se simplifican, aceleran e intuitivas en muy pocas líneas de código.

Volviendo a nuestro ejemplo básico, comenzamos cerrando todos los puertos activos y buscando puertos serie disponibles usando la función SerialTool.scan y la selección del puerto serie por parte del usuario con la función SerialTool.gui_selectport.
En este punto, sabemos el puerto que nuestro usuario quiere usar, todo lo que tenemos que hacer es abrirlo usando la función SerialTool.open con la configuración de parámetros o con parámetros ya existentes en la GUI. Una vez abierto el puerto serie, podemos solicitar que se cargue el archivo usando la función SerialTool.gui_loadfile, abrir el archivo usando las funciones nativas en Python, y solicitar la confirmación para la ejecución de la descarga del firmware con la función SerialTool.gui_showmessage.
Hemos llegado al momento en que escribimos el búfer presente en nuestro archivo con SerialTool.write indicando el número de bytes a escribir y esperamos la respuesta (si se espera) del dispositivo a actualizar con el comando SerialTool.read hasta el final de nuestra actualización.
Pocos y simples comandos que permiten en pocos minutos escribir tu propio programa para actualizar tu dispositivo o un dispositivo de terceros.
¿Suena complicado? SerialTool proporciona ejemplos integrados bien comentados.

Ejemplos integrados para puerto serie en Python

Para facilitar la comprensión y la obtención de resultados, SerialTool integra directamente ejemplos funcionales y comentados que promueven el uso inmediato de las funciones integradas. Una gran ventaja es que las funciones integradas no requieren ninguna biblioteca externa de Python para operar un puerto serie.
Con la instalación básica de Python, nuestro ejemplo ya es funcional. En los ejemplos proporcionados, están disponibles todas las funciones disponibles en la biblioteca SerialTool para Python integrada en nuestro software. Será suficiente adaptar algunas partes del código propuesto para la personalización de tus scripts y en unos minutos, tu programa para el puerto serie está desarrollado.
Los ejemplos ya propuestos en SerialTool se integrarán versión tras versión para siempre tener una visión directa de las funciones disponibles y su implementación sin tener que buscar en Internet.
La documentación dedicada a las funciones de SerialTool está disponible en nuestra página API de SerialTool para Python.

Instalación de Python

Muchos tutoriales comienzan con la instalación de Python en tu PC si aún no está disponible, y la configuración para poder llegar a un mínimo de usabilidad. Hemos dejado esta parte para el final porque SerialTool a través del menú de Entorno de Python buscará y probará la configuración existente una vez que Python esté instalado en tu PC.
Como se mencionó, Python es un lenguaje libre e interpretado y requiere que el intérprete esté instalado en tu PC. Para aquellos familiarizados con este lenguaje, no hay muchas explicaciones que dar, sin embargo, para aquellos que deberían probar por primera vez este asombroso lenguaje y su entorno de desarrollo, los pasos a seguir son bastante simples.
Para Windows, simplemente descarga la última versión de Python (3.12 al momento de escribir este documento) y ejecuta el ejecutable hasta su instalación completa.
Para MacOS, Python debería estar ya instalado probablemente refiriéndose a la versión 2 de Python y es necesario actualizarlo a la última versión (3.12 al momento de escribir este documento) descargando el ejecutable directamente desde el sitio web oficial de Python y procediendo con la instalación (como en Windows).

Nota para usuarios de MacOS: En la versión actual de SerialTool para MacOS, el framework de Python 3.12 ya está integrado para cumplir con los requisitos de Apple respecto a la firma de código. Si deseas utilizar una versión diferente instalada en tu sistema, puedes cambiar la configuración desde el menú "Python Environment".

Para Linux, será necesario instalarlo a través de la línea de comando Ubuntu sudo apt-get install python3 o Fedora sudo dnf install python3
Si tienes dudas o dificultades para instalar Python, siempre puedes consultar el sitio oficial o las docenas de tutoriales disponibles en línea.

Configuración y configuración del entorno Python.


Una vez instalado y verificado la instalación desde el menú "Entorno Python", será suficiente presionar el botón "Verificar Instalación" para importar la configuración actual de Python y guardarla para los subsiguientes inicios de SerialTool.

¡Estás listo! Carga los primeros ejemplos y presiona el botón [RUN] para comenzar tu aventura con SerialTool y Python escribiendo tu primer programa para el puerto serie.

Información adicional

Para facilitar la escritura de scripts, el editor incorporado tiene las características típicas de un IDE pero no permite la depuración por el momento.
Entre las opciones disponibles, es aconsejable seleccionar siempre la opción "Cerrar automáticamente los puertos serie cuando el script finaliza la ejecución." Si tu script encuentra errores de escritura, SerialTool proporciona el cierre de cualquier puerto serie abierto para evitar tener que cerrarlos en los inicios de script subsiguientes.
Para detener el script y salir, no es aconsejable usar la función sys.exit() ya que causaría el cierre total de SerialTool ya que Python está integrado. Si es necesario detener la ejecución del script a través del código fuente, se proporciona la función SerialTool.stopscript.
Si te encuentras dentro de un bucle, es posible detener la ejecución mediante el botón [STOP] directamente desde la GUI.
Dado que Python está integrado directamente en SerialTool, es importante recordar que tu script se convierte en parte de los procesos de SerialTool. En este sentido, cuando incluyes bucles While True en tu ciclo, es crucial emparejarlos con un pequeño sleep (típicamente 0.1 segundos) usando la función time.sleep(0.1) (de la biblioteca time) para permitir la ejecución de los diversos procesos principales de la GUI; de lo contrario, corres el riesgo de congelar completamente la aplicación.
No te preocupes excesivamente, ya que nuestros ejemplos destacan los puntos críticos donde insertar estos pequeños retrasos.

F.A.Q.

¿La integración de Python está limitada a algunas funcionalidades?
NO. Todas las funcionalidades de los scripts de Python están disponibles directamente, incluyendo la carga de bibliotecas externas (si están presentes en el sistema).

¿Funcionan SerialTool y Python en todos los sistemas operativos?
SÍ. En todas las plataformas donde SerialTool está disponible y Python está disponible, su uso es posible, es decir, Windows, MacOS y Linux.

¿Necesariamente tengo que descargar e instalar Python?
SÍ. El intérprete de Python debe estar presente en el PC donde se pretende utilizar. SerialTool se basa en Python3 y la compatibilidad hacia atrás con Python2 depende directamente de la compatibilidad de las dos versiones. Se recomienda a los usuarios de Python2 que utilicen Python3 en cualquier caso.

¿Cómo interactúa Python con SerialTool?
El script de Python interactúa a través de la biblioteca SerialTool integrada directamente en nuestro software llamando a las funciones deseadas. Los parámetros establecidos a través de Python, incluyendo la apertura y cierre del puerto serie, están directamente vinculados a la interfaz de usuario principal. Esencialmente pilotas SerialTool directamente desde Python a través de la biblioteca SerialTool y sus funciones.

¿Puedo continuar usando las funciones de SerialTool?
SÍ. Todas las funciones de SerialTool siguen disponibles, AutoAnswer, Alarm, SerialScope, visualización de paquetes, Grabación de datos, Envío de paquetes a la red, etc. están y siguen disponibles y seleccionables desde la interfaz de usuario.

¿Es posible usar múltiples puertos simultáneamente?
SÍ. La característica básica de SerialTool es la gestión de múltiples puertos serie simultáneamente. Desde Python, es posible asignar el número de serie que se utilizará al puerto serie que se pretende utilizar a través de la función SerialTool.assignPort.

¿Siempre tengo que usar la GUI para abrir y configurar los puertos antes de usarlos?
NO. Como se reiteró, la gestión de puertos serie está disponible directamente desde Python.

¿Puedo también configurar los parámetros RTS y DTR?
SÍ. La biblioteca te permite pilotar directamente la configuración de los pines RTS y DTR al abrir el puerto serie y durante la ejecución del script.

¿Puedo solicitar la implementación de otras funciones en la biblioteca SerialTool?
SÍ. Cualquier implementación adicional de funciones adicionales para la biblioteca SerialTool en Python se tomará en consideración y se implementará, donde sea posible y según las dinámicas de desarrollo de SerialTool.

¿Qué tipo de apoyo puedo tener?
Nuestro equipo está disponible para ayudarte a integrar tus scripts para facilitar la redacción de tus scripts o identificar cualquier error. El apoyo no incluye la redacción de scripts de Python reales o por encargo. El apoyo está relacionado con la integración de Python con SerialTool.