Puertos serie

La mayoría de los PC nuevos no tienen puertos serie integrados (COM). Es fácil agregar puertos usando convertidores USB. Las aplicaciones adecuadas para los puertos serie suelen ser sensores, controladores, lectores antiguos de cheques, paneles táctiles, etc. Algunos dispositivos USB de puerto COM virtual utilizan controladores específicos del fabricante en lugar de los controladores que ofrece Windows (usbser.sys). Estos controladores permiten forzar el puerto COM virtual del dispositivo USB para que no cambie incluso aunque se conecte a otras ranuras USB. Se puede hacer desde Administrador de dispositivos > Puertos (COM y LPT) > Propiedades o desde la aplicación que controla el dispositivo.

La asignación de puertos COM del cliente permite utilizar los dispositivos conectados a los puertos COM del dispositivo de usuario durante las sesiones virtuales. Estas asignaciones se pueden utilizar de la misma forma que cualquier otra asignación de red.

Un controlador del sistema operativo asigna un nombre de enlace simbólico a cada puerto COM, como COM1 y COM2. Las aplicaciones usan ese enlace para acceder al puerto.

Importante

  • El hecho de que un dispositivo se pueda conectar al dispositivo de punto final directamente por USB no significa que ese dispositivo se puede redirigir utilizando la redirección de USB genérico. Algunos dispositivos USB funcionan como puertos COM virtuales, a los que las aplicaciones pueden acceder de la misma manera que al puerto serie físico. El sistema operativo puede abstraer puertos COM y tratarlos como archivos compartidos. Dos protocolos frecuentes para COM virtual son: CDC ACM o MCT. Cuando se conecta a través de un puerto RS-485, es posible que las aplicaciones no funcionen en absoluto. Debe obtener un convertidor de RS-485 a RS232 para usar RS-485 como puerto COM.
  • Algunas aplicaciones reconocen el dispositivo (por ejemplo, un panel táctil de firmas) correctamente solo si está conectado a COM1 o COM2 en la estación de trabajo del cliente.

Asignar un puerto COM de cliente a un puerto COM de servidor

Puede asignar los puertos COM del cliente a una sesión de Citrix de tres maneras:

  1. Habilite las directivas Redirección de puertos COM del cliente y Conectar automáticamente puertos COM del cliente de Studio. Después de aplicarlas, se ofrece información en HDX Monitor.

    Imagen de HDX Monitor

  2. Si Conectar automáticamente puertos COM del cliente no puede asignar el puerto, puede asignarlo manualmente o usar scripts de inicio de sesión. Inicie sesión en el VDA y, en una ventana de símbolo del sistema, escriba:

    NET USE COMX: \\CLIENT\COMZ:

    O bien:

    NET USE COMX: \\CLIENT\CLIENTPORT:COMZ:

    X es el número del puerto COM en el VDA (los puertos del 1 al 9 están disponibles para la asignación). Z es el número del puerto COM del cliente que quiere asignar.

    Para confirmar que la operación se ha realizado correctamente, escriba NET USE en un símbolo del sistema de VDA. Aparecerá la lista de las unidades, puertos LPT y puertos COM asignados.

    Imagen del comando net use

  3. Para utilizar este puerto COM en una sesión de aplicación o escritorio virtual, instale la aplicación del dispositivo de usuario y apúntela al nombre del puerto COM asignado. Por ejemplo, si asigna COM1 en el cliente a COM3 en el servidor, instale la aplicación del dispositivo de puerto COM en el VDA y apúntela a COM3 durante la sesión. Utilice este puerto COM asignado del mismo modo que lo haría con un puerto COM del dispositivo del usuario.

Importante

La asignación de puertos COM no es compatible con TAPI. No puede asignar dispositivos Windows Telephony Application Programming Interface (TAPI) de Windows a los puertos COM del cliente. TAPI define una forma estándar que tienen las aplicaciones para controlar las funciones del teléfono para datos, fax y llamadas de voz. TAPI administra la señalización, incluido el marcado, la respuesta y la finalización de llamadas. Asimismo, gestiona servicios complementarios (como poner en espera, transferir y hacer llamadas de conferencia).

