Puerto serie que devuelve errores aleatorios en el cliente Wyse


3

Estamos probando un nuevo cliente Wyse (modelo Z90D7) que tiene una conexión de puerto serie a una PC. Tenemos un cliente externo que usa un equipo dedicado, sin embargo, la PC es lo que usamos para las pruebas. Ejecutamos una aplicación C # en los clientes a través de Citrix. Cuando ejecutamos la aplicación que estamos utilizando en nuestro antiguo equipo Wyse, todo funciona bien sin errores. Sin embargo, en el nuevo equipo, el puerto serie funciona aproximadamente una vez cada 10 intentos. Todas las otras veces, me dará un error de desbordamiento, un error de paridad o un error de RXOver.

Mediante el registro, verifiqué que el puerto se abre y que varios comandos se ejecutan después de que se abre. Sin embargo, los errores aleatorios ocurren antes de que se pueda transmitir cualquier dato real. He leído en numerosos lugares que esto podría ser un problema de búfer, sin embargo, no he visto ninguna publicación que mencione errores antes de recibir los datos, por lo que no estoy completamente seguro.

También he tratado de usar apretones de manos y memorias intermedias de lectura / escritura más grandes sin suerte. He probado un nuevo cable y el segundo puerto COM en este dispositivo, tampoco tuve suerte. Nuestra configuración predeterminada es:

9600 baudios, paridad uniforme, 8 bits de datos, 1 bit de parada

Dado que esto se está ejecutando en Citrix, también tenemos que ejecutar los comandos de uso de red que se muestran aquí antes de hacer nada. Si no lo hace, la conexión en serie siempre indicará que está conectada y no recibirá ningún dato (esto también ocurre en el equipo antiguo). El comando exacto que estamos ejecutando (con el nombre de la aplicación cambiado, por supuesto) es:

net use com1 /DELETE
net use com2 /DELETE
net use com1: \\client\com1:
net use com2: \\client\com2:
start /d "D:\myapp" MyApplication.exe

¿Alguien que haya tratado con puertos seriales ha oído hablar de estos tres errores alternando así? ¿Hay algo más que un puerto defectuoso (o dos puertos defectuosos) que pueda causar esto? Estoy pensando que el tamaño del búfer de hardware podría ser el problema, pero no puedo encontrar ninguna manera de superar esto.


1
Todos los errores parecen decir que los datos no se mueven, y en ambas direcciones. RXOver no está vaciando el búfer de recepción lo suficientemente rápido. Overrun es el controlador del puerto serie que no vacía el búfer de envío del chip lo suficientemente rápido. No estoy seguro de que exista una forma de aumentar el tamaño del búfer de hardware. El búfer de Windows se puede aumentar a través de la API, pero el controlador puede ignorarlo. Probaría más equipos para tener una mejor perspectiva del problema, tal vez algún problema de compatibilidad, pero no tengo experiencia directa con los puertos serie.
harrymc

Respuestas:


1

Todos los errores parecen decir que los datos no se mueven, y en ambas direcciones.

RXOver no está vaciando el búfer de recepción lo suficientemente rápido. Overrun es el controlador del puerto serie que no vacía el búfer de envío del chip lo suficientemente rápido.

No estoy seguro de que exista una forma de aumentar el tamaño del búfer de hardware. El búfer de Windows se puede aumentar a través de la API, pero el controlador puede ignorarlo.

Sugiero probar más equipos para obtener una mejor perspectiva del problema, tal vez algún problema de compatibilidad con su computadora de prueba.

El artículo 5 Problemas comunes del puerto serie enumera algunas posibles razones para tales problemas:

  • Parámetros de comunicación incorrectos
    Ambos dispositivos deben configurarse con los mismos parámetros de comunicación, que incluyen velocidad de transmisión, paridad, número de bits de datos y número de bits de parada.

  • Cable serie incorrecto

  • Cables seriales defectuosos
  • Cableado defectuoso

Antes de publicar esto, mi suposición inicial era que hay parámetros incorrectos. En mis parámetros predeterminados de 9600-E-8-1 y sin apretón de manos, tuve ~ 25% de éxito. Probé todas las combinaciones posibles de los parámetros predeterminados que permitiría el dispositivo Wyse, y la mejor configuración de 1200-E-8-1 con apretón de manos todavía solo funciona ~ 75% del tiempo. Si intento configurar manualmente la velocidad en baudios por debajo de 1200, deja de funcionar. Aunque no pude encontrar un conjunto de parámetros que funcionen, su información fue al menos útil. Por lo tanto, te concedí la recompensa. Gracias por tu ayuda. Es hora de probar diferentes equipos.
Big EMPin
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.