[#20475] Wrapping Regexp in C++/Windows — OZAWA Sakuro <crouton@...>

さくです。

15 messages 2000/02/03

[#20534] ftpmirror-1.2.2 で @homepage へ up 不可 — Hirokazu Kiuchi <kiuchi@...>

はじめまして、きうちです。

12 messages 2000/02/07

[#20554] エスケープされていないものだけを置換 — Ayanosuke <aya@...>

 館林と申します。

35 messages 2000/02/07
[#20563] Re: エスケープされていないものだけを置換 — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/02/07

なひです.

[#20598] — "okaukio+mls" <jtz4046@...6.mnx.ne.jp>

ruby-list@netlab.co.jp のみなさん こんにちは。

126 messages 2000/02/08
[#20600] Re: — "Y Kataoka" <kataoka@...> 2000/02/09

片岡と申します。

[#20620] Re: — "okaukio+mls" <jtz4046@...6.mnx.ne.jp> 2000/02/10

おかゆきおです。

[#20623] Re: How to run ruby — Masaki Suketa<CQN02273@...> 2000/02/11

助田です.最初からこのツリーちゃんと読んでなかったんですが...

[#20630] Re: How to run ruby — "okaukio+mls" <jtz4046@...6.mnx.ne.jp> 2000/02/11

おかゆきおです。

[#20633] Re: How to run ruby — Masaki Suketa<CQN02273@...> 2000/02/12

助田です.ちょっと長いです.

[#20640] Re: How to run ruby — "okaukio+mls" <jtz4046@...6.mnx.ne.jp> 2000/02/12

おかゆきおです。

[#20645] Re: How to run ruby — WATANABE Hirofumi <eban@...> 2000/02/12

わたなべです.

[#20653] Re: How to run ruby — 中村暁史 Nakamura Akifumi <BXQ04723@...> 2000/02/13

[#20655] Re: How to run ruby — OZAWA Sakuro <crouton@...> 2000/02/13

In article <38A6419D15E.469A.BXQ04723@nifty.ne.jp>,

[#20657] Re: How to run ruby — Fumitake Taniguchi <whom@...3.so-net.ne.jp> 2000/02/13

In <200002130938.SAA17120@rose.duelists.org>,

[#20658] Re: How to run ruby — OZAWA Sakuro <crouton@...> 2000/02/13

In article <200002131054.TAA09555@mail.fb3.so-net.ne.jp>,

[#20661] Re: How to run ruby — nobu.nakada@... 2000/02/13

なかだです。

[#20677] Re: How to run ruby — "Hideaki Takata" <hideakit@...3.dion.ne.jp> 2000/02/13

たかた@久しぶりの投稿です。

[#20691] Re: How to run ruby — "Hideaki Takata" <hideakit@...3.dion.ne.jp> 2000/02/14

たかたです

[#20736] Re: How to run ruby — "Hideaki Takata" <hideakit@...3.dion.ne.jp> 2000/02/15

たかたです

[#20746] Re: How to run ruby — "Hideaki Takata" <hideakit@...3.dion.ne.jp> 2000/02/15

たかたです

[#20765] Re: rbsh — rubikitch <rubikitch@...> 2000/02/16

From: "Hideaki Takata" <hideakit@d3.dion.ne.jp>

[#20783] Re: rbsh — 中村暁史 Nakamura Akifumi <BXQ04723@...> 2000/02/17

[#20777] Re: Where is http-access.rb? — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/02/16

なひです.

[#20792] Re: Where is http-access.rb? — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/02/17

なひです.

[#20625] druby で 3 つのプロセス間でオブジェクトをやり取りする — 堀川 久 <vzw00011@...>

 こんにちは。

12 messages 2000/02/11
[#20628] Re: druby で 3 つのプロセス間でオブジェクトをやり取りする — Masatoshi SEKI <m_seki@...> 2000/02/11

[#20638] Re: druby で 3 つのプロセス間でオブジェクトをやり取りする — 堀川 久 <vzw00011@...> 2000/02/12

 こんにちは。

[#20722] opttest.rb of optparse-0.6 — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp>

Toshです。

15 messages 2000/02/15

[#20737] Ruby/Gtk の CList にパッチ — YASUI Kentarow <kenyasui@...>

安井です。

14 messages 2000/02/15
[#20950] Re: Ruby/Gtk の CList にパッチ — Hiroshi IGARASHI <igarashi@...> 2000/02/22

いがらしです。返答が遅くなりすみません。

[#20955] Re: Ruby/Gtk の CList にパッチ — matz@... (Yukihiro Matsumoto) 2000/02/22

まつもと ゆきひろです

[#20821] method object — thitoshi@... (TAKAHASHI Hitoshi)

45 messages 2000/02/18
[#20824] Re: method object — Masahiro Suzuki <msuzuki@...> 2000/02/18

こんにちは。鈴木@仕事中です。

[#20827] Re: method object — thitoshi@... (TAKAHASHI Hitoshi) 2000/02/18

[#20829] Re: method object — matz@... (Yukihiro Matsumoto) 2000/02/18

まつもと ゆきひろです

[#20832] Re: method object — thitoshi@... (TAKAHASHI Hitoshi) 2000/02/18

[#20885] Re: collect + find_all ==> select ? — "H.TAKEI" <takei.hideaki@...> 2000/02/21

武井です。

[#20923] CUI library available in Ruby — Hideto ISHIBASHI <s34204@...>

石橋秀仁です。

15 messages 2000/02/22

[#20944] Hash#update について — Fuyuhiko Maruyama (丸山冬彦) <fuyuhik8@...>

丸山@東工大と申します。

32 messages 2000/02/22
[#20948] Re: Hash#update について — 中村暁史 Nakamura Akifumi <BXQ04723@...> 2000/02/22

[#20960] Re: Hash#update について — rubikitch <rubikitch@...> 2000/02/23

From: 中村暁史 Nakamura Akifumi <BXQ04723@nifty.ne.jp>

[#20976] Re: Hash#update について — Fuyuhiko Maruyama (丸山冬彦) <fuyuhik8@...> 2000/02/23

丸山です。

[#20977] Re: Hash#update について — matz@... (Yukihiro Matsumoto) 2000/02/23

まつもと ゆきひろです

[#20984] Re: Hash#update について — Fuyuhiko Maruyama (丸山冬彦) <fuyuhik8@...> 2000/02/23

丸山です。

[#20985] Re: Hash#update について — matz@... (Yukihiro Matsumoto) 2000/02/23

まつもと ゆきひろです

[#20959] Ruby/GTK tの動かし方 — 中村暁史 Nakamura Akifumi <BXQ04723@...>

18 messages 2000/02/23
[#21011] Re: Ruby/GTK tの動かし方 — Yasushi Abe <yasushi@...> 2000/02/24

こんにちわ、阿部です。

[#20965] cgi.rb BUG? — rubikitch <rubikitch@...>

るびきちです。

33 messages 2000/02/23
[#20978] Re: cgi.rb BUG? — nobu.nakada@... 2000/02/23

なかだです。

[#21023] Re: cgi.rb BUG? — Kazuhiro Nishiyama <nishiyama@...1.tiki.ne.jp> 2000/02/24

nobu.nakada@nifty.ne.jp wrote:

[#21025] Re: cgi.rb BUG? — nobu.nakada@... 2000/02/24

なかだです。

[#21052] tempfile.rb BUG — Kazuhiro Nishiyama <nishiyama@...1.tiki.ne.jp> 2000/02/26

nobu.nakada@nifty.ne.jp wrote:

[#20992] GPIB driver その後 — Makoto Tagusari <mtag@...2.so-net.ne.jp>

皆さん今晩は、田鎖です。

15 messages 2000/02/23
[#21012] Critical Block (Re: GPIB driver その後) — Hideto ISHIBASHI <s34204@...> 2000/02/24

石橋秀仁です。

[#21028] CGI.rb のドキュメント探してます — Takumi Nakamura <chapuni@...>

 はじめまして。福岡在住の中村と申します。

16 messages 2000/02/25
[#21054] Re: CGI.rb のドキュメント探してます — 堀川 久 <vzw00011@...> 2000/02/26

 こんにちは。

[#21093] RD with URL — rubikitch <rubikitch@...>

るびきちです。

25 messages 2000/02/29
[#21095] Re: RD with URL — nobu.nakada@... 2000/02/29

なかだです。

[#21098] Re: RD with URL — rubikitch <rubikitch@...> 2000/02/29

From: nobu.nakada@nifty.ne.jp

[#21100] Re: RD with URL — nobu.nakada@... 2000/02/29

なかだです。

[#21101] Re: RD with URL — rubikitch <rubikitch@...> 2000/02/29

From: nobu.nakada@nifty.ne.jp

[#21103] Re: RD with URL — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/02/29

Toshです。

[#21105] Re: RD with URL — rubikitch <rubikitch@...> 2000/02/29

From: Toshiro Kuwabara <toshirok@yb3.so-net.ne.jp>

[#21108] Re: RD with URL — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/02/29

Toshです。

[#21110] rubyman ? (Re: RD with URL) — Koji Arai <JCA02266@...> 2000/02/29

新井です。

[#21111] Re: rubyman ? (Re: RD with URL) — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/02/29

Toshです。

[ruby-list:20992] GPIB driver その後

From: Makoto Tagusari <mtag@...2.so-net.ne.jp>
Date: 2000-02-23 15:06:16 UTC
List: ruby-list #20992
皆さん今晩は、田鎖です。

以前、GPIB モジュールの件で相談させていただきましたが、結局うまい解決法
は見つからず、やばそうなところを GC.disable と GC.enable で囲むことであ
る程度解決いたしました。非常に効率の悪い方法ですが、動かないよりましです。

これで安定したかと思えば、例えば 

# GPIB デバイス にはオシロスコープがつながっています
dev = Gpib.new("dev1")

cnt = 1
loop do
  print cnt," "
  # "curve?" という命令は画面の波形データを転送します。約 5 KByte
  dev.write("curve?")
  # とりあえず取り込んだデータはすべて捨てます
  dev.read	
  cnt += 1
end

と言うコマンドを実行すると数十回のループ後セグメンテーションフォルトで落
ちてしまいます。

しかし、機器の動作検証用に irb から呼び出してちょこちょこと書く分には非
常に便利で重宝しています。

Gpib 用のコンソール(?) には、NI のボードの場合 標準で ibic というプログ
ラムが付いてくるのですが、これが非常に使いにくいのです。コマンドの編集は
できないし、変数が使えないので結果は常にファイルにセーブしなければならな
いし。だからといってちょこっとしたプログラムを書くのに LabVIEW みたいな
物は大げさすぎるし。

GUI については、Ruby/Gtk に期待しております。快適な環境を手に入れること
ができました。皆さんありがとうございます。

最後に変更したソースをつけておきますので、NI の GPIB ボードを持ってる方
がいらっしゃいましたら、使ってみてください。(NI の GPIB ボードは高いから
なかなか使っている人がいないんだよね。)

						'00.2.23 tag

Attachments (1)

gpib.rb (3.1 KB, text/x-ruby)
# NI Gpib library wrapper
#

require "Win32API"

def Gpib(name = "")
  dev = Gpib.new
  dev.open(name) if name != ""
  dev
end

class Gpib

  class Error < StandardError
  end

  def initialize
    @devname = ""
    @dev = -1
    @pad = -1
    @sad = -1
    @tmo = -1
  end
  attr("pad",true)
  attr("sad",true)
  attr("tmp",true)

  def open(devname)
    @devname = devname
    r = ibfind(@devname)
    raise Gpib::Error, error_to_str(thrediberr) if r < 0
    r
  end

  def write(str)
    GC.disable
    ibfind(@devname)
    ibpad(@pad) if @pad != -1
    ibsad(@sad) if @sad != -1
    ibtmp(@tmo) if @tmo != -1
    stat,cnt = ibwrt(str)
    if (stat & 0b1000000000000000) > 0
      raise Gpib::Error, error_to_str(stat)
    end
    GC.enable
    cnt
  end

  def read(cnt=1024)
    GC.disable
    ibfind(@devname)
    ibpad(@pad) if @pad != -1
    ibsad(@sad) if @sad != -1
    ibtmp(@tmo) if @tmo != -1

    buf = ""
    loop do
      stat,b = ibrd(cnt)
      if (stat & 0b1000000000000000) > 0
	raise Gpib::Error, error_to_str(stat)
      end
      buf << b
      if (stat & 0b0010000000000000) > 0 # END bit
	break
      end
    end
    GC.enable
    buf
  end

  def rsp
    GC.disable
    ibfind(@devname)
    ibpad(@pad) if @pad != -1
    ibsad(@sad) if @sad != -1
    ibtmp(@tmo) if @tmo != -1

    stat, rsp = ibrsp
    if (stat & 0b1000000000000000) > 0
      raise Gpib::Error, error_to_str(stat)
    end
    GC.enable
    rsp
  end

#
#
#
  def error_to_str(stat)
    r = []
    err_stat = (format "%016b",stat).split(//)
    err_str = ["ERR","TMO","END","RQS","SRQI",nil,nil,"CMPL","LOK","REN","CIC","ATN","TACS","LACS","DTAS","DCAS"]

    while err_stat != []
      if err_stat.shift == "1"
	r << err_str.shift
      else
	err_str.shift
      end
    end
    "<" + r.join(",") + ">"
  end

  def ibfind(name = "dev1")
    func = Win32API.new("gpib-32","ibfind",["P"],"L")
    @dev = func.call(name)
  end

  def ibwrt(str)
    func = Win32API.new("gpib-32","ibwrt",["L","P","L"],"L")
    stat = func.call(@dev,str,str.size)
    cnt = thredibcntl
    [stat,cnt]
  end

  def ibrd(size = 1024)
    buf = "\000" * size
    func = Win32API.new("gpib-32","ibrd",["L","P","L"],"L")
    stat = func.call(@dev,buf,size)
    cnt = thredibcntl
    [stat,buf[0,cnt]]
  end

  def thredibcntl
    func = Win32API.new("gpib-32","ThreadIbcntl",[],"L")
    func.call
  end

  def thrediberr
    func = Win32API.new("gpib-32","ThreadIberr",[],"L")
    func.call
  end

  def ibrsp
    rsp = "\0"
    func = Win32API.new("gpib-32","ibrsp",["L","P"],"L")
    stat = func.call(@dev,rsp)
    [stat, rsp.unpack("c")[0]]
  end

  def ibpad(pad)
    func = Win32API.new("gpib-32","ibpad",["L","L"],"L")
    func.call(@dev,pad)
  end

  def ibsad(sad)
    func = Win32API.new("gpib-32","ibsad",["L","L"],"L")
    func.call(@dev,sad)
  end

  def ibtmo(tmo)
    func = Win32API.new("gpib-32","ibtmo",["L","L"],"L")
    func.call(@dev,tmo)
  end

end

if __FILE__ == $0
  dev = Gpib("dev1")
  dev.write("*idn?")
  print dev.read
  STDOUT.flush

  cnt = 1
  loop do 
    print cnt," "
    STDOUT.flush
    dev.write("curve?")
    dev.read 3000
    cnt += 1
    sleep (2)
  end
  
end

In This Thread

Prev Next