web-dev-qa-db-ja.com

Windows XPでUSBシリアルドングル用の安定したCOMポートを取得するにはどうすればよいですか?

組み込みシステムを開発していて、通信用のシリアルポートが必要です。

WindowsではXP USBシリアルポートドングルの番号が動き続けるため、スクリプトやメイクファイルでの使用が困難になります(たとえば、組み込みのブートローダーを介したNXPコントローラーのフラッシュプログラミングやターゲットと2つのラボデバイスを同時に制御します)。

そのようなドングルのCOMポートを修正する方法はありますか? Linuxでは、FTDIドングルのシリアル番号と照合することでudevを介してこれを行うことができます(この質問への回答を検索している間、 私が今与えたこの回答 を参照してください)。

6
starblue

私の経験では、デバイスを毎回まったく同じUSBポートに接続すると、同じCOMポート番号が取得されます。

別のUSBポートに接続する必要がある場合は、デバイスに割り当てられているポート番号を変更することもできます(デバイスマネージャー、COMポートのプロパティの編集)。以前は、デバイスにCOMポート番号のラベルを付けてから、ラップトップの各USBポートに接続し、接続されている場所に関係なく、COMポートをその番号に再割り当てしました。

5
tomlogic

FTDIドライバーは、接続されているデバイスのシリアル番号によって、シリアルポートを同じCOMポートに割り当てます。したがって、USBポートに関係なく、ポートは同じままである必要があります。ただし、新しいUSBデバイスを接続すると、以前に割り当てられたCOMポートは再利用されません。

FTDIには アプリノート プロセスをより詳細に説明しています。

Prolificドライバーで一般的な安定性の問題が発生したため、Prolific USB-シリアルデバイスを使用せず、それらのマッピング戦略についてコメントできません。

11
djs

ComPortMan を使用して、COMポート番号をデバイスにバインドします。 ヘルプページ から取得した例を次に示しますComPortMan.INI

[ComPorts10]
DeviceID=USB\VID_067B&PID_2517
PortName=COM5

[ComPorts20]
DeviceID=USB\VID_1234&PID_5678
PortName=COM6

注:これを機能させるには、デバイスIDに*を追加する必要がある場合があります。

2
Jimadine

すべてのFTDIデバイスにはシリアル番号があります。利用可能なFTDIデバイスを列挙(ループ)するときは、ソフトウェアにシリアル番号があります。はい、一度に多数の複数のFTDIデバイスを接続できます。ユーザーに適切なものを選択するように依頼してください。端末。使用可能なデバイスをループするたびに、シリアル番号を保存して復元します。

1
hamish

FTDI構成ツールは、固定COMポート番号を設定し、デバイスの名前を「あなたの製品名」として表示するように変更できます。これにより、デバイスが移動した場合でも、プログラムでデバイスを簡単に見つけることができます(探しているだけではありません)。 COMポート)。

1
John U

xPの場合

usb/comデバイスのusbポートにタグを付けるか、その逆を行います。または、usb/comデバイスをすべてのusbポートに1つずつ入れ、同じ設定を設定して、どのusbポートに接続しても同じになるようにします。

注意してください!

uSBのハードウェアデバイスマネージャーの事前ポート設定は、設定がモードステータスに表示されるか、表示されない場合、モードステータス(cmd、modeを実行)と同じにはなりません

実際の9/25ピンのシリアルポートはモードステータスでは表示されません。正しい設定が行われている場合は、それらのUSB2シリアルのみが表示されます。表示されなかったり、適切な速度が表示されなかったりすると、プリンターは面白い文字などを印刷します。

モードステータスがデバイスマネージャの設定、特にボーレートと一致しない場合、デバイスは機能しません。カスタムソフトウェアが通信する前に事前にコンポートを設定できない限り。

別の問題:複数のusb2serialがある場合、同じドライバーが同じser2pl.sysを共有しているため、誤動作する可能性があります

モードを使用してusb2serialデバイスをテストします。モードを使用してcomを設定しますか?ハードウェアまたはXonXoffに対して、何も表示されないか、設定できない場合は、このデバイスのドライバーBUGまたはデバイスの一部に障害があります。それでもNONE検出条件で動作します。ハードウェアの検出が必要ない場合は問題ありません。例:チェックは印刷用にオンラインのプリンターであり、NONEはオフラインステータスを提供しません。

保存のために、私は現在1つのusb2serialデバイスのみを使用しており、2つのオンボードを備えたマザーボードを入手するか、シリアルポート用のシリアルカードを追加しています...

pl2303 usb、.. ca-42&dku-5は言うまでもなく、過去3か月間、それぞれが異なるバージョンのドライバーでのみ使用できます。ほとんどの新しいPCにはUSBポートしかありません。携帯電話用に1つのca-42(com1)、プリンター用に1つのusb2serial(com2)が見つかりました。私はとても多くの問題に直面しています。 ser2pl.sysが2で共有されていないように見えるため、1つのpl2303と1つのCH340(異なるドライブ)の問題も使用してみました。

現在、プリンターにはオンボードcom1を、携帯電話にはusb pl2303 ca-42(com2)を使用していますが、これまでのところ問題はありません。私の指を交差させます。

乾杯。

1
James Chong

「FT_INF2.0.61.242-カスタムINFファイルジェネレーター」を使用し、「初期インデックス」を割り当てられる最初のCOMポート番号(例:32)に設定します。次に、新しく生成されたものを使用してFTDIドライバーをインストールします.inf(.catファイルの自己署名が必要な場合があります)

またはftdiport.infを編集します:[FtdiPort.NT.AddService.AddReg] HKR、 "Parameters\VID_0403&PID_6001"、 "InitialIndex"、0x00010001,32

0
sgiebels

アプリケーションノートに続くFTDI で説明されているように、レジストリを編集し、次のように0x01に設定されたREG_BINARY値を作成します。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\UsbFlags\IgnoreHWSerNum {デバイスVID、PID、およびインターフェイス}

例えば:

IgnoreHWSerNum04030300

VID0403およびPID0300のすべてのUSBデバイスのシリアル番号を無視します。これらのデバイスはすべて、同じドライバーと同じCOMポートを取得します。

0
Ranmairs