• カテゴリ その他 の最新配信
  • RSS
  • RDF
  • ATOM

ブログ - PythonでDXLIB2を動かす

PythonでDXLIB2を動かす

カテゴリ : 
その他
2011-1-28 13:40
RubyでDXLIB2を動かすことができたので、更なるお試しとしてPythonでDXLIB2を動かすサンプルを作成してみた。
検証環境は以下の通り。
準備はRubyと同様、パスを通してHWの接続を確認。
  1. Pythonソース
    サンプルとして0~253のIDにPingを発行して結果をプロンプトに表示する。
    <SMPL1.py>
        from ctypes import *
    import sys
    # load library
    dxlib2 = cdll.LoadLibrary("dxlib2.dll")
    dxopen = dxlib2.DX_OpenPort
    dxclose = dxlib2.DX_ClosePort
    dxping = dxlib2.DX_Ping
    # set types for return and parameter of API
    dxopen.argtypes = [c_char_p, c_long]
    dxopen.restype = c_void_p
    dxclose.argtypes = [c_void_p]
    dxping.argtypes = [c_void_p, c_ubyte, c_int, c_void_p]
    # initialize
    terr = c_ushort()
    comport = "\\.\COM3"
    baudrate = 1000000
    timeout = 100
    procsw = 0
    OK = 1
    NG = 0
    cr = "\n"
    lf = "\r"
    # call API
    devid = dxopen( comport, baudrate )
    for idx in range(254):
    result = dxping( devid, idx, timeout, byref(terr) )
    if result == OK:
    sys.stdout.write( "\n%d alive" % idx )
    procsw = 0
    else:
    if procsw == 0:
    sys.stdout.write( cr )
    else:
    sys.stdout.write( lf )
    sys.stdout.write( "%d dead(%x)" % (idx,terr.value) )
    procsw = 1
    sys.stdout.flush()
    dxclose( devid )
  2. 実行
    a).以下のファイルが同一フォルダ内に存在していることを確認。
    SMPL1.py  dxlib2.dll
    b).コマンドプロンプトで実行。
    > python SMPL1.py
    結果はこんな感じ。

雑感、Rubyと同様、簡単にDynamixelの制御が可能となった。
ただ、Rubyよりもコーディングに若干のクセがあるようだ。

トラックバック

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