TeraTermマクロで、シリアルポートで読み取った値を別のプログラムに橋渡ししたかったのだが…

TeraTermのマクロを使って、シリアルポートからデータを受信して、それを他のプログラム(RubyとかJavaで作ったモノ)に渡そうとしてみました。
…が、TeraTermのマクロって、よく出来てはいるのですが…
他プログラムとの連携機能はほぼ提供されておらず、
やりたいことが素直にはできないことがわかりました…。

シリアルポートを叩きたいだけであれば、TeraTermを噛ませる必要はないのですが、今回は ZModelプロトコル等を使いたい関係で、ちょっと頑張ってみることにしました。

結果的にうまくいった方法は、TeraTermマクロで、結果をファイルに出力し、Javaプログラムではその出力されたファイルを継続的に読むことでデータ転送を実現するという方法です。

これは、TeraTermのマクロ。シリアルポートを叩いて、受信したデータを正規表現でバラして、csvファイルに書きだすという処理です。

ちなみに、実験に使うデータですが、Androidの「Bluetooth SPP Test」というアプリを使い、COMポート経由(Bluetooth経由)で、ジャイロセンサーの値を送ってみました。

こちらが、色々処理をしたいJava側です。ひたすらファイルを読み続けて、更新されたら次を読む、といった処理です。

今やろうとしていることは、そんなに転送されるデータ量が多くないので、この方法が使えそうですが…
もうちょっと良い方法があれば試したいですね。

“TeraTermマクロで、シリアルポートで読み取った値を別のプログラムに橋渡ししたかったのだが…” への1件の返信

  1. ピンバック: Mindstorm EV3 のプログラム(C/C++ TOPPERS/EV3RT)を統合開発環境で補完と共に開発し隊! | なおぶろ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*