Rubyの魔神 このページをアンテナに追加 RSSフィード

   「Ruby」は宝石の魔神のイメージ(The Jinn of the Ruby)
   [VB] [VB6] [Android] [電子工作] [個人メモ] [仕事メモ] [アイデア] [TstLink] [開発] [CE] [LTSA] [自動化] [Qt] [OCaml] [TOOLS]
   [3Dプリンタ] [RAA] [Forge]   [機能別索引] [逆引きRuby] [マニュアル] [るびま] [標準ライブラリ] [るりまサーチ] [Try! Ruby] [PRaggerまとめ] [ピジョン・ブラッド]
   [Rubyコーディング規約] [プログラミングのオキテ] [Rubyist SNS] [TOOLBIS]
   [RubyネットワークProg] [druby] [コードなにがし] [RDocテンプレ] [Ruby/Tkサンプル]
   [WAVE] [Xperia] [github] [twitterなど] [Java] [EA] [マクロ]

2006-11-30

RS232C comクラス(Windows用)

| 09:19 | RS232C comクラス(Windows用) - Rubyの魔神 を含むブックマーク はてなブックマーク - RS232C comクラス(Windows用) - Rubyの魔神 RS232C comクラス(Windows用) - Rubyの魔神 のブックマークコメント

組み込み系プログラマなのでこれがあると便利


Rubyシリアル通信ライブラリ(Windwos用)

追記 ここにすごくいいのがありました↓

Rubyシリアル通信ライブラリ(Windwos用)

TEXCELL Rubyシリアル通信ライブラリ

class Com
  attr_accessor :comno, :speed, :parity , :data , :stop
  def initialize
    @comno="1"
    @speed="9600"
    @parity="N"
    @data="8"
    @stop="1"
  end

  def comOpen(n)
    @comno=n.to_s
    modestr = "MODE COM#{@comno} BAUD=#{@speed} PARITY=#{@parity} DATA=#{@data} STOP=#{@stop}"
    system modestr
    @com = open("com#{@comno}", "r+b")#.binmode
  end
  def comClose
    @com.close
  end
  def send(x)
    @com.syswrite x    # RS232C OUT
    sleep 0.5
  end
  def recv
    strem = ''
    while c = @com.sysread(1)    # RS232C IN
        strem += c
        break if c == "\n"
    end
    strem
  end
end

com1=Com.new
com1.speed="9600"
com1.comOpen(1)
com1.send("AT\r\n")
puts com1.recv
puts com1.recv
com1.comClose

TCP/IP

| 11:54 | TCP/IP - Rubyの魔神 を含むブックマーク はてなブックマーク - TCP/IP - Rubyの魔神 TCP/IP - Rubyの魔神 のブックマークコメント

clientサンプル

require "socket"

port = 9000

s = TCPSocket.open("localhost", port)

while gets
  s.write($_)
  print(s.gets)
end
s.close

serverサンプル

require "socket"

server=TCPServer.new(9000)

sock=server.accept

while true
	line = sock.gets
	puts line
	sock.write(line)
end

sock.close

Threadサンプル1

| 12:05 | Threadサンプル1 - Rubyの魔神 を含むブックマーク はてなブックマーク - Threadサンプル1 - Rubyの魔神 Threadサンプル1 - Rubyの魔神 のブックマークコメント

Thread.start{
  while true
    print "thread 1\n"
  end
}

while true
  print "thread 2\n"
end

mutex

require "thread"

m=Mutex.new
v=0

Thread.start{
  while true
    m.synchronize{
      v=v+100
    }
  end
}

while true
  m.synchronize{
    v=v-33
  }
end

Queue

require "thread"

q=Queue.new

th = Thread.start{
  while line=q.pop
    print line
  end
}

while gets
  q.push $_
end

q.push nil
th.join

# チュートリアル: Thread

http://www2.ruby-lang.org/ja/20020315.html

トラックバック - http://ruby.g.hatena.ne.jp/garyo/20061130