串行端口
大多数新电脑没有内置的串口(COM)端口。通过使用USB转换器,端口很容易添加。适合串行端口的应用程序通常包括传感器、控制器、旧的检查阅读器、pad等等。一些USB虚拟com端口设备使用特定于供应商的驱动程序来代替windows提供的驱动程序(usbser.sys)。这些驱动程序允许您强制USB设备的虚拟COM端口,这样即使连接到不同的USB插座,它也不会改变。这可以从设备管理器>端口(COM & LPT) >属性或者来自控制设备的应用程序。
客户端COM端口映射允许附加到用户端点COM端口上的设备在虚拟会话期间使用。您可以像使用其他网络映射一样使用这些映射。
对于每个COM端口,操作系统中的驱动程序分配一个符号链接名,如COM1和COM2。然后应用程序使用该链接访问该端口。
重要的是:
因为设备可以直接使用USB连接到端点,这并不意味着它可以使用通用USB重定向进行重定向。一些USB设备充当虚拟COM端口,应用程序可以以与物理串口相同的方式访问COM端口。操作系统可以抽象COM端口,并将它们视为文件共享。虚拟COM的两种常用协议是CDC、ACM或MCT。当通过RS-485端口连接时,应用程序可能根本无法工作。获取一个RS-485到rs232转换器,使用RS-485作为COM端口。重要的是:
一些应用程序只有在设备连接到客户端工作站的COM1或COM2时才能一致地识别该设备(例如,签名板)。
映射客户端COM端口到服务器COM端口
可以通过三种方式将客户端COM端口映射到Citrix会话:
- 管理控制台策略。有关策略的更多信息,请参见端口重定向策略设置.
- VDA命令提示符。
- 远程桌面(终端服务)配置工具。
启用客户端COM端口重定向和自动连接客户端COM端口Studio政策。应用后,在HDX监视器中可以看到一些信息。
如果自动连接客户端COM端口映射端口失败,可以手动映射端口或使用登录脚本。登录到VDA,在命令提示窗口中,输入:
\\客户端\ comz:
或
\\客户端\ clientport: comz:
X为VDA上COM口的编号(端口1 ~ 9可用于映射)。Z是要映射的客户端COM端口的编号。
要确认操作成功,输入网络使用在VDA命令提示符。显示的列表包含映射的驱动器、LPT端口和映射的COM端口。
若要在虚拟桌面或应用程序中使用此COM端口,请安装用户设备应用程序并将其指向映射的COM端口名称。例如,如果您将客户机上的COM1映射到服务器上的COM3,则在VDA中安装COM端口设备应用程序,并在会话期间将其指向COM3。像使用用户设备上的COM端口一样使用这个映射的COM端口。
重要的是:
COM端口映射不兼容tapi。不能将Windows电话应用程序编程接口(TAPI)设备映射到客户端COM端口。TAPI为应用程序定义了一种标准方法,用于控制数据、传真和语音呼叫的电话功能。TAPI管理信令,包括拨号、接听和结束呼叫。此外,还有补充服务,如保持、转接和电话会议。
进行故障排除
确保可以绕过Citrix直接从端点访问设备。当端口没有映射到VDA时,您没有连接到Citrix会话。按照设备附带的任何故障排除说明,并首先验证它在本地工作。当一个设备连接到一个串行COM端口时,一个注册表项会在如下所示的hive上创建:
您还可以通过运行命令从命令提示符中找到这些信息chgport /查询.
如果设备的故障排除说明不可用,请尝试打开一个PuTTY会话。选择会话而在串行线指定COM端口。
你可以跑模式在本地命令窗口中。输出可能显示正在使用的COM端口和波特率/奇偶校验/数据位/停止位,这是您在PuTTY会话中需要的。如果PuTTY连接成功,按“”输入查看来自设备的反馈。无论你输入什么字符,都可能在屏幕上重复出现,或者得到回应。如果此步骤不成功,则无法从虚拟会话访问设备。
将本地COM端口映射到VDA(使用策略或\\客户端\ comz:),并重复上一步中的PuTTY步骤,但这次使用VDA PuTTY。如果PuTTY工具提示错误无法打开到COM1的连接。无法打开串口,其他设备可能正在使用COM1。
运行chgport /查询.如果VDA上的内置Windows串口驱动程序自动分配\Device\Serial0到您的VDA的COM1端口,请执行以下操作网络使用。
B.删除VDA上已有的映射(如COM1)。
Net use com1 / delete
C.将设备映射到VDA。
Net use com1: \\客户端\ com3:
D.将您的应用程序在VDA上指向COM3。
最后,尝试将您的本地COM端口(例如,COM3)映射到VDA上的另一个COM端口(除了COM1,例如COM3)。确保你的应用程序指向它:Net使用com3: \\客户端\ com3
如果现在确实看到了映射的端口,说明PuTTY正在工作,但没有数据传递,那么这可能是一个竞态条件。应用程序可能在映射端口之前连接并打开该端口,从而使其无法被映射。试试下面的方法:
- 打开发布在同一服务器上的第二个应用程序。等待几秒钟,等待端口映射完成,然后打开尝试使用该端口的实际应用程序。
从Active Directory中的组策略编辑器中启用COM端口重定向策略,而不是从服务的Manage > Full Configuration界面启用。这些政策是客户端COM端口重定向而且自动连接客户端COM端口.以这种方式应用的策略可能在管理控制台策略之前被处理,以确保COM端口被映射。Citrix策略被推入VDA并存储在:
HKLN\SOFTWARE\Policies\Citrix \<用户会话ID\>
- 为用户使用这个登录脚本,或者不发布应用程序,发布一个。bat脚本,它首先删除VDA上的任何映射,重新映射虚拟COM端口,然后启动应用程序:
@echo off NET USE COM1 /delete NET USE COM2 /delete NET USE COM1: \\CLIENT\COM1: NET USE COM2: \\CLIENT\COM2: MODE COM1: BAUD=1200(或任何需要的值)MODE COM2: BAUD=9600 PARITY=N Data=8 Stop=1(或任何需要的值)START C:\Program Files\ <您的软件路径>\
.exe Sysinternals中的Process Monitor是最后的工具。在VDA上运行工具时,查找并筛选COM3、picaser等对象。sys, CdmRedirector,特别是
.exe。任何错误都可能显示为访问被拒绝或类似情况。