# -*- coding: utf-8 -*-
# usbrh.py 2011.11.29
import ctypes
class usbrh:
def __init__(self):
# USBMeter.dllの読み込み
self.dll = ctypes.windll.LoadLibrary('USBMeter')
self.dev = self.FindUSB()
def GetVers(self): # ファームウェアバージョンの取得
f = getattr(self.dll, "_GetVers@4")
f.restype = ctypes.c_char_p
f.argtypes = [ctypes.c_char_p]
return f(self.dev)
def FindUSB(self, index = 0): # モジュールの検索
self.index = ctypes.c_int(index)
f = getattr(self.dll, "_FindUSB@4")
f.restype = ctypes.c_char_p
f.argtypes = [ctypes.c_void_p]
return f(ctypes.byref(self.index))
def GetTempHumidTrue(self): # 温度・湿度の取得
temp = ctypes.c_double()
humid = ctypes.c_double()
f = getattr(self.dll, "_GetTempHumidTrue@12")
f.argtypes = [ctypes.c_char_p, ctypes.c_void_p, ctypes.c_void_p]
r = f(self.dev, ctypes.byref(temp), ctypes.byref(humid))
if r == 0:
return [temp.value, humid.value]
return None
def ControlIO(self, port, val): # LEDの制御
f = getattr(self.dll, "_ControlIO@12")
f.argtypes = [ctypes.c_char_p, ctypes.c_int, ctypes.c_int]
return f(self.dev, port, val)
if __name__ == '__main__':
import time
rh = usbrh()
print "FindUSB [%s]" % rh.dev
print "GetVers [%s]" % rh.GetVers()
n = 0
while 1:
print rh.GetTempHumidTrue()
rh.ControlIO(n & 1, n & 2)
n += 1
time.sleep(10)
2011年11月29日火曜日
USB温度・湿度計モジュール(USBRH)をPythonで使う
ストロベリー・リナックスの USB温度・湿度計モジュール(USBRH)の USBMeter.dllをPythonから使えるようにしてみた。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