/ / El protocolo serie emite el código de portabilidad de C a Python: Python, puerto serie, protocolos, pyserial

El protocolo serie emite el código de portabilidad de C a Python: python, puerto serie, protocolos, pyserial

Soy una especie de principiante tanto con C como concomplejidades de la comunicación en serie. Intentaré proporcionar toda la información sobre este problema que pueda; avisarme si hay algo adicional que deba proporcionar que ayude.

Estoy en el proceso de portar la comunicación.protocolo para un dispositivo serie (un micromanipulador) de C a Python, para uso en una aplicación Python que mi laboratorio está desarrollando. La compañía nos ha proporcionado el código fuente de una pequeña utilidad de línea de comandos que se utiliza para interactuar con el dispositivo. Usando esta lógica, nuestro módulo Python puede generar bloques de datos correctos / idénticos, incluido el CRC. Sin embargo, cuando el código Python envía un bloque de datos (idéntico a un bloque de datos generado por el código C), no recibe respuesta del dispositivo. Al utilizar un programa de monitoreo de puerto serie (Free Serial Port Monitor), he notado que las comunicaciones entre Python y el dispositivo difieren en algunos casos de la utilidad provista por la compañía.

Aquí está una captura de pantalla del registro para el proporcionadoUtilidad, que funciona correctamente. Muestra el envío de un bloque de datos y su respuesta, así como el envío de un segundo bloque de datos y el inicio de la respuesta.

Ejemplo de registro de la utilidad

Y aquí está una captura de pantalla de lo que sucede con nuestro código Python; como puede ver, envía el bloque de datos sin respuesta.

Ejemplo de registro de python

En cuanto a otra información que podría ser útil, estoy usandoLas bibliotecas seriales estándar de Python. La estructura del bloque de datos es de 14 caracteres ASCII, comenzando con STX y terminando con ETX. Los primeros ocho caracteres de datos corresponden a funciones, direcciones, valores, etc., mientras que los últimos cuatro caracteres son el CRC.

Como dije, soy un poco novato en esto yRealmente no tengo idea de por dónde empezar. Cualquier consejo o asistencia, o recursos que puedan ayudarme a resolver esto serían muy apreciados, y háganme saber si hay alguna información más específica que deba proporcionar.

http://reentry.mit.edu/extserialport.c

http://reentry.mit.edu/extserialport.h

Respuestas

0 para la respuesta № 1

He encontrado que win32serial.py, provisto con pyserial, proporciona directamente (¿enlaces?) a la configuración de serie de la API de Windows, que parece haber funcionado, después de que copié la configuración de la línea de código C línea por línea, incluido el control de flujo y RTS. Muchas gracias a @Serge por su tiempo y asistencia.