[#23805] net/smtp — 佐藤 大輔 <densuke@...2.so-net.ne.jp>

佐藤です。

26 messages 2000/07/12
[#23806] Re: net/smtp — matz@... (Yukihiro Matsumoto) 2000/07/12

まつもと ゆきひろです

[#23808] Re: net/smtp — 佐藤 大輔 <densuke@...2.so-net.ne.jp> 2000/07/12

佐藤です。

[#23809] Re: net/smtp — matz@... (Yukihiro Matsumoto) 2000/07/12

まつもと ゆきひろです

[#23811] Re: net/smtp — Minero Aoki <aamine@...> 2000/07/12

あおきです。

[#23812] Re: net/smtp — matz@... (Yukihiro Matsumoto) 2000/07/12

まつもと ゆきひろです

[#23890] Ruby Entry Package and cygwin1.dll — Noritsugu Nakamura <nnakamur@...>

25 messages 2000/07/18
[#23895] Re: Ruby Entry Package and cygwin1.dll — WATANABE Hirofumi <eban@...> 2000/07/18

わたなべです.

[#23896] Re: Ruby Entry Package and cygwin1.dll — Noritsugu Nakamura <nnakamur@...> 2000/07/18

[#23897] Re: Ruby Entry Package and cygwin1.dll — Katsuyuki Komatsu <komatsu@...> 2000/07/19

小松です。

[#23898] Re: Ruby Entry Package and cygwin1.dll — WATANABE Hirofumi <eban@...> 2000/07/19

わたなべです.

[#23899] Re: Ruby Entry Package and cygwin1.dll — Katsuyuki Komatsu <komatsu@...> 2000/07/19

小松です。

[#23923] Re: [ruby-dev:10353] Re: should prohibit `module_function' for class Class — Masatoshi SEKI <m_seki@...>

11 messages 2000/07/19

[#23940] String#unpack と scanf の関係 — kiwamu <kiwamu@...>

こんにちは。岡部@東京都立大学と申します。

16 messages 2000/07/20

[ruby-list:23945] Re: String#unpack と scanf の関係

From: Makoto Tagusari <mtag@...2.so-net.ne.jp>
Date: 2000-07-20 13:28:18 UTC
List: ruby-list #23945
皆さん今晩は、田鎖です。

From: kiwamu <kiwamu@debian.or.jp>
Subject: [ruby-list:23940] String#unpack と scanf の関係
Date: Thu, 20 Jul 2000 18:48:30 +0900

>  こんにちは。岡部@東京都立大学と申します。
> 最近Linux上のrubyからGPIBが使えるようにruby用nigpibモジュールを作っています。
> そこでバイナリ配列(?)を配列のままrubyに渡してrubyスクリプトで処理をしようと
> 思っているのですが、

GPIB用のモジュールですが、私も作ってます。そろそろ安定してきたので、お披
露目しようかなと思っていたところです。岡部さんのドライバも相当安定してい
るようですが、私のドライバもこのメールの最後につけておきますのでよろしけ
れば、使ってみてください。Linux と Cygwin 環境(要 cygwin1.1 + NI GPIB
Driver)で動きます。(以前にメール添付した、Comport 関係のライブラリと合わせて
計測器の2大インターフェースを制覇した、と自分では思っています:-)

>   unsigned char ret[13000]; /* ここに測定器からのデータが入ります */
>   float rdata;
>   scanf(ret, "%f", &rdata);
>   printf("rdata = %f\n", rdata);
> 
> ではfloatな値を正常に表示できるのですが、
> C側で
> 
>   long number; /* char配列の長さ */
>   return rb_str_new(ret, number);
> 
> し、ruby側で
> 
>   r = Nigpib.readn(handle, 100) # 先程のrubyバイナリ列をrに
>   print("rdata = ", r.unpack('f'), "\n")
> 
> してもfloatな値を読めません。
> このような場合どのようにしてバイナリ列をCからrubyに渡すべきなのでしょうか?

たいていの計測器なら、これで問題ないと思うんだけど。バイト列の並びが 
big endian か little endian で、出し側、受け側を考慮しつつ考えなければな
らないことがあり、面倒な部分はあります。(C でできるんだからそういう問題
でない?)

例えば、下記ドライバなら

dev = Gpib.new("dev1") # ちょっとださい実装
dev.write("curve?") # 波形(測定)データの要求
r = "" ; r << dev.read while !dev.eoi # eoi が立つまでデータ読み込み
fdata = r.unpack("f*") # float 変換

で問題ないと思うんだけどな。(私の場合、たいてい irb から1から2行程度でつ
なげて書いてしまうことが多い)

# なんで、帰り値が文字列の場合 r を変数に使うことが多いんだろう。計測器
# 屋特有の現象でしょうか。

						'00.07.20 tag

Attachments (1)

gpib-rb.lzh (2.66 KB, Archive)

In This Thread