2008-11-19[n年前へ]
■Rubyで「シリアル通信スレッドクラス」を作る
Rubyで「(Rubyシリアル通信ライブラリ(Windows用)TEXCELL を使った)シリアル通信スレッドクラス」を作りました。ソースコードとサンプルはここに置いておきます。”Microsoft Windows VISTAではほとんど見捨てられているような”シリアルポートでの送受信をRubyでスレッドを使って行うクラスです。Queueにデータを突っ込めば「シリアル通信スレッドクラス」から自動的に送信されます。また、受信した文字列が「(指定した改行コードで)一行になるたびに」receiveイベントが呼ばれるので(また、その際にQueueを指定しておけば受信行が自動的にそのQueueに追加されていきます)、読み込みのタイミング・必要な情報がまだ途中までしか読み込まれていない場合などの処理を気にすることなく使いたい、と考えながら作ってみた「シリアル通信スレッドクラス」です。
たとえば、COM3で受信した内容をコンソールに出力するだけであれば、このようなコードで動くはずです。
require 'comThread' receiveComThread=ComThread.new({:icomno=>3}) receiveComThread.start({:receive=>true, :receiveMonitor=>true}) sleep 60 receiveComThread.stopシリアル通信モニタプログラム(シリアルポート間で送受信されている内容を眺めるプログラム)も、多分10行くらいで書けると思います。チェックせずに書いてしまうと、こんな感じになると思います。
require 'comThread' q=Queue.new receiveComThread=ComThread.new({:icomno=>3,:rq=>q}) sendComThread=ComThread.new({:icomno=>4,:sq=>q}) receiveComThread.start({:receive=>true, :receiveMonitor=>true}) sendComThread.start({:send=>true}) sleep 60 sendComThread.stop receiveComThread.stop
「計測・解析ソフトウェア/ハードウェアのハック」が実験系技術者の一番のLifeHackかもしれない…と思っています。その思いを逆に言うならば、実験系技術者が費やす多くの時間を、計測・解析処理が消費していると思っているからです。そして、一番時間を消費している部分の高速化をすることが、全体の高速化に効果的だろう、と思っているわけです。というわけで、先週末はこの「Perlでシリアル通信とユーザインターフェース自動制御のやり方を整理しておくことにしました」の部分を「Rubyでシリアル通信とユーザインターフェース自動制御を書いて整理しておくことにしました」ということをしてみたわけです。この「シリアル通信クラス」と「ユーザインターフェース自動制御」があると、結構便利な実験屋さんもいるかもしれません。
そんなこんなで、何を今更…という、Perlで「シリアル通信とユーザインターフェース自動制御」のやり方を整理しておくことにしました。なぜかというと、経験的に(既成機器をを使わざるえないことが多い)「計測・解析ソフトウェア/ハードウェアのハック」は、シリアル通信制御とユーザインターフェース自動制御でほとんどの場合対応できる、からです。
2009-11-30[n年前へ]
■NEWS今昔物語「思いこめば見えてくる?」編 (初出2004年05月00日)
5年前のNEWS(未来)を振り返ってみて思うこと
昨日、Google Japanの若きエンジニアと話していると「高校生の頃(もしかしたら、中学生の頃と言っていたかもしれません)、JavascriptでBASICインタプリタを実装した」と実に楽しげに思い出話をしてくれました。私自身が中学生の頃を考えてみると、Apple][とCommodore VIC-1001(海外ではVIC-20という型番で売られていました)という「マイコン」を持っていましたが、きちんと動くプログラムを書くことなど全然できていませんでした。しかも、「JavascriptでBASICインタプリタを実装」といったような、アプリケーション思考でなくプログラミング言語志向の発想など、絶対にすることはできませんでした。
どんな発想をすることができるか、どんなものを作ることができるか、という限界の線は、結局のところ自分自身が線引きをするのだろう、と思います。「すごいな」と思える人を見ると、「自分に対する限界線の引き方」を少し変えることができるような気がします。「思い込みパワー」を増大させることができるような気がするのです。たとえば、私は、「ピンポン」芸を見たときに、そんな「思い込みパワー増大感覚」を非常に感じた覚えがあります。「すごいな」と感じさせてくれるものを作る人、そういう人に出会いは、その出会いだけでも「自分ができること」を増やしてくれる、と思うのです。若かった頃には(良くも悪くも)気づきませんでしたが、そういったことを(良くも悪くも)感じるようになりました。いえ、なってしまいました、と書いた方が正確かもしれません。
ところで、「マイコン」という言葉も、当時と今とでは意味合いが違っています。今は、マイクロなコンピュータで、いわゆる制御用の特殊で小さなコンピュータ・チップを指すことが多いと思います。
しかし、かつて私が小中学生だった頃は、大型コンピュータに比べて、「小さな"Micro"」「個人が所有する"My"」コンピュータ、という意味で使われていました。
言葉も時代に連れ変わっていくことを実感させられます。 さて、このNEWS今昔物語シリーズは、初出が何年も前です(今回は2004年5月初出です)。ですから、下記の記事中で「先週」とか「今月」といったものも、5年以上前の「先週」「今月」になります。つまり、語句の意味合いを「少し翻訳しながら」読む必要があります。また、リンク先はなくなっているものがほとんどだとは思いますが、その点もご容赦ください。温故知新(古きを温めて新しきを知る)という言葉を頭に浮かべながら、再読頂ければ幸いです。
不惑を迎えたBASIC
先週の5月1日でプログラミング言語BASICが満40歳になった(ビデオ)。三十代以上であれば、二十年近く前のコンピュータ雑誌に掲載されたBASICプログラムをせっせと入力しながら、プログラミングを覚えた人たちも多いはずだ。
BASICなんてすぐに使われなくなる、とその頃からずっと言われ続けてきた。しかし、Windowsの世界ではVisual Basicはまだまだ現役だし、制御用のプログラマブルIC(PIC)にもBASICインタプリタが搭載されて電子工作の世界を支えていたりする。それどころか、計測・制御機器等の中では、今でもPC98(もしくはその互換機)上で動くN88-BASICが現役選手だっりする。実は、私もそんなシステムを使うことがある。システムを入れ替えたいと思いつつ、数千行のGOTO文の迷路を眺めて、ため息をつきつつメンテナンスをあきらめてしまう。
自動着色ソフトウェア「はいから」と思いこみデータベース
平成15年度未踏ソフトウェア創造事業で採択された自動着色ソフトウェア「はいから」の評価版を来月末までの期間限定で使用することができる。これは、カラー情報が少ない写真に対して、似た絵柄のカラー画像を参照することで、自動的に着色を行うソフトだ。「こんな画像はこういう色であるべきだ」という風なデータベースに基づいて、色を決めつけるわけである。
考えてみれば、似たような機能はカメラやプリンタなどでは多く使われている。例えば、(顔は綺麗であるべきと決めつけて)写真中の顔を浮き上がらせ綺麗に見せたり、記憶色を重視し肌色を生き生きとさせたりしている(血色が悪いのは良くないと決めつけ)。色に限らず、人間の「思いこみ」や「先入観・決めつけ」のデータベース構築(つまりは人が望ましいと思うイメージの構築)というのはとても重要になるかもしれない。
仮装大賞「ピンポン」芸がペプシのCMで世界の舞台へ
欽ちゃん&香取慎吾の全日本仮装大賞で視聴者をビックリさせたピンポンという芸がある。仮装した人達(その中には日本の伝統芸能の黒子もいる)により、マンガを映画化した「ピンポン」が忠実に再現され、映画The Matrixのようなカメラワークが何の特殊効果や特別な道具を使わずに表現されている。
この芸が今月下旬からペプシのCMの中に採用され、世界で放映されることになった。これまでにも、彼らの仮装芸はペット・ショップ・ボーイズの新曲"Flamboyant"のプロモーションビデオ(高速回線用、低速回線用)中で採用されていたりもする。手段は限りなくローテクであっても、要はアイデア次第で世界を舞台にすることができる、というなんともワクワクするニュースだ。
電子レンジの爆発タマゴで大ケガ
「電子レンジでゆで卵を作ると、食べようとした瞬間に爆発する爆弾タマゴができあがる」、というのはテレビ番組「探偵ナイトスクープ」で有名になった面白実験ネタだ。しかし、英国の医学雑誌British Medical Journalの最新号に掲載された爆発タマゴにより角膜が傷ついて重傷を負ったという投稿記事が掲載されニュースとなった。
技術者にとっては当たり前の面白実験料理ネタでも、そうでない人にとっては危険なものになったりする、という点でこのニュースは興味深い。関係ないが、「猫をレンジでチンして裁判が起きたという話」は実は単なる都市伝説だったということを私は最近まで知らず、恥ずかしながら本当の話だと思いこんでいた。
2010-01-08[n年前へ]
2010-06-08[n年前へ]
■「平行電極に挟まれた水」はどう動く!?
「やってみたい」と思っている実験があります。それは、水道の蛇口から落ちてくる水流に対して、平行電極を設置してみる、という実験です。平行電極に挟まれた水流が(平行電極の)中央辺りで、どんな動きをするかを眺めてみたいのです。あるいは、色んな形状の電荷を帯びた電極を近づけたときの水流の動き方を眺めてみたいな、と思うのです。
「摩擦帯電されたプラスチック定規やストローを、水道の蛇口から落ちる水に近づけると、水が曲がる」というオモシロ実験があります。実際にやってみると、確かに面白いくらいに水が曲がります。そんな実験の手順書には、「水分子の分極により、水分子は静電気に引きつけられる」という言葉が書き添えられていることが多いように思います。
「なるほど」と考えると同時に、その説明だけでは、何だかきちんと納得することができないような気にもなるのです。なぜそのように感じてしまうかというと、たとえば、もしも、「電界がどの場所でも同じ向き・大きさだったとしたら」、水分子が向きを変えることはあったとしても、一方向に動くことはないように思えてしまうわけです。プラスを帯びた部分(分けられないものに対して部分ということは間違っているかもしれませんが)がある方向に動きたがるとすれば、マイナスを帯びた部分はその逆の方向に動きたくなり、全体としてはプラスマイナスゼロ・・・ということになってしまいそうに思えてしまうからです。
しかし、「電界がどの場所でも同じ向き・大きさでない場合」には、プラスを帯びた部分とマイナスを帯びた部分でにおける電界が異なるので、全体に働く力は差し引きプラスマイナスゼロとはならずに、特定方向への力を受けるだろう、と思うのです。だから、たとえば、電荷を帯びたストローや定規がつくる電場は、そのストローや定規からの距離に応じて電界が弱まるようなものであり、つまり、「電界がどの場所でも同じ向き・大きさでない場合」に相当するために、電気双極子である水分子が力を受けるのではないか、とも想像してしまうのです。
すると、平行電極に挟まれた水流の動きを眺めてみれば、平行電極に挟まれた中央部のような「電極間に電位差があるけれども、電界の場所ごとの違いがほとんどないような部分」では、水流があまり曲がることがないさまを見ることができるのではないだろうか、と思えます。…とはいえ、それは「思える」だけで、実際に実験をしてみれば、その想像が正しそうか・間違っていそうかの見当がつくことでしょう。
というわけで、水道の蛇口から落ちてくる水流に対して、平行電極を設置してみる、という実験を、「やってみたい」と思っているのです。さてさて、一体水流は電極の中心部では曲がるのでしょうか、それとも曲がらないのでしょうか?
感電しないように気をつけながら、こんな水道の蛇口の前でエレキテルな実験をいつかしてみたいのです。そして、想像が見当違いだとしても、頭の中に「スッキリ」をひとつ増やしてみたいのです。
2010-06-26[n年前へ]
■水風船をライターの炎であぶると何が起こるか考える!? 第4回
「続々 水風船をライターの炎であぶると何が起こるか考える!?」の続きです。実験に使った水を入れた風船を観察してみることにしました。風船の中に水が満ちていた時にはわかりませんでしたが、水がある程度抜けたときのようすを撮影してみたのが下の写真です。写真を眺めてみると、火に炙(あぶ)られていた部分が何だか伸びていることがわかります。横から見ると、その部分がプックリ膨らんだ姿になってしまっています。
ということは、炎にあたっていた部分は、(実験している時にはわかりませんでしたが)熱せられる間に厚みが変わっていたようです。また、ススがついていない部分がヒトデのような形になっていますが、その(ススがついていない)ヒドデ模様の先端がピンホールになっていることが多いようにも見えます。ただし、これはそういう印象を受けるというだけで、確かではありません。応力集中し、薄くなっている部分に高温の微粒子か何かが付着して、ピンホールが生じたのでしょうか…?
実験に使ったゴムは保存してありますから、顕微鏡で観察してみたり、ススの付着状況を観察したり、ススの付着状況とピンホールの位置関係など、証拠品をもとに「どんなことが起きているのか・どんなことが起きる可能性があるのか」について、まだまだ色々と確かめてみたり・その過程を考えてみたりしたい、と思います。