Puertos serie
La mayoría de los PC nuevos no tienen puertos serie (COM) integrados. Los puertos se pueden añadir fácilmente mediante convertidores USB. Las aplicaciones adecuadas para puertos serie suelen incluir sensores, controladores, lectores de cheques antiguos, almohadillas, etc. Algunos dispositivos USB de puerto COM virtual utilizan controladores específicos del proveedor en lugar de los controladores proporcionados por Windows (usbser.sys). Estos controladores le permiten forzar el puerto COM virtual del dispositivo USB para que no cambie incluso si se conecta a diferentes tomas USB. Esto se puede hacer desde el Administrador de dispositivos > Puertos (COM y LPT) > Propiedades o desde la aplicación que controla el dispositivo.
La asignación de puertos COM de cliente permite que los dispositivos conectados a los puertos COM del punto final del usuario se utilicen durante las sesiones virtuales. Puede utilizar estas asignaciones como cualquier otra asignación de red.
Para cada puerto COM, un controlador del sistema operativo asigna un nombre de vínculo simbólico como COM1 y COM2. Las aplicaciones utilizan entonces el vínculo para acceder al puerto.
Importante:
Que un dispositivo pueda conectarse al punto final directamente mediante USB no significa que pueda redirigirse mediante la redirección USB genérica. Algunos dispositivos USB funcionan como puertos COM virtuales, a los que las aplicaciones pueden acceder de la misma manera que a un puerto serie físico. El sistema operativo puede abstraer los puertos COM y tratarlos como recursos compartidos de archivos. Dos protocolos comunes para COM virtual son CDC ACM o MCT. Cuando se conectan a través de un puerto RS-485, las aplicaciones podrían no funcionar en absoluto. Obtenga un convertidor de RS-485 a RS-232 para usar RS-485 como puerto COM. Importante:
Algunas aplicaciones reconocen el dispositivo (por ejemplo, una tableta de firmas) de forma consistente solo si está conectado a COM1 o COM2 en la estación de trabajo cliente.
Asignar un puerto COM de cliente a un puerto COM de servidor
Puede asignar puertos COM de cliente a una sesión de Citrix® de tres maneras:
- Directivas de Studio. Para obtener más información sobre las directivas, consulte Configuración de directivas de redirección de puertos.
- Símbolo del sistema de VDA.
- Herramienta de configuración de Escritorio remoto (Servicios de Terminal).
-
Habilite las directivas Redirección de puertos COM de cliente y Conectar automáticamente puertos COM de cliente de Studio. Una vez aplicadas, hay información disponible en HDX™ Monitor.

-
Si la opción Conectar automáticamente puertos COM de cliente no pudo asignar el puerto, puede asignar el puerto manualmente o usar scripts de inicio de sesión. Inicie sesión en el VDA y, en una ventana del símbolo del sistema, escriba:
NET USE COMX: \\CLIENT\COMZ:
O
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 realizó correctamente, escriba NET USE en el símbolo del sistema de un VDA. La lista que aparece contiene unidades asignadas, puertos LPT y puertos COM asignados.

-
Para usar este puerto COM en un escritorio o una aplicación virtual, instale la aplicación de su 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 de su dispositivo de puerto COM en el VDA y apúntela a COM3 durante la sesión. Utilice este puerto COM asignado como lo haría con un puerto COM en el dispositivo de usuario.
Importante:
La asignación de puertos COM no es compatible con TAPI. No se pueden asignar dispositivos de la interfaz de programación de aplicaciones de telefonía de Windows (TAPI) a puertos COM de cliente. TAPI define una forma estándar para que las aplicaciones controlen las funciones telefónicas para llamadas de datos, fax y voz. TAPI gestiona la señalización, incluida la marcación, la respuesta y la finalización de llamadas. Además, servicios suplementarios como la retención, la transferencia y las llamadas de conferencia.
Solución de problemas
-
Asegúrese de poder acceder al dispositivo directamente desde el punto final, sin pasar por Citrix. Mientras el puerto no esté asignado al VDA, no estará conectado a una sesión de Citrix. Siga las instrucciones de solución de problemas que vienen con el dispositivo y verifique que funcione localmente primero. Cuando un dispositivo se conecta a un puerto COM serie, se crea una clave de registro en el hive que se muestra aquí:

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

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

Puede ejecutar MODE en una ventana de comandos local. La salida podría mostrar el puerto COM en uso y los valores de Baudios/Paridad/Bits de datos/Bits de parada, que necesitará en su sesión de PuTTY. Si la conexión de PuTTY es correcta, pulse Intro para ver la respuesta del dispositivo. Los caracteres que escriba podrían repetirse en la pantalla o recibir una respuesta. Si este paso no tiene éxito, no podrá acceder al dispositivo desde una sesión virtual.
-
Asigne el puerto COM local al VDA (mediante políticas o NET USE COMX: \\CLIENT\COMZ:) y repita los mismos procedimientos de PuTTY del paso anterior, pero esta vez desde el PuTTY del VDA. Si PuTTY no muestra el error Unable to open connection to COM1. Unable to open serial port, es posible que otro dispositivo esté usando COM1.
-
Ejecute chgport /query. Si el controlador de serie de Windows integrado en el VDA asigna automáticamente \Device\Serial0 a un puerto COM1 de su 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 su aplicación en el VDA a COM3.
Por último, intente asignar su puerto COM local (por ejemplo, COM3) a un puerto COM diferente en el VDA (que no sea COM1, por ejemplo, COM3). Asegúrese de que su aplicación apunte a él: NET USE COM3: \\CLIENT\COM3
-
Si ahora ve el puerto asignado, PuTTY funciona pero no pasan datos, podría ser una condición de carrera. La aplicación podría conectarse y abrir el puerto antes de que se asigne, bloqueando su asignación. Pruebe una de las siguientes opciones:
- Abra una segunda aplicación publicada en el mismo servidor. Espere unos segundos a que se asigne el puerto y, a continuación, abra la aplicación real que intenta usar el puerto.
-
Habilite las políticas de redirección de puertos COM desde el Editor de directivas de grupo en Active Directory en lugar de Studio. Esas políticas son Redirección de puertos COM de cliente y Conexión automática de puertos COM de cliente. Las políticas aplicadas de esta manera podrían procesarse antes que las políticas de Studio, garantizando que el puerto COM esté asignado. Las políticas de Citrix se envían al VDA y se almacenan en:
HKLN\SOFTWARE\Policies\Citrix \<user session ID\> - Utilice este script de inicio de sesión para el usuario o, en lugar de publicar la aplicación, publique un script .bat que primero elimine cualquier asignación en el VDA, reasigne 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 cualquier valor necesario) MODE COM2: BAUD=9600 PARITY=N Data=8 Stop=1 (o cualquier valor necesario) START C:\Program Files\<Your Software Path>\<your_software.exe>
-
Process Monitor de Sysinternals es la última herramienta a la que recurrir. Al ejecutar la herramienta en el VDA, busque y filtre objetos como COM3, picaser.sys, CdmRedirector, pero especialmente <your_app>.exe. Cualquier error podría aparecer como Acceso denegado o similar.