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.
fuente
Respuestas:
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
fuente