[#20453] thread in loop — Yoshiki Wada <wada@...>
和田と申します。
[#20473] Comparison with Other Languages — Hideto ISHIBASHI <s34204@...>
石橋秀仁です。
まつもと ゆきひろです
石橋秀仁です。
From: Hideto ISHIBASHI <s34204@vip.cis.kurume-nct.ac.jp>
[#20475] Wrapping Regexp in C++/Windows — OZAWA Sakuro <crouton@...>
さくです。
まつもと ゆきひろです
In article <E12GWVc-0004Rq-00@ev.netlab.co.jp>,
なかだです。
まつもと ゆきひろです
[#20505] Array のサブクラス — ogino@...
荻野です。Array や Hash のサブクラスの挙動がどうもよくわかりませんので
[#20523] regexp ML — Tomoyuki Kosimizu <greentea@...2.so-net.ne.jp>
越水です。
[#20525] lib/subdirectory — gotoken@... (GOTO Kentaro)
ごとけんです
[#20526] site_ruby — gotoken@... (GOTO Kentaro)
ごとけんです
[#20534] ftpmirror-1.2.2 で @homepage へ up 不可 — Hirokazu Kiuchi <kiuchi@...>
はじめまして、きうちです。
黒田です。
素早い回答ありがとうござます、きうちです
黒田です。
きうちです
[#20554] エスケープされていないものだけを置換 — Ayanosuke <aya@...>
館林と申します。
たけうちです。
ごとけんです
なひです.
館林です。
[#20598] — "okaukio+mls" <jtz4046@...6.mnx.ne.jp>
ruby-list@netlab.co.jp のみなさん こんにちは。
片岡と申します。
おかゆきおです。
助田です.最初からこのツリーちゃんと読んでなかったんですが...
おかゆきおです。
助田です.ちょっと長いです.
おかゆきおです。
わたなべです.
おかゆきおです。
In article <38A6419D15E.469A.BXQ04723@nifty.ne.jp>,
In <200002130938.SAA17120@rose.duelists.org>,
In article <200002131054.TAA09555@mail.fb3.so-net.ne.jp>,
なかだです。
有馬です。
たかた@久しぶりの投稿です。
たかたです
たかたです
たかたです
From: "Hideaki Takata" <hideakit@d3.dion.ne.jp>
なひです.
なひです.
なひです.
From: "NAKAMURA, Hiroshi" <nakahiro@sarion.co.jp>
有馬です。
なかだです。
わたなべです.
[#20608] media watch 2000.02.08 — Noritsugu Nakamura <nnakamur@...>
[#20625] druby で 3 つのプロセス間でオブジェクトをやり取りする — 堀川 久 <vzw00011@...>
こんにちは。
こんにちは。
Masatoshi SEKI <m_seki@mva.biglobe.ne.jp> wrote:
[#20675] 括弧省略の問題? — NISHIKAWA <nyasu@...3web.ne.jp>
こんばんは。にゃす@3webです。
[#20701] call Process::waitpid with -1 — Tomoyuki Kosimizu <greentea@...2.so-net.ne.jp>
越水です。
まつもと ゆきひろです
[#20720] ruby 本の mtalkd マルチスレッド版について — Nobutaka Terauchi <europa@...>
はじめまして、寺内 信尊といいます。
[#20722] opttest.rb of optparse-0.6 — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp>
Toshです。
なかだです。
Toshです。
なかだです。
Toshです。
なかだです。
Toshです。
なかだです。
[#20723] 正規表現について — Takayuki Tanaka <tanaka@...>
始めてメールさせていただきます。
[#20733] ANN: ActiveScriptRuby — "arton" <arton@...>
はじめまして。
[#20737] Ruby/Gtk の CList にパッチ — YASUI Kentarow <kenyasui@...>
安井です。
いがらしです。返答が遅くなりすみません。
まつもと ゆきひろです
やしです。
まつもと ゆきひろです
原です。
[#20766] cvsmailer — Daiji KANEMATSU <kanematu@...>
兼松と申します。
[#20771] CGI の改行 (Ruby + Apache on Windows) — ogino@...
たびたびすみません、荻野です。またひとつ分からない点が。
[#20774] 'scripting' / 'SUKURIPUTO' — TAKAHASHI Masayoshi <maki@...>
高橋征義です。
[#20821] method object — thitoshi@... (TAKAHASHI Hitoshi)
こんにちは。鈴木@仕事中です。
まつもと ゆきひろです
たかたです
新井です。
武井です。
まつもと ゆきひろです
ごとけんです
まつもと ゆきひろです
[#20848] media watch 2000.02.18 — Noritsugu Nakamura <nnakamur@...>
[#20865] ANN: ActiveScriptRuby Update — arton <arton@...>
artonです。
[#20887] 変数ウォッチ画面ありませんか? — Itou-T15@...
ひとつ相談ですが(伊藤です)
[#20918] Ruby 本入手法 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#20923] CUI library available in Ruby — Hideto ISHIBASHI <s34204@...>
石橋秀仁です。
石橋秀仁です。
石橋秀仁です。
[#20932] [Q] array.each{|i,j|... — junji999@...
高橋と申します.
[#20944] Hash#update について — Fuyuhiko Maruyama (丸山冬彦) <fuyuhik8@...>
丸山@東工大と申します。
なかだです。
From: 中村暁史 Nakamura Akifumi <BXQ04723@nifty.ne.jp>
丸山です。
まつもと ゆきひろです
丸山です。
まつもと ゆきひろです
丸山です。
まつもと ゆきひろです
[#20959] Ruby/GTK tの動かし方 — 中村暁史 Nakamura Akifumi <BXQ04723@...>
こんにちわ、阿部です。
いがらしです。
わたなべです.
[#20965] cgi.rb BUG? — rubikitch <rubikitch@...>
るびきちです。
なかだです。
nobu.nakada@nifty.ne.jp wrote:
なかだです。
nobu.nakada@nifty.ne.jp wrote:
まつもと ゆきひろです
matz@netlab.co.jp (Yukihiro Matsumoto) wrote:
青山です。
まつもと ゆきひろです
なかだです。
[#20992] GPIB driver その後 — Makoto Tagusari <mtag@...2.so-net.ne.jp>
皆さん今晩は、田鎖です。
石橋秀仁です。
皆さん今晩は、田鎖です。
In message "[ruby-list:21083] Re: Critical Block (Re: GPIB driver その後)"
皆さん今晩は、田鎖です。
まつもと ゆきひろです
[#21024] patch - ext/socket/socket.c — GOTOU YUUZOU <gotoyuzo@...>
ごとうゆうぞうです。
[#21028] CGI.rb のドキュメント探してます — Takumi Nakamura <chapuni@...>
はじめまして。福岡在住の中村と申します。
こんにちは。
江田です。
こんにちは。
[#21042] REQ: String#to_a — Tomoyuki Kosimizu <greentea@...2.so-net.ne.jp>
越水です。
[#21073] Regexp question — Kengo Nakajima <ringo@...>
京都の中嶋です。
まつもと ゆきひろです
[#21093] RD with URL — rubikitch <rubikitch@...>
るびきちです。
なかだです。
From: nobu.nakada@nifty.ne.jp
なかだです。
From: nobu.nakada@nifty.ne.jp
Toshです。
From: Toshiro Kuwabara <toshirok@yb3.so-net.ne.jp>
Toshです。
新井です。
Toshです。
新井です。
Toshです。
新井です。
Toshです。
[ruby-list:20992] GPIB driver その後
皆さん今晩は、田鎖です。
以前、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)
# 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