LoginSignup
11
13

More than 5 years have passed since last update.

Windowsで増えすぎたCOMポートを解放する

Last updated at Posted at 2015-11-16

WHAT

Windowsでは新しいArduinoやRS232C変換ケーブルなどを接続すると、無限にCOMポートが新しく確保されていき、そのデバイスを接続していない時でも使用中となり、そのCOMポートは別のデバイスでは使用できなくなる。
その結果COMポートの数がとんでもないことになる。

秋月電子のPICProgrammerなどでは指定できるCOMポートが20までと決まっており、「指定できねえじゃん、やべえ」を回避するための手段である。

HOW

Windowsのスタートメニューを開き、プログラムとファイルの検索かregeditを検索する。
WS000019.JPG

regedit.exeが見つかれば実行する。
WS000020.JPG

左のサイドメニューから
HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > COM Name Arbiter
を選択する。

WS000021.JPG

このCom DBの中身が使用中のポートを指しているbinary fileなのでこいつを編集する。

が、その前にPC固有で持っているCOMポートがあり、間違って解放して使用すると競合して不具合を起こしてしまうので固有のCOMポートを確認しておく。

スタートメニューからコントロールパネルを開き、デバイスマネージャーを起動する。

WS000022.JPG

COMポートを使用するデバイスを全てはずしてポート(COM と LPT)を開くと、PCの固有の通信ポートが出てくる。
これらのポートを別のCOMデバイス(Arduinoなど)で使用しようとすると、競合して不具合を起こすので、これらのポートだけは解放しないようにする。

WS000023.JPG

私のPCではCOM1とCOM2(私のと書いたが大抵のWindowsPCは1と2は使用されているように思う。)が使用されているので、この2つは解放しないようにする。

ここで先ほどのComDBというファイルだが、1byte目のLSBからCOM1,COM2,COM3…と使用中かそうでないかが0,1で表現されている。
私のPCでは、1,2を解放してはいけないという話だったので、1byte目の下位2bitは1にする必要がある。
バイナリファイルを編集するときはHEX表記されているので、
0b0000 0011 = 0x03
つまり、1byte目を03に指定してあげればよい、ということになる。

ComDBを編集するには、ComDBを右クリックし、バイナリデータの修正を選択する。
WS000024.JPG

そして、1byte目に03を与え残りをDelキーなどで消してやり、OKを押下する。
WS000025.JPG

これで解放は終了です。

Arduinoなどを新しく接続すると、解放されたCOM3から割り当てられる。

WS000026.JPG

これで無事COMポートが解放された。

11
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
13