Solucionar problemas

  1. Compruebe que puede acceder al dispositivo directamente desde el dispositivo de punto final, sin pasar por Citrix. Mientras el puerto no se asigne al VDA, no podrá conectarse a una sesión de Citrix. Siga las instrucciones de solución de problemas incluidas con el dispositivo y primero compruebe que funciona localmente. Cuando un dispositivo se conecta a un puerto serie COM, se crea una clave de Registro en el subárbol que se muestra aquí: Imagen de solución de problemas

    También puede encontrar esta información desde el símbolo del sistema ejecutando chgport /query.

    Solucionar problemas desde la imagen del símbolo del sistema

    Si no dispone de instrucciones de solución de problemas para el dispositivo, intente solucionar problemas con una sesión PuTTY. Elija Session y, en Serial line, especifique su puerto COM.

    Imagen de solución de problemas mediante sesión PuTTY

    Puede ejecutar MODE en una ventana de comando local. El resultado muestra el puerto COM en uso y los bits de parada, los bits de datos, la paridad y los baudios que necesita en su sesión PuTTY. Si se puede establecer la conexión con PuTTY, presioneEntrar para ver la información que envíe el dispositivo. Los caracteres que escriba pueden repetirse en pantalla, o bien, puede recibir directamente respuesta a ellos. Sin este paso, no puede acceder al dispositivo desde una sesión virtual.

  2. Asigne el puerto COM local al VDA (usando directivas o NET USE COMX: \\CLIENT\COMZ:) y repita los mismos procedimientos de PuTTY que en el paso anterior, pero esta vez desde el PuTTY del VDA. Si PuTTY falla con el error Unable to open connection to COM1. Unable to open serial port, puede que otro dispositivo esté usando COM1.

  3. Ejecute chgport /query. Si el controlador serie de Windows integrado en el VDA asigna automáticamente \Device\Serial0 a un puerto COM1 del VDA, haga lo siguiente: A. Abra CMD en el VDA y escriba NET USE.

    B. Elimine cualquier asignación existente (por ejemplo, COM1) en el VDA.

    NET USE COM1 /DELETE

    C. Asigne el dispositivo al VDA.

    NET USE COM1: \\CLIENT\COM3:

    D. Apunte la aplicación en el VDA a COM3.

    Por último, intente asignar su puerto COM local (por ejemplo, COM3) a otro puerto COM en el VDA (que no sea COM1 si no, por ejemplo, COM3). Compruebe que su aplicación apunta a él: NET USE COM3: \\CLIENT\COM3

  4. Si ahora ve el puerto asignado, PuTTY está funcionando, pero no pasa ningún dato, podría tratarse de una condición de carrera. La aplicación puede conectarse y abrir el puerto antes de que se asigne, con lo que se bloquea su asignación. Pruebe una de las siguientes soluciones:

    • Abra una segunda aplicación publicada en el mismo servidor. Espere unos segundos para que se asigne el puerto y abra la aplicación que intenta usar el puerto.
    • Habilite las directivas de redirección de puertos COM desde el Editor de directivas de grupo en Active Directory en lugar de Studio. Esas directivas son: Redirección de puertos COM del cliente y Conectar automáticamente puertos COM del cliente. Las directivas aplicadas de esta manera se pueden procesar antes de las directivas de Studio, lo que garantiza que el puerto COM se asigne. Las directivas Citrix se envían al VDA y se almacenan en: HKLN\SOFTWARE\Policies\Citrix <ID de la sesión de usuario>

    • Utilice este script de inicio de sesión para el usuario o, en lugar de publicar la aplicación, publique un script .bat que borre primero cualquier asignación en el VDA, vuelva a asignar el puerto COM virtual y luego inicie la aplicación:

    @echo off NET USE COM1 /delete NET USE COM2 /delete NET USE COM1: \\CLIENT\COM1: NET USE COM2: \\CLIENT\COM2: MODE COM1: BAUD=1200 (o el valor que necesite) MODE COM2: BAUD=9600 PARITY=N Data=8 Stop=1 (o el valor que necesite) START C:\Archivos de programa\<Ruta a su software>\

  5. Process Monitor de Sysinternals es la herramienta de último recurso. Cuando ejecute la herramienta en el VDA, busque y filtre objetos como COM3, picaser.sys, CdmRedirector y, sobre todo <su_aplicación>.exe. Los errores aparecen como “Acceso denegado” o similar.

Puertos serie