パソコンでシリアル通信って時代遅れのようだけど、よく使われます。
たとえば、IOTデバイスとパソコンの間で通信しようとすると最も手軽な方法です。
Arduinoへの書き込みなどもRS-232C通信+です。
さすがに今どきのパソコンにはRS-232C端子なんぞついていませんが、USBで”USBシリアルコンバーター”に接続して使います。
さて、シリアル通信のプログラムを開発する際にもっとも欲しいものがループです。
例えばCOM3—COM4とつないで接続してCOM4をTeratermなんかに接続して、開発プログラムをCOM3にしておくとなにかと捗ります。
ハードを買うのはカネかかるし面倒だ、ってことでソフトウェアを探すといろいろありますが、フリーではCom0Comっていうものが有名です。
しかしこれはれっきとしたデバイスドライバーです。Windows10ではデバイスドライバーはコードサイニングされていない限り導入はできません。
32ビット版は製作者によりサイニングされていますが、64ビット版はされていません。(されているとかいう怪しいコピーはあります)
サイニングされていないデバイスドライバーを使う場合、Windowsをテストモードで立ち上げるということになります。
かつ、デバイスドライバーをどうやってアンインストールしますか?巷にはインストールする話しかないですよ?
できなくはないですが、かなりデバイスドライバーについての知識がないと結果は無残なことになります。マイクロソフトがコードサイニングさせている理由を考えてみてください。
やってもいいんですが、ここまで頑張ろうという人はひょっとしてハードウェアが高いから、と思っていませんか?
昔からあるシリアル通信テスト機なんて高いだけで、今どき購入する意味ないです。
最近、IOTブームのおかげでリアルのUSBシリアルコンバーターって2個で700円くらいです。(Amazonで”FT232″で検索してください)
ブレッドボード(300円)にさして、ケーブル数本。別にないならビニール撚り線でもいいよ。
Com0Comを動かすために多大な犠牲を払うくらいなら、1000円、ポケットマネーで購入しませんか。
それをこんな感じでブレッドボード上で接続すれば、エミュレーターじゃなくリアルのシリアル通信テスト環境ができます。
それぞれをUSBコネクター、なければUSBハブにぶっさせばテスト環境できあがり。
電源のプラスマイナスさえ間違えなければ大丈夫。(写真はクリックすれば拡大されるからさ)
どうせ最後にハードウェアでテストするなら、最初からこれで開発すればいいじゃないの。
ほんと、Com0Comとか有料のソフトウェアエミュレータもおすすめできないです。高いしセキュリティ考えたら危険すぎる。
しかも私が経験している問題もあります。
FTDIを使っている製品って、写真にあるようなシリアルコンバーターモジュールもあれば、ケーブルに組み込まれたものもあります。
FTDIの正規のデバイスドライバーで動くとは限りません。理由はFTDIの模造品対策。
中国製のCH340だったということがよくあるのです。
シリアルコンバーターすら作れない国、日本に住んでいてバカにしてはいけません。CH340はUSBシリアルコンバーターとしては優秀です。
このようなハードウェアの問題をエミュレーターを使っているのでは気づきもしないでしょう。