PRCO 管理人のページ

特設ページ
このブログについて
管理人へのご連絡はこちら
メモファイル管理&暗号化ソフト(ヤンマ) バグ、要望 まとめ
最新コメント
シンイち。(2024/07/03 01:54:27)
#1結構やり込んだ人にならお勧め出来る!ただまだシステム的なバグも結構多いので、パッケージ版出るタイミングか、何回かアップデートされたあとでも良いかも。
(2024/07/02 09:35:31)
昨年最高のエンタメだったものが今季は全然アカンので他のエンタメを模索しております。ウィズのリメイクめちゃ良さげですよね…
(2024/02/15 19:31:25)
いやホンマ。面白いコンテンツに出会う度に思います
シンイち。(2024/02/08 20:57:43)
あら、メンテナンスされてるかたはいらっしゃる感じなんですかね…。私の方でも誰でも同じようなもの作れるようにコアな部分のソース等公開したりできたら良いんですが気力がなく何も出来てません ^ ^;
moondoldo(2024/01/24 15:09:34)
OSDN(旧SourceForge.JP)が閉鎖するという話を聞いて色々見て回ってたのですが、その関連なのか「TOMBO プロジェクト日本語トップページ - OSDN」のページがとうとう見れなくなりましたね
シリアル機器のソフトウェアエミュレータを作るのに便利なツール
更新日時:2017年07月25日
プログラム / PC / Windows / ハードウェア / ソフトウェア
ちょっと仕事で関連する業務をしているのでメモ

ちょっとお仕事でシリアル機器用のWindowsアプリを触っているのですが、ハードウェア(特にシリアル機器のような簡単な作りのもの)に付属するアプリ作るときってまずエミュレータ作るのが一般的じゃないっすかね?(あくまで個人的イメージです)

でも、今のお仕事では作られてませんでした。

今後アプリを更新していくのに、ハードがないとろくにテストも出来ないなんてあり得ないと思って、プロトコルもいわゆるシリアル通信では一般的な感じで簡単なものだったのでサクっとエミュレータでも作ろうと思ったんですが、シリアル←→USBの変換ケーブルもう一個用意したり、ドライバとかから自分で作ったりしてもアホなので仮想シリアルポートドライバみたいなのでループバックのテスト出来るような汎用的なものないかな~?と探していましたら

で、ネットで調べてましたらNull-modem emulator(com0com)と言うまさにソレなツールが見つかりました。

このツールは二つの仮想COMポートの入出力の橋渡しをしてくれるツールで、例えばCOM10とCOM11と言う二つの仮想COMポートを橋渡しする設定にすると、COM10から入ってきたデータをCOM11へ渡してくれます。

他のサイトでも導入方法など解説されてますが、もっと簡単に。
まず、最新版だとドライバの署名がなくて導入にいろいろ手がかかるのでちょっと前の署名済み版使うのがいいかと思います。

com0com-2.2.2.0-x64-fre-signed.zip

ってのがそのままインストール出来て楽です。
インストール後、設定用のプロンプトが開けるので開きます(UIの設定ツールもありますが、プロンプトのが早いです)

スタートメニュ→ com0com → Setup Command Prompt

からも開けます。

最初に名前なしの二つのCOMポートドライバ CNCA0 と CNCB0 が出来ているのでこれに名前を付けて

command> change CNCA0 PortName=COM10
command> change CNCB0 PortName=COM11

とかすればループバックテストに使えるCOM10とCOM11の出来上がりです。

これで片方のアプリはCOM10を、もう片方のアプリはCOM11をオープンすると、あたかもシリアルケーブルでで繋がったかのような動作をしてくれます。

厳密にシリアル機器と同じ動作をするかと言うと微妙に違ったりもしますが。

自分の場合は片方のアプリだけを起動し、C#のシリアルポートクラスSerialPortでオープンしてまだ相手方のアプリがオープンしてない状態でWrite()メソッドを使ったらそこでフリーズしたまま帰ってこなくなりました。
(本物のハードに接続してる場合は何も無かったかのようにWriteを抜けてきました)

これはSerialPortオブジェクトにタイムアウト(SerialPort.Writetimeout)を設定すれば回避出来ましたが、気づくのにだいぶかかりました(笑)

この辺はSerialPortのシェイクハンドの設定なんかと絡んでくるんだと思いますが少なくとも同じ動作にはならなかった事例と言うことで。

でもとにかく便利です。

おかげさまであくまで適当ですが簡単なエミュレータ作れてテストデータ作りなどだいぶ楽になりました。
お勧めです。

コメント

新規コメント
書き込む前にチェックしてください