こんにちは。岡部です。

Thu, Jul 20, 2000 at 07:18:39PM +0900 において
Masaki Fukushima さん曰く:

> > 最近Linux上のrubyからGPIBが使えるようにruby用nigpibモジュールを作っています。
> > そこでバイナリ配列(?)を配列のままrubyに渡してrubyスクリプトで処理をしようと
> > 思っているのですが、
> > 
> >   unsigned char ret[13000]; /* ここに測定器からのデータが入ります */
> >   float rdata;
> >   scanf(ret, "%f", &rdata);
> >   printf("rdata = %f\n", rdata);
> 
> scanfで読み取れるということは、retに入っているのはバイナリ列ではな
> くて、数値を表す文字列なのではないでしょうか。
> 
> そうならば、
> 
>     retrun rb_float_new(rdata);
> 
> で、Floatオブジェクトを直接生成してしまうのが良いと思います。

 うーん。たしかにそれでも良いのですが…
測定データをCのscanfによって処理する仕様にしてしまうと、
測定器が代るたびにCでプログラムを書き直さなくてはならなくなります。
GPIBカードに依存する部分はCで書かなくてはならないと思うのですが、
GPIBカードにつないだGPIB機器に依存する部分はrubyで書きたいのです。
# わがままでしょうか? (^^;;

しかもこのret配列は

  (long int型 この後に続く要素の数)(float型データ)(float型データ)…

みたいな形式になることもありましてCで変換してしまうのは負けっぽいです。

scanfのような変換をこーイイ感じに抽象化してくれるモジュールを
書くべきなんでしょうか…?

-- 
Tokyo Metropolitan University     Kiwamu Okabe
 Mail: kiwamu / debian.or.jp
 URL:  http://silica.eei.metro-u.ac.jp/~kiwamu/