Citrix Virtual Apps and Desktops

Portas seriais

A maioria dos PCs novos não tem portas seriais (COM) incorporadas. As portas são fáceis de adicionar usando conversores USB. Os aplicativos adequados para portas seriais geralmente envolvem sensores, controladores, leitores de cheques antigos, pads e assim por diante. Alguns dispositivos USB de porta COM virtual usam drivers específicos do fornecedor no lugar dos drivers fornecidos pelo Windows (usbser.sys). Esses drivers permitem que você force a porta COM virtual do dispositivo USB para que ele não mude mesmo se conectado a diferentes soquetes USB. Isto pode ser feito no Gerenciador de dispositivos > Portas (COM e LPT) > Propriedades ou no aplicativo que controla o dispositivo.

O mapeamento de porta COM do cliente permite que os dispositivos anexados às portas COM no ponto de extremidade do usuário sejam usados durante sessões virtuais. Você pode usar esses mapeamentos como qualquer outro mapeamento de rede.

Para cada porta COM, um driver no sistema operacional atribui um nome de link simbólico, como COM1 e COM2. Os aplicativos usam então o link para acessar a porta.

Importante:

Como um dispositivo pode se conectar ao ponto de extremidade usando USB diretamente, isso não significa que ele pode ser redirecionado usando o redirecionamento USB genérico. Alguns dispositivos USB funcionam como portas COM virtuais, os quais os aplicativos podem acessar da mesma maneira que a porta serial física. O sistema operacional pode abstrair portas COM e tratá-las como compartilhamentos de arquivos. Dois protocolos comuns para COM virtual são CDC ACM ou MCT. Quando conectado através de uma porta RS-485, os aplicativos podem não funcionar de todo. Obtenha um conversor de RS-485 em RS232 para usar o RS-485 como uma porta COM. Importante:

Alguns aplicativos reconhecem o dispositivo (por exemplo, um bloco de assinatura) consistentemente somente se ele estiver conectado a COM1 ou COM2 na estação de trabalho cliente.

Mapear uma porta COM do cliente para uma porta COM do servidor

Você pode mapear portas COM do cliente para uma sessão Citrix de três maneiras:

  1. Ative as políticas Client COM port redirection e Auto connect client COM ports Studio. Depois de aplicadas, algumas informações estão disponíveis no HDX Monitor.

    Imagem do monitor HDX

  2. Se a função Auto connect client COM ports não conseguir mapear a porta, você poderá mapear a porta manualmente ou usar scripts de logon. Faça logon no VDA, e em uma janela de prompt de comando, digite:

    NET USE COMX: \\CLIENT\COMZ:

    Ou

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

    X é o número da porta COM no VDA (as portas 1 a 9 estão disponíveis para mapeamento). Z é o número da porta COM do cliente que você quer mapear.

    Para confirmar que a operação foi bem-sucedida, digite NET USE em um prompt de comando VDA. A lista que aparece contém unidades mapeadas, portas LPT e portas COM mapeadas.

    Imagem do comando net use

  3. Para usar essa porta COM em uma área de trabalho virtual ou aplicativo, instale o aplicativo de dispositivo do usuário e aponte-o para o nome da porta COM mapeado. Por exemplo, se você mapear COM1 no cliente para COM3 no servidor, instale seu aplicativo de dispositivo de porta COM no VDA e aponte-o para COM3 durante a sessão. Use esta porta COM mapeada como você faria uma porta COM no dispositivo do usuário.

Importante:

O mapeamento de porta COM não é compatível com TAPI. Você não pode mapear dispositivos da Windows Telephony Application Programming Interface (TAPI) às portas COM do cliente. A TAPI define uma maneira padrão para que os aplicativos controlem funções telefônicas para chamadas de dados, fax e voz. A TAPI gerencia a sinalização, incluindo discagem, atendimento e término de chamadas. Além disso, serviços suplementares, como espera, transferência e chamadas em conferência.

