2011.10.13
前へ
次へ
目次へ戻る
ホームページトップへ戻る

ワンボードマイコンをつくろう!(パソコンの原点はここから始まった) TK80ソフトコンパチブル!8080、Z80マシン語からBASICまでこれ1台でこなせます

[第124回]


●使われていないCOMポートの「使用中」を解除

USB−シリアル変換装置などを使っていると、接続するたびに新しいCOMポート番号が割り当てられてしまい、しかもその装置を外してもそのときに割り当てられたCOMポート番号が「使用中」のまま残ってしまうことがあります。
やっかいなことにその「使用中」のCOMポート番号は普通にデバイスマネージャを開いても表示されませんから、削除することもできません。

あ。いや、表示する方法がありました。
それについてはあとで説明をいたします。

使われていないCOMポート番号の「使用中」を解除するにはレジストリを操作します。
レジストリを「誤って」変更するとシステムが不安定になったり、いろいろ困ったことがおきる可能性がありますから、ここは自己責任でお願いします。

レジストリの編集はregeditで行ないます。
regeditは「ファイル名を指定して実行」で指定して使います。
「ファイル名を指定して実行」はWindows7ではみつけにくいところに移動してしまいました。
「スタート」→「すべてのプログラム」→「アクセサリ」→「ファイル名を指定して実行」の順にアクセスして、やっと出てきます。

regeditと入力して[OK]をクリックします。

「レジストリエディター」が開きます。

[HKEY_LOCAL_MACHINE]→[SYSTEM]→[CurrentControlSet]→[Control]→[COM Name Arbiter]の順にクリックします。

右側に表示される「ComDB」を右クリックします。

「バイナリデータの修正」をクリックします。

「バイナリ値の編集」が開きます。

ここで表示されている値について簡単に説明をいたします。
8ビットの値が16進数で表示されています。
その各ビットがそれぞれCOMポート番号の使用状況を示します。
最初の8ビット(1F)がCOM1〜COM8で、次の8ビットがCOM9〜COM16です。
使用済みが1、未使用が0で表されます。
1Fは00011111ですから、COM1、2、3、4、5が使用済みでCOM6〜8が未使用です。
ここで使用されていないのに使用中になっているCOM3〜5を未使用にするには、その対応するビットを0にすればいいのですから、00000011つまり03にすればいいということになります。

変更の仕方にクセがあります。

[→]キーで値の後にカーソルを移動し、そこで[BackSpace]で値を削除します。
そうしておいてから、数字キーで値を入力します。
最後に[OK]をクリックします。

先頭の値が03になりました。

画面右上の[X]をクリックしてレジストリエディタを終了します。

あらためてUSB・シリアル変換ケーブルを接続して、デバイスマネージャで確認してみました。

COM3以降が削除されたために、COM3が割り当てられました。
でもこのUSB・シリアル変換ケーブルはCOM6からCOM2に変更したため、COM2として認識されると思ったのですが…。

それはともかくとしまして、このマザーボードの場合には通信ポートはCOM1だけですから、それならレジストリエディタでCOM1のみを残してほかのビットは全部0にしてしまったほうがよかったのかもしれません。
00000001(01)です。

ただ上でもちょっと書いたことなのですが、COM2はマザーボード上に存在しなくて空いていても、COM2は飛ばしてCOM3から順に、通信ポートに割り当てられるようです。
前回はCOM6から空いていたCOM2に強制的に変更したのですが、それはどうも記録されないようで、一旦USB・シリアル変換ケーブルを外したところCOM2は「未使用」に戻ってしまったようです。
しかし、再度USB・シリアル変換ケーブルを接続したところ、COM2ではなくてCOM3が割り当てられました。

レジストリエディタで確認してみましたら、05になっていますから、確かにCOM2は未使用になっています。

なぜこういうことになったのか、本当のところはわかりません。
ま。しかし。確かにCOM1、COM2は不用意に削除などしないほうがよいかと思います。

●デバイスマネージャーで削除できるようにする

このページの最初のところで、現在は使われていないのに「使用中」になっているCOMポートはデバイスマネージャでは表示されません、と書きました。
確かにその通りなのですが、それを表示させる方法があることがわかりました。

この方法はさきほどのレジストリエディタによる方法よりははるかに安全ですが、それでも慎重に作業しないと困ったことになる可能性もありますから、十分な注意が必要です。

DOSプロンプトを開きます。
キーボードから次の2行を入力します(行の終わりには[Enter]を入力します)。
set devmgr_show_nonpresent_devices=1
start devmgmt.msc


デバイスマネージャーが開きます。

[表示]を右クリックして、[非表示のデバイスの表示]をクリックしてチェックを入れます。

そのあと「ポート(COMとLPT)」の前の[+]をクリックすると、隠れていたCOMポートが表示されます。

この画面はWindowsXPのものです。
実はWindows7でも同じことを行なったのですが(その上の2つの画像はWindows7)、隠れているポートは表示されませんでした。

WindowsXPでは現在は接続されていないが、過去に接続してドライバがインストールされているものは全て表示されるようです。
薄い灰色で表示されているのがそのポートです。
この中から不要なポートを選択して削除します。

ただここで注意しなければならないのは、不要なものだけが表示されているわけではない、ということです。
現在は灰色で表示されているけれど、そのデバイスを接続すれば、再びそのポートで認識されるものももちろん含まれていますから、そういうものを削除してしまうと、接続したときに再びドライバのインストールが必要になります。
ドライバCDROMなどがどこかにいってしまって手元にない、というものまで削除してしまうと、そのデバイスは使えなくなってしまいますから、そのような目に遭わないためには、慎重に作業する必要があります。

なお、デバイスマネージャーでの、上の画像のような表示は、普通にコントロールパネルからデバイスマネージャーを開いたときには行なうことができません。
DOSプロンプトで上で説明した通りの入力を行なったときだけ、見ることができます。

ワンボードマイコンをつくろう![第124回]
2011.10.13upload

前へ
次へ
目次へ戻る
ホームページトップへ戻る