【覚書】VBでCOM16を超えるシリアルポートを使う
まえがき
昔どこかのサイトに詳細な情報があったのだが最近ググっても見つからなかったのでここに記す(Qiitaに書けよという声もありますが)
VBで扱うシリアルポート
VB(VisualBasic)とはMicrosoft製のプログラミング言語。v6.0が1998年に登場して以来かなり使われたが近年では新たなプロジェクトに対して選択されるような言語ではない。
尤もオフィスシリーズのマクロとして(ほぼ同等機能)生き残ってはいるがそれもpythonに置き換わる噂も聞こえてきたりする。
シリアルポートの需要は個人レベルではもう殆ど無いだろう。そもそもパソコンにシリアルポートのコネクタが実装されていることもないので、どうしてもという場合にはUSB-RS232Cの変換ケーブルとかを使う。
ところが数多の企業の中ではレガシーシステムとしてまだ生き残っている。複数の試験機・計測機を接続するような場合、あまりコストをかけないことを考えるとシリアル接続でということになる。
ここで問題なのはVBがシリアルポートをCOM1からCOM16までしか扱えないということだ。実機を接続する場合は最大16の機器を接続・通信することができるがデバッグ用に仮想COMポートを使おうとするとシミュレータも同一PCの中で動かすことになるので都合扱える機器が半分になる。
VB6製アプリ(COM1)-機器Aのシミュレータ(COM2)とか。当方の関与するシステムではこれではちょっと心許ないのだ。
MSComm32.Ocxを改造
C:\Windows\SysWOW64\MSComm32.Ocxをバイナリエディタで開く。但しこのOCXのバージョンは6.1.98.16限定(他バージョンでも書き換え箇所を見つけることができたらやることは同じ)
アドレス0x49ADを10→63に書き換える。
あら不思議!COM99まで使える!
あとがき
ほぼ需要皆無の情報ですがこれでどこかの誰かが幸せになればいいな。