串行端口
最新的 PC 没有内置串行 (COM) 端口。可以通过 USB 转换器轻松添加这些端口。适合串行端口的应用程序通常涉及传感器、控制器、旧检查读取器、板等。某些 USB 虚拟 COM 端口设备使用供应商特定的驱动程序来代替 Windows 提供的驱动程序 (usbser.sys)。这些驱动程序允许您强制使用 USB 设备的虚拟 COM 端口,以便其即使连接到不同的 USB 插槽也不会发生变化。可以通过从设备管理器 > 端口(COM 和 LPT) > 属性或从控制设备的应用程序完成此操作。
通过客户端 COM 端口映射,在虚拟会话期间将能够使用连接到用户的端点上的 COM 端口的设备。可以像使用任何其他网络映射一样使用这些映射。
对于每个 COM 端口,操作系统中的驱动程序将分配一个符号链接名称,例如 COM1 和 COM2。然后,应用程序将使用该链接访问端口。
重要:
由于设备可以使用 USB 直接连接到端点,因此并不意味着可以使用通用 USB 重定向功能对其进行重定向。某些 USB 设备功能的运行方式与虚拟 COM 端口相似,应用程序可以通过与物理串行端口相同的方式进行访问。操作系统可以将 COM 端口抽象化并将其视为类似于文件共享的对象。虚拟 COM 的两个公共协议为 CDC ACM 或 MCT。通过 RS-485 端口连接时,应用程序可能完全不运行。请获取一个 RS-485 转 RS232 转换器以将 RS-485 用作 COM 端口。 重要:
仅当连接到客户端工作站上的 COM1 或 COM2 时,某些应用程序才能一致地识别设备(例如,签名板)。
将客户端 COM 端口映射到服务器 COM 端口
可以通过以下三种方式将客户端 COM 端口映射到 Citrix 会话:
- Studio 策略。有关策略的详细信息,请参阅端口重定向策略设置。
- VDA 命令提示窗口。
- 远程桌面(端点服务)配置工具。
-
启用客户端 COM 端口重定向和自动连接客户端 COM 端口 Studio 策略。应用后,某些信息将在 HDX Monitor 中提供。
-
如果自动连接客户端 COM 端口无法映射该端口,则可以手动映射该端口或使用登录脚本。登录到 VDA,然后在命令提示窗口中键入:
NET USE COMX: \\CLIENT\COMZ:
或
NET USE COMX: \\CLIENT\CLIENTPORT:COMZ:
X 为 VDA 上的 COM 端口号(端口 1 到 9 可用于映射)。Z 为要映射的客户端 COM 端口号。
要确认操作是否成功,请在 VDA 命令提示窗口中键入 NET USE。显示的列表中将包含映射的驱动器、LPT 端口和映射的 COM 端口。
-
要在虚拟桌面或应用程序中使用此 COM 端口,请安装您的用户设备应用程序并将其指向映射的 COM 端口名称。例如,如果将客户端上的 COM1 映射到服务器上的 COM3,请在会话期间在 VDA 中安装您的 COM 端口设备应用程序并将其指向 COM3。使用此映射 COM 端口时,就如同在使用用户设备上的 COM 端口一样。
重要:
COM 端口映射与 TAPI 不兼容。不能将 Windows 电话应用程序编程接口 (TAPI) 设备映射到客户端 COM 端口。TAPI 定义应用程序为数据、传真和语音通话控制电话功能的标准方式。TAPI 管理信号发送,包括拨号、应答和结束通话。此外,还管理呼叫保留、呼叫转接和电话会议等补充服务。
故障排除
-
请确保您能够直接从端点访问该设备,不需要通过 Citrix。端口未映射到 VDA 时,您将不连接到 Citrix 会话。请按照设备附带的任何故障排除说明进行操作,并先确认其在本地运行。 设备连接到串行 COM 端口时,将在此处显示的配置单元中创建一个注册表项:
还可以在命令提示窗口中通过运行 chgport /query 查找此信息。
如果设备的故障排除说明未提供,请尝试打开 PuTTY 会话。选择 Session(会话)并在 Serial line(串行线)中指定 COM 端口。
可以在本地命令窗口中运行 MODE。输出可能会显示正在使用的 COM 端口以及波特/奇偶校验/数据位数/停止位数,您的 PuTTY 会话中需要这些信息。如果 PuTTY 连接成功,请按 Enter 键查看来自设备的反馈。无论您键入哪些字符,都可能会在屏幕上重复出现或被响应。如果此步骤不成功,您将无法从虚拟会话中访问该设备。
-
将本地 COM 端口映射到 VDA(使用策略或 NET USE COMX: \\CLIENT\COMZ:),并重复执行上一个步骤中相同的 PuTTY 过程,但这一次从 VDA PuTTY 执行。如果 PuTTY 无法显示错误 Unable to open connection to COM1. Unable to open serial port(无法打开与 COM1 的连接。无法打开串行端口),则表示另一个设备可能正在使用 COM1。
-
运行 chgport /query。如果 VDA 上的内置 Windows 串行驱动程序自动将 \Device\Serial0 分配给 VDA 的 COM1 端口,请执行以下操作: A. 在 VDA 上打开 CMD 并键入 NET USE。
B. 删除 VDA 上的任何现有映射(例如,COM1)。
NET USE COM1 /DELETE
C. 将设备映射到 VDA。
NET USE COM1: \\CLIENT\COM3:
D. 将 VDA 上的应用程序指向 COM3。
最后,请尝试将您的本地 COM 端口(例如,COM3)映射到 VDA 上的其他 COM 端口(非 COM1,例如 COM3)。请确保您的应用程序指向该端口: NET USE COM3: \\CLIENT\COM3
-
如果您现在看到映射的端口,则表示 PuTTY 正在运行,但不传递数据,它可能是一个争用条件。应用程序可能会在其映射之前连接并打开该端口,将其锁定以阻止其映射。请尝试以下操作之一:
- 打开相同服务器上发布的第二个应用程序。等待几秒钟时间以便端口完成映射,然后打开尝试使用该端口的真正应用程序。
-
在 Active Directory 而非 Studio 中从组策略编辑器启用 COM 端口重定向策略。这些策略为客户端 COM 端口重定向和自动连接客户端 COM 端口。可能会先处理通过这种方式应用的策略,然后再处理 Studio 策略,以保证映射 COM 端口。Citrix 策略将推送到 VDA 并存储在以下位置:
HKLN\SOFTWARE\Policies\Citrix \<user session 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\\\
软件路径> -
如非绝对必要,请勿使用 Sysinternals 发布的进程监视程序。在 VDA 上运行此工具时,请查找并过滤 COM3、picaser.sys、CdmRedirector 等对象,特别是 <your_app>.exe。所有错误都可能会显示为“访问被拒绝”或类似的错误。