ブログ - RubyでDXLIB2を動かす

RubyでDXLIB2を動かす

カテゴリ : 
その他
2011-1-24 16:52
JavaからDXLIB2を動かすことができたので、引き続きお試しとしてRubyでDXLIB2を動かすサンプルを作成してみた。
検証した環境は以下の通り。
Rubyのパスを通し、HWを接続したら準備完了。
  1. Rubyソース
    サンプルとして0~253のIDにPingを発行して結果をプロンプトに表示する。
    <SMPL1.rb>
    require "dl/import"
    module DXLIB2
      extend DL::Importer
      dlload "./dxlib2.dll"
      extern "int DX_OpenPort( char *, long )"
      extern "int DX_Active( int )"
      extern "int DX_Ping( int, unsigned char, int, unsigned short * )"
      extern "int DX_ClosePort( int )"
    end
    comport = "\\\\.\\COM3"
    br = 1000000
    timeout = 50
    terr = ' ' * 2
    mark = "\n"
    devid = DXLIB2.DX_OpenPort( comport, br )
    if ( devid != 0  ) then
      ret = DXLIB2.DX_Active( devid )
      if ( ret == 1 ) then
        sleep 1
        i = 0
        while ( i <= 253 )
          ret = DXLIB2.DX_Ping( devid, i, timeout, terr )
          if ( ret == 1 ) then
            printf( "\n%d alive", i )
            mark = "\n"
          else
            printf( "%s%d dead(%x)", mark, i, terr.unpack('S')[0] )
            mark = "\r"
          end
          i += 1
        end
      end
      ret = DXLIB2.DX_ClosePort( devid )
      if ( ret == 0 ) then
        print "CLOSE ERROR\n"
      end
    end
    print("\nnormal end")
  2. 実行
    a). 以下のDLLとソースファイルが同じフォルダに存在していることを確認。
    SMPL1.rb  dxlib2.dll
    b). コマンドプロンプトで実行。
    > ruby SMPL1.rb
    結果はこんな感じ。
雑感、Javaよりは簡単だった。Ruby恐るべし。

トラックバック

トラックバックpingアドレス http://www.besttechnology.co.jp/modules/d3blog/tb.php/64