SSブログ

近況報告 [日常のあれやこれや]

しばらく仕事が忙しかった。新しいレンズを使ったモジュールを組み立てるための装置を立ち上げながら、評価してくれるお客さん用にその試作を並行してやった。それと同時に別のモジュールを検討してやるからサンプルよこせ、というお客さんのために工場へ行ってそのお客さんが要求するデータのための評価セットアップをでっち上げたりしてた。

いろいろな装置の光学系のメカは専門のメーカに頼んで作ってもらった。僕には旧態依然としたエアシンリダやステッピングモータをシーケンサが制御する、というのは昔はそれが当たり前と思ってたんだけど、中小企業に移ったおかげなのか、だんだんそれがあまりにゴツくて気に入らなくなってきた。少しずつ僕のやりたいような方法を取り入れていこうと思ったんだけど、そうするとソフトウェアは僕が全部書くことになってしまった。

まあ、そりゃそうだわな。だって僕が自分勝手にどれもホストはヘッドレスのMac miniで、シーケンサの代わりにRasbperry Piを使うことにしたので、設備屋さんたちみんなが恭しく「では、どうぞ、お好きなように」と退いてくれた。遠巻きにしてるみんなの視線を背中に感じながらずっとごりごり書いている。

とりあえずなんとか最小限の役割は果たすところまでは来た。でもまだまだ書かないといけないことがたくさん残っている。もちろん残りもやるけど。

でもなにがラッキーと言って、MacのOS XとRaspberry PiのRaspbianはどちらもPOSIX互換で、そのレベルでは同じソースが使える。去年シーケンサと光学測定用MacとをUDPで接続しようとしたら苦労した挙句にどうしてもうまくいかなくて結局、お互いにRS232Cのハードを追加してレガシーな通信手段で解決することになった。Mac側はUSBアダプタを買えばいいだけだったけどシーケンサは書き換えるのが結構大変だったらしい。

OS XとRaspbianだと、全く同じコードを、UDPでもTCPでも好きなようにサーバ側とクライアント側両方を書いて、それぞれでコンパイルすれば、それぞれのローカルなプロセス間と同じようにリモートで問題なく通信できる。これはデバグも簡単で便利である(LP64とILP32の違いを注意しないといけないけど)。あまりに簡単なのでちゃんと汎用の上位プロトコルを決めずにデータをやり取りするコードを安易にばかばか書いてしまいがちになってしまう。少なくともポート番号は整理しないといけない。

残念なのは、通信とハード制御とユーザインターフェイスをやろうとするとマルチスレッドは基本になるけど、OS Xで使えるGCDやNSOperationがRaspbianにはない(当たり前)ので、少なくともRaspbian側はpthreadを使って書かないといけない。pthreadはそれなりにシンプルで使いやすいんだけど、GCDに慣れてしまった年寄り頭にはそれでさえかなり煩わしい。さらにできれば、RaspbianにOS XのFoudationフレームワークがあったらユーザインターフェイス以外全く同じコードが使えるのになあ、と夢想してしまう。

いや、それは高望みでPOSIX互換のレベルでも十分恩恵は享受している。これがRaspberry PiのかわりにシーケンサだったりさらにArduinoだったりもっとダムなUSB接続のコントローラだったりするとデバグはずっと大変になっていたはず。

僕としては、シーケンサとそのラダープログラムをいい加減やめにしたいし、ぷしゅーとかうるさいエアシリンダやステッピングモータの大げさなドライバとコントローラもやたらと値段が高いうえにどうもいかつくて我慢ならなくなってきてる。もちろんそれが必要なところはあるけど、そうじゃないところもいっぱいあると僕は考えるようになってきた。それを身を以て示すためにもまだ書こうと思っている。年寄りだけど。
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

連休中のことOS XのOpenCL - その23 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。