2006-10-20[n年前へ]
■色彩快適度の計測器

「色彩に対する人間の心理特性に基づき、色彩環境の色彩快適度を計測する」というカーラーコンフォートメータ。産業技術総合研究所とアドバンストシステムズ株式会社によるもの。産業技術総合研究所のプレスリリースを見る限り、アルゴリズムは「同系色が多いほど、快適。彩度が低いほど、快適」という具合。
2008-02-06[n年前へ]
■走る電車の車両から消える乗客の謎?
電車に乗ると、よく運転席を眺める。ガラスの向こうに見える運転席周りの表示計を覗く。面白いのが、「電車の一両に乗っている人の数」の表示計だ。グラフィカルに、そのとき「各車両に乗っている乗客数」が表示されている。
その「各車両に乗っている乗客数」は、車両重量で推定されているらしく、列車の運転中に少しづつ乗客数が変化したりする。駅と駅の間で、振動や加速度の影響のせいか、表示計上で2・3人の乗客が消えたりする。「走る電車の車両から消える乗客の謎」という言葉だけだと、まるで古典ミステリーのような現象で、何だか少し面白い。
2008-06-02[n年前へ]
■騒音メータ「きんりんくん」
町の中を歩いていると、横にきりんが立っていた。黄色くて、首が長い、あの「きりん」だ。動物園の柵の中でぽつんと立っている、あの「きりん」である。そんなきりんが柵の向こうで立っていた。
正確に書けば、町角に騒音監視ロボット「きんりんくん」が置いてあった。「JIS C 1510 」に沿って、20Hzから8kHzまでの30~120dBの範囲を、分解能0.1dBで計ってくれる高性能の黄色いロボットである。
「きんりんくん」というメーカ的なネーミングセンス、それどころか、そのネーミングそのままの形に作ってしまう、という辺りが楽しい。それに、何より、結構かわいい。
2008-07-31[n年前へ]
■「計測・解析ソフトのハック」が実験系技術者の一番のLifeHack…かもしれない。
「計測・解析ソフトウェア/ハードウェアのハック」が実験系技術者の一番のLifeHack…かもしれない、と思っています。それを逆に言うならば、実験系技術者が費やす多くの時間を、計測・解析ソフトが消費しているということになります。つまり、一番時間を消費している部分の高速化をすることが、全体の高速化に効果的だろう、ということです。
そんなこんなで、何を今更…という、Perlで「シリアル通信とユーザインターフェース自動制御」のやり方を整理しておくことにしました。なぜかというと、経験的に「計測・解析ソフトウェア/ハードウェアのハック」は、シリアル通信制御とユーザインターフェース自動制御でほとんどの場合対応できることが多いから、です。しかも、計測・解析ソフトウェア/ハードウェアを外注したりすると、時間や費用が無視できないほどかかったりするわけで、そういったシステムを簡単に作ることができるということを知っていると、結構便利であるわけです。
たとえば、RBIOシリーズのような汎用(入)出力ボードは、お小遣い程度の価格で「シリアル通信経由でのハードウェア制御をする」ことが簡単にできます。それは、「計測ハードウェアのハック」がとても簡単にできる、ということです。
そして、Windows上(あるいはWindows上で動くソフトウェア)の作業を”勝手に”プログラミングすることができれば、「計測・解析ソフトウェアのハック」も簡単にすることができます。
というわけで、「シリアル通信とユーザインターフェース自動制御」ができれば、「計測・解析ソフトウェア/ハードウェアのハック」を簡単に実現することができるわけです。
とりあえず、たとえば、Perlで「シリアル通信とユーザインターフェース自動制御」を使うには、Win32::SerialPort と Win32::GuiTest という二つのライブラリが必要です。それらのインストールは、コマンドプロンプトから、
ppm install Win32-SerialPortという風に行うことができます。もっとも、インターネットに直接アクセスすることができない Proxy 内部からであれば、
ppm install http://www.bribes.org/perl/ppm/Win32-GuiTest.ppd
set HTTP_proxy=http://proxy.hoge.com:8080といったような、Proxy対策の環境変数設定をコマンドプロンプトから前もって行っておくことが必要になります。
set HTTP_proxy_user=hogehoge
set HTTP_proxy_pass=hogehoge
あとは、シリアルポート通信ようのConfigファイルを作る、プログラムを書く、ということだけです。たとえば、
!c:\perl\bin\perlといったライブラリを読み込む宣言をした後に、ソフトウェアのユーザインターフェース周りは、
use Win32::SerialPort;
use Win32::GuiTest qw( FindWindowLike GetWindowText SetForegroundWindow MouseMoveAbsPix SendMouse GetWindowRect SendKeys);
MouseMoveAbsPix(320, 160);というような感じで、マウスやボタンやキーボードを自動で動かすことができます。また、ハードウェア周りは、
SendMouse("{LEFTCLICK}");
SendKeys($fileName);
SendKeys("{ENTER}");
my $conf_file="serialport.conf";という感じで*、スイッチやモータを適当にシリアル通信(とRB-IOのようなお手軽I/Fボードで)制御すれば良い、という具合です。午前中に秋葉原に行って部品を買って、午後にスクリプトを2,30行書けば、それで自動計測・制御システムのできあがり、というわけです。
tie *PORT, 'Win32::SerialPort',$conf_file or die; pushSwitch(0);
close PORT or warn "Can't close serialport:COM*";
sub pushSwitch{
my ($portNo) = @_;
my $text=sprintf "PCT%d%d\n",$portNo,1;
print PORT $text;
}
*(なお、ここで使用している"serialport_conf"は、こういったserialport_conf.plで作成します)




