シリアルポート

ほとんどの新しい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の2つです。RS-485ポート経由で接続すると、アプリケーションがまったく機能しないことがあります。RS-485をCOMポートとして使用するには、RS-485-to-RS232コンバーターを入手してください。
  • 一部のアプリケーションは、デバイス(たとえば、署名パッド)がクライアントワークステーションのCOM1またはCOM2に接続されている場合に限り、そのデバイスを一貫して認識します。

クライアントCOMポートをサーバーのCOMポートにマップする

クライアントのCOMポートをCitrixセッションにマップするには、次の3つの方法があります。

  • Studioポリシー。ポリシーについて詳しくは、「ポートリダイレクトのポリシー設定」を参照してください。
  • VDAコマンドプロンプト。
  • リモートデスクトップ(ターミナルサービス)構成ツール。
  1. [クライアントCOMポートリダイレクト][クライアントCOMポートを自動接続する] のStudioポリシーを有効にします。適用すると、一部の情報がHDX Monitorで利用可能になります。

    HDX Monitorの画像

  2. [クライアント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ポートの一覧が表示されます。

    Net useコマンドの画像

  3. そのCOMポートを仮想デスクトップやアプリケーションで使用するには、ユーザーデバイスアプリケーションをインストールし、マップされているCOMポート名を指すようにします。たとえば、クライアントのCOM1をサーバーのCOM3にマップしている場合は、COMポートデバイスアプリケーションをVDAにインストールし、セッション中にCOM3を指すようにします。この方法でマップしたCOMポートは、ユーザーデバイスのCOMポートと同じように使用できます。

重要

COMポートマッピングはTAPI対応ではありません。Windowsテレフォニーアプリケーションプログラミングインターフェイス(TAPI)デバイスをクライアントCOMポートにマップすることはできません。TAPIは、アプリケーションがデータ、ファックス、および音声通話のテレフォニー機能を制御するための標準的な方法を定義します。TAPIは、ダイヤル、応答、通話終了などのシグナリングを管理します。また、保留、転送、会議通話などの付加的サービスも管理します。

トラブルシューティング

  1. Citrixをバイパスしてエンドポイントからデバイスに直接アクセスできることを確認します。ポートがVDAにマップされていない間は、Citrixセッションに接続していません。デバイスに付属しているトラブルシューティングの指示に従って、まずデバイスがローカルに動作することを確認します。 デバイスがシリアルCOMポートに接続されている場合は、次のハイブにレジストリキーが作成されています: トラブルシューティングの画像

    この情報は、コマンドプロンプトで chgport /query を実行して確認することもできます。

    コマンドプロンプトからのトラブルシューティングの画像

    デバイスのトラブルシューティングの手順を利用できない場合は、PuTTYセッションを開いてみます。[セッション] を選択し、[シリアル回線] でCOMポートを指定します。

    PuTTYセッションによるトラブルシューティングの画像

    ローカルのコマンドウィンドウでMODEコマンドを実行すると、その出力に、使用中のCOMポート、およびPuTTYセッションで必要なボーレート/パリティ/データビット/ストップビットの情報が表示されます。PuTTY接続に成功した場合は、Enterキーを押すとデバイスからのフィードバックが表示されます。入力した文字が画面上で繰り返されるか、または応答が返されます。この手順が正常に行われない場合、仮想セッションからデバイスにアクセスすることはできません。

  2. ローカルCOMポートをVDAにマップし(ポリシーまたは NET USE COM< X >: \\CLIENT\COM< Z > を使用)、今回はVDA PuTTYから、前と同じPuTTY手順を繰り返します。PuTTYが「Unable to open connection to COM1. Unable to open serial port」というエラーで失敗する場合は、別のデバイスがCOM1を使用している可能性があります。

  3. chgport /query を実行します。VDA上のWindowsの組み込みシリアルドライバーによって、VDAのCOM1ポートに\Device\Serial0が自動的に割り当てられている場合は、次のようにします: A. VDAでコマンドウィンドウを開いて、次のコマンドを入力します: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

  4. この時点でポートがマップされていことを確認できた場合、PuTTYは動作していますがデータは渡されていないため、競合状態である可能性があります。ポートがマップされる前にアプリケーションがそのポートに接続して開き、ロックしているためにマップできない可能性があります。次のいずれかを試してみます。

    • 同じサーバーで公開されている別のアプリケーションを開きます。ポートがマップされるまで数秒待ってから、そのポートを使用しようとする実際のアプリケーションを開きます。
    • StudioではなくActive Directoryのグループポリシーエディターから、COMポートリダイレクトポリシーを有効にします。有効にするポリシーは、[クライアントCOMポートリダイレクト][クライアントCOMポートを自動接続する] です。この方法で適用されるポリシーは、Studioポリシーより前に処理され、COMポートがマップされることが保証される可能性があります。CitrixポリシーはVDAにプッシュされ、 HKLN\SOFTWARE\Policies\Citrix < user session ID >に保存されます。

    • このログオンスクリプトをユーザーに対して使用するか、またはアプリケーションを公開する代わりに使用して、VDAの任意のマッピングを削除した後に仮想COMポートを再マッピングしてから、そのアプリケーションを起動する.batスクリプトを公開します。

    @echo off NET USE COM1 /delete NET USE COM2 /delete NET USE COM1: \\CLIENT\COM1: NET USE COM2: \\CLIENT\COM2: MODE COM1: BAUD=1200 (or whatever value needed) MODE COM2: BAUD=9600 PARITY=N Data=8 Stop=1 (or whatever value needed) START C:\Program Files\<Your Software Path>\

  5. 最後の手段としては、SysinternalsのProcess Monitorがあります。VDAでこのツールを実行するときは、COM3、picaser.sys、CdmRedirectorなどのオブジェクトを検索してフィルタリングします(特に、 .exe)。「アクセスが拒否されました」などのエラーが表示されることがあります。