-
- 2006年6月15日 21:57
- Mac | Programming | Research
研究室でいじってる某センサデバイスはBluetooth経由でシリアル通信が出来るんですが、どーもMacで使ってると怪しい挙動を示します。/dev以下にBluetoothのシリアルデバイスファイルを作ってopenすると、結構高い確率でへんなダイアログが出てきて使えません。catするとResource busyと言われたりします。
結果から先にいうと、どうも/dev以下に出来るBluetoothのデバイスファイルを使うとうまくいかないときがある、ということのようです。そもそもこのセンサデバイス自体特注なので他のデバイスも同じ不具合が出るとは限りませんが、もしかしたらAppleの実装の問題かもしれません。
というのも、/devを叩くとかいう横着をしないで、AppleのBluetoothのライブラリ(C or Objective C)からデバイスを触るときちんとアクセス出来るからです。JavaのBluetoothライブラリでもきちんとアクセス出来ます。
この不具合で数時間凹んでましたが、まぁ回避する方法が分かったのでよしとします。センサデータを取り込むQuartz Composerのパッチを作ってるのでどうせObjective Cで書きますし、AppleのBluetoothライブラリを俯瞰出来て良い経験になりました。
蛇足ですが、Appleのファイル入出力系のフレームワークは、ノーティフィケーションやデリゲートをふんだんに使っていて、とてもスマートなプログラミングスタイルを提供しています。(少なくともプログラマの視点からは)スレッドとか使わなくても非同期でがしがしできるんだから、大したもんです。可読性も良いですし、美しいです。
Comments:2
- taguchi 2006年6月16日 03:11
ふむふむ,勉強になります.
やはり/devを叩くのは乱暴な方法なんですね.
僕はその方法でおっつかっつ卒業研究してました(汗- Hiroaki 2006年6月16日 12:56
いや、これはいわゆるバッドノウハウというやつで、本来きちんとしたデバドラが書かれていれば透過的に利用出来てしかるべき問題だと思うよ。
デバイスファイルにしたら細かいエラー状況が分からなくなった、というのだったらまだ理解出来るけれど、まともに使えないというのはちょっと酷いね。
Trackbacks:0
- TrackBack URL for this entry
- http://blog.hiroaki.jp/mt/mt-tb.cgi/372
- Listed below are links to weblogs that reference
- Mac OS X で Bluetoothをいじる from Hirolog