USB シリアル機器(M5Stack・Arduino・FTDI 変換ケーブルなど)を複数台つないでいると、「COM12 は結局どの機器だったか」がすぐ分からなくなります。本ソフトは Windows のレジストリと WMI から各 COM ポートの VID/PID(機器の種別を表す番号)を読み取り、どの COM 番号がどの機種かを自動判別して一覧表示します。
| 項目 | 内容 |
|---|---|
| 動作環境 | Windows 10 / 11(64bit) |
| .NET のインストール | 不要(自己完結版で配布しています) |
| ネットワーク | 不要(USB シリアル接続の情報のみを読み取ります) |
| 照明・機器への影響 | ありません(COM ポートへの送信・書き込みは行いません)。COM 番号を変えたときだけ、その機器が一度切れてつながり直します |
| 自動更新 | 機器の抜き差しを Windows の知らせで受けてすぐ読み直し。ほかに 1 秒おきの軽い見回りと、30 秒おきの全体の読み直し |
| ツール | 向いている用途 |
|---|---|
| ComPortScanner(本書) | 今どの COM 番号にどの機種が挿さっているかを一覧で確認 |
| ComPortMonitor | 特定の COM ポートに実際に流れているシリアル通信の中身を確認 |
本ソフトは「LightJockey 道具一式 一発インストール手順」でまとめて配布されるツール群の 1 つです。単体配布は行っていません。
LjFullVerUP_latest.zip を落とします。C:\SetupAll を新しく作り、zip の中身を全部そこへ「すべて展開」します。Install-FullVerUP.cmd を右クリック →「管理者として実行」します。device_mapping.json(インストール先フォルダ内)で機種名の表示をカスタマイズできます。詳細は 5 章を参照してください。
ウィンドウは小さめ(既定 320×400 px、最小 250×300 px)で、他の作業の邪魔にならないよう常に手前に置いておける大きさです。ダークテーマの一覧画面 1 枚だけのシンプルな構成です。
| 表示 | 意味 |
|---|---|
| タイトルバー | 「COM Port Scanner (ビルド日時)」。多重起動すると複数の窓を同時に開けます |
Refresh ボタン | 設定ファイルを読み直したうえで、待たずにすぐ再スキャンします |
記録 ボタン | 機器の ID 表と変更記録の窓を開きます(9 章・10 章) |
| ボタン右の状態ラベル | 「Ready」(起動直後)/「Found N ports」(検出数)/「Error」(赤字。スキャン失敗時)。幽霊 COM を外したときは「(幽霊 COM67 除外)」のように番号が出ます(4-1) |
| Port 列 | COM 番号(COM26 など)。小さい番号から順に並びます。重複は自動で除去して表示します |
| Device Name 列 | 自動判別した機種名。判別方法の優先順位は 5 章参照 |
| ID 列 | 機器の ID。シリアル番号のある機器はシリアル番号(018BF64C など)、無い機器は挿した USB の口で決まる番号(8&2dd0e749&1&0000 など)です |
| 行を右クリック | 「COM 番号を変更…」「この機器の変更記録」「ID をコピー」。行のダブルクリックでも番号の変更が開きます |
| 下部の帯(常に「Ready」) | 固定の表示欄です。検出件数はボタン右の状態ラベルで確認してください |
列の幅は見出しの境目をドラッグして変えられます。列の幅・ウィンドウの位置とサイズは、変えたその場で自動保存され、次回起動時に復元されます(7 章)。
COM ポートを開いたまま USB 機器を抜くと、Windows の COM の一覧に番号の名前だけが残ることがあります(機器はもう無く、開こうとしても「見つからない」になる)。本ソフトはこのような番号を「幽霊 COM」として一覧から外し、状態ラベルに「(幽霊 COM67 除外)」のように番号を出します。ポートを開かずに判定するので、使用中のポートには影響しません。
Windows 側に残った名前は、PC を再起動すると消えます。
Device Name 欄の表示内容は、次の優先順位で決まります。上にあるものほど優先されます。
| 優先度 | 情報源 | 内容 |
|---|---|---|
| 1(最優先) | tool_M5 連携マップ | COM 番号が一致すれば、役割名+IP アドレスをそのまま表示(6 章) |
| 2 | device_mapping.json の手動指定 | COM 番号を直接指定した機種名。末尾に (manual) と付きます |
| 3 | device_mapping.json のシリアル番号指定 | USB のシリアル番号から特定した機種名(同じ VID/PID の機器を個体ごとに区別したいとき用) |
| 4 | VID/PID 自動判定(内蔵の対応表) | 下表のとおり、レジストリの VID/PID から機種を推定 |
| 5 | Windows(WMI)の説明文 | 4 までで判別できなかった場合の予備情報 |
| 6(最後) | — | どれにも該当しなければ「Unknown Device」 |
| VID:PID | 識別名 |
|---|---|
| 303A:1001 | M5Stamp-S3 または M5Stack Core S3(Espressif ESP32-S3) |
| 303A:8120 | M5DIN Meter |
| 10C4:EA60 | M5Stack(Silicon Labs CP210x) |
| 1A86:7523 | M5Stack(CH340) |
| 2341:xxxx | Arduino(Uno / Leonardo など型番も判定) |
| 0403:xxxx | FTDI(FT232 など) |
| 067B:xxxx | Prolific PL2303 |
| 0483:xxxx | STM32(STMicroelectronics) |
| 2886:802D / 1366:0105 | Wio Terminal(本体 / J-Link デバッグポート) |
device_mapping.json にシリアル番号または COM 番号で登録してください。実行ファイルと同じフォルダ(インストール先は C:\tool_cs\ComPortScanner\)にある device_mapping.json を編集すると、機種名を上書きできます。保存したら Refresh ボタンを押すとすぐ反映されます(押さなくても 30 秒以内に反映)。
{
"deviceMappings": [
{
"name": "My M5Stamp",
"patterns": [
{ "type": "serial", "value": "8&15adb4ef&2&0000" }
]
},
{
"name": "CoreS3 + ISO RS485",
"patterns": [
{ "type": "manual", "comPort": "COM30" }
]
}
]
}
type: "serial" は USB のシリアル番号(デバイスマネージャーのプロパティで確認可)で指定、type: "manual" は COM 番号を直接指定します。
社内の M5Stack 系デバイス書き込み管理ツール「tool_M5」が生成する連携ファイルを読み込むと、単なる機種名ではなく「その機器が何の役割で、どの IP アドレスを持っているか」まで Device Name 欄に表示できます(例:SuperMiniS3-SW8 (192.168.x.x))。
device_mapping.json に "toolM5MapPath": "別のパス" を追記してください。ウィンドウの位置・サイズ・列(Port / Device Name / ID)の幅と、ID 表の窓の位置・サイズ・列の幅は、変えたその場で scanner_settings.json へ自動保存され、次回起動時に復元されます(閉じ方に関係なく残ります)。設定ファイルは実行ファイルの場所を起点に探索して読み書きするため、インストール先を移動しても動作します。
デバイスマネージャーの「ポートの設定 → 詳細設定 → COM ポート番号」と同じ変更を、一覧から直接できます。
| 表示 | 意味 |
|---|---|
| 空いています | そのまま変えられます |
| ★ 今つながっている別の機器が使用中 | 変えられません(番号がぶつかるため) |
| Windows が予約済み(過去の機器) | 以前つないだ機器がその番号を持っています。変えるときに確認が出ます(その機器をまたつなぐと番号が重なります) |
| 今の番号です | 変更はありません |
変えた番号は、その機器(ID)に結び付いて覚えられます。同じ機器を同じ USB の口に挿せば、次からも新しい番号で出ます。シリアル番号の無い機器(4 章の ID 列が 8&… の形)は、別の USB の口に挿すと別の機器として扱われ、番号も別になります。
本ソフトは、機器の ID ごとに最後の COM 番号を覚えておき、変化があると記録に追記します。アプリを閉じている間に番号が変わった場合も、次に起動したときに記録されます。
| 出来事 | いつ残るか |
|---|---|
| 初見 | このアプリが初めて見た機器 |
| 接続 | アプリを開いている間に機器がつながった |
| 切断 | アプリを開いている間に機器が外れた |
| 番号変更 | 同じ機器が、前と違う COM 番号で現れた(デバイスマネージャーで変えた・Windows が付け直した など) |
| 手動変更 | 本ソフトから番号を変えた(8 章) |
記録 ボタン →「記録(新しい順)」タブで見られます。1 台だけ見たいときは、一覧または ID 表の行を右クリック →「この機器の変更記録」(ID 表ではダブルクリック)。
記録 ボタン →「ID 表」タブ。機器 1 台を 1 行にまとめた表です。本ソフトが見た機器に加えて、Windows が覚えている過去の COM 機器(今はつながっていない物)も並びます。並び順は「接続中 → 本ソフトの記録あり → Windows だけが覚えている物」で、それぞれ COM 番号順です。
| 列 | 意味 |
|---|---|
| 状態 | 接続中(太字)/未接続 |
| 今の COM | その機器に今割り当てられている番号(つながっていなくても Windows が覚えている番号) |
| 重なり | ★ n = 同じ番号を持つ別の機器が n 台ある。その機器同士を同時につなぐと番号がぶつかります。8 章でどちらかの番号を変えると直ります |
| 使った COM | 本ソフトの記録にある、その機器が今までに使った番号 |
| ID / VID:PID / 名前 | 機器の ID(4 章)、種別の番号、Windows での名前 |
| 初見 / 最後 | 本ソフトが初めて見た日時 / 最後に見た日時 |
| 番号変更 | 番号が変わった回数(番号変更+手動変更) |
| インスタンス ID | Windows が機器を見分けるための正式な ID。右クリックでコピーできます |
表の上には「機器 89 件(接続中 2・このアプリの記録あり 2)★ 番号が重なっている COM 7 個」のような合計が出ます。列見出しを押すとその列で並べ替えられます。
列の幅は、見出しの境目をドラッグして変えられます(「名前」が途中で切れるときは広げてください)。変えた幅と、窓の位置・大きさは保存され、次に開いたときも同じになります。
device_mapping.json にシリアル番号または COM 番号でマッピングを追加してください(5-2 参照)。device_mapping.json にシリアル番号マッピングを追加するか、COM 番号が固定されているなら手動マッピング(type: "manual")を使ってください。device_mapping.json の手動マッピング(COM 番号を直接指定した設定)が適用されていることを示す表示です。Refresh ボタンを押してください。8&… の形)を別の USB の口に挿すと、Windows は別の機器として扱い、別の番号を付けます。いつも同じ口に挿すか、その口で改めて番号を変えてください。ID 表で、同じ種類の機器が口ごとに別の行になっているのが確かめられます。配布フォルダの uninstall.bat をダブルクリックすると、C:\tool_cs\ComPortScanner\ とスタートメニューのショートカットが削除されます。手で消す場合の場所は次のとおりです。
| プログラム | C:\tool_cs\ComPortScanner\ |
| ショートカット | %APPDATA%\Microsoft\Windows\Start Menu\Programs\ComPortScanner.lnk |
| 機種判別の情報源 | WMI(Win32_SerialPort / Win32_PnPEntity)+レジストリ(HARDWARE\DEVICEMAP\SERIALCOMM / SYSTEM\CurrentControlSet\Enum\USB) |
| 自動スキャン | WM_DEVICECHANGE を 0.3 秒まとめて全スキャン。1000ms おきに COM 名の一覧(SERIALCOMM)だけ見て、変わった時と 30 秒おきに全スキャン。全スキャンは約 0.3 秒(大半が WMI の Win32_PnPEntity)で、区間ごとの時間を status.json の timingMs に出す。全スキャンのたびに device_mapping.json と tool_M5 連携マップを再読込 |
| 設定ファイルの探索 | 実行ファイルのフォルダから親方向へ最大 8 階層まで探索し、見つかった場所を使用(開発環境/インストール環境の双方に対応するため) |
| tool_M5 連携ファイルの既定パス | tool_M5 の _MANAGEMENT\com_device_map.json(device_mapping.json の toolM5MapPath で変更可) |
| AI 向け状態出力 | 実行ドライブの \tmp\ai_comscan\ に status.json・latest.txt・README_AI.txt をスキャンごとに出力(tool_cs の AI 操作可能設計)。status.json の各ポートには serial・instanceId も入ります |
| 変更記録 | 同じ \tmp\ai_comscan\ に history.txt(人向け)・history.jsonl(1 行 1 件の JSON)・known_devices.json(ID → 最後の COM・使った COM・回数)。最新 3000 件を残し、3500 件を超えたら古い分を消す |
| 幽霊 COM の判定 | QueryDosDevice("COMn") が「見つからない」(エラー 2)を返す番号を外す。ポートは開かない |
| COM 番号の変更 | 自分自身を管理者で --set-port <インスタンス ID> COMn 付きで起動し、Enum\<ID>\Device Parameters\PortName を書き換え、表示名(FriendlyName)を SetupAPI で直し、COM Name Arbiter\ComDB に新番号の印を立て、pnputil /restart-device で入れ直す。前の番号の予約は残す(Windows の既定の動きと同じ) |
| ID 表の「Windows が覚えている機器」 | SYSTEM\CurrentControlSet\Enum の下で、ポートの種類({4D36E978-…})の機器の PortName を、表を開いたときに 1 回読む |
| ビルド | 自己完結ビルド(win-x64)。.NET ランタイムの別途インストールは不要。ビルド日時はタイトルバーに表示 |