Solução de problemas

  1. Você deverá ser capaz de acessar o dispositivo diretamente do ponto de extremidades, sem passar pelo Citrix. Embora a porta não seja mapeada para o VDA, você não está conectado a uma sessão Citrix. Siga todas as instruções de solução de problemas que acompanham o dispositivo e primeiro verifique se ele funciona localmente. Quando um dispositivo é conectado a uma porta COM serial, é criada uma chave de registro na estrutura de registro mostrada aqui: Imagem de resolução de problemas

    Você também pode encontrar essas informações no prompt de comando executando chgport/query.

    Solucionar problemas da imagem do prompt de comando

    Se as instruções de solução de problemas do dispositivo não estiverem disponíveis, tente abrir uma sessão PuTTY. Escolha Session e em Serial line especifique sua porta COM.

    Imagem de solução de problemas por sessão PuTTY

    Você pode executar MODE em uma janela de comando local. A saída pode indicar a porta COM em uso e os bits Baud/Parity/Data Bits/Stop, de que você precisa em sua sessão do PuTTY. Se a conexão PuTTY for bem-sucedida, pressione Enter para ver o feedback no dispositivo. Os caracteres que você digitar poderão ser repetidos na tela ou respondidos. Se esta etapa não for bem-sucedida, você não poderá acessar o dispositivo a partir de uma sessão virtual.

  2. Mapeie a porta COM local para o VDA (usando políticas ou NET USE COMX: \\CLIENT\COMZ:) e repita os mesmos procedimentos do PuTTY na etapa anterior, mas desta vez no PuTTY do VDA. Se o PuTTY não mostrar o erro Unable to open connection to COM1. Unable to open serial port, outro dispositivo pode estar usando COM1.

  3. Execute chgport /query. Se o driver serial do Windows integrado no VDA estiver atribuindo automaticamente \Device\Serial0 a uma porta COM1 do seu VDA, faça o seguinte: A. Abra o CMD no VDA e digite NET USE.

    B. Exclua todos os mapeamentos existentes (por exemplo, COM1) no VDA.

    NET USE COM1 /DELETE

    C. Mapeie o dispositivo para o VDA.

    NET USE COM1: \\CLIENT\COM3:

    D. Aponte o aplicativo no VDA para COM3.

    Por fim, tente mapear sua porta COM local (por exemplo, COM3) para uma porta COM diferente no VDA (que não seja a COM1, por exemplo, COM3). Verifique se o seu aplicativo está apontando para essa porta: NET USE COM3: \\CLIENT\COM3

  4. Se você vir agora a porta mapeada, o PuTTY está funcionando, mas sem passar dados, pode ser uma condição de corrida. O aplicativo pode conectar e abrir a porta antes que ela seja mapeada, impedindo-a de ser mapeada. Experimente uma das seguintes soluções:

    • Abra um segundo aplicativo publicado no mesmo servidor. Aguarde alguns segundos para que a porta seja mapeada e abra então o aplicativo real que tenta usar a porta.
    • Ative as políticas de redirecionamento de porta COM do Editor de Política de Grupo no Active Directory em vez do Studio. Essas políticas são o Client COM port redirection e Auto connect client COM ports. As políticas aplicadas desta maneira podem ser processadas antes das políticas do Studio, garantindo que a porta COM seja mapeada. As políticas da Citrix são enviadas para o VDA e armazenadas em: HKLN\SOFTWARE\Policies\Citrix \<user session ID\>

    • Use este script de logon para o usuário ou, em vez de publicar o aplicativo, publique um script.bat que primeiro exclua qualquer mapeamento no VDA, remapeie a porta COM virtual e, em seguida, inicie o aplicativo:

    @echo off NET USE COM1 /delete NET USE COM2 /delete NET USE COM1: \\CLIENT\COM1: NET USE COM2: \\CLIENT\ COM2: MODE COM1: BAUD=1200 (ou qualquer valor necessário) MODE COM2: BAUD=9600 PARITY=N Data=8 Stop=1 (ou qualquer valor necessário) START C:\Program Files\<Caminho do seu software>\

  5. O Process Monitor da Sysinternals é a ferramenta de último recurso. Ao executar a ferramenta no VDA, encontre e filtre objetos como COM3, picaser.sys, CdmRedirector, mas especialmente <seu_app>.exe. Podem aparecer erros como Acesso negado ou similares.

Portas seriais