私はPythonで作業しており、WinUSB(Microsoft製)を使用してこの単純なUSBデバイスと通信しようとしています. デバイスを見つけるために setupAPI 関数 SetupDiEnumDeviceInterfaces を呼び出すと、クラスとして定義した構造体オブジェクトが必要になるため、問題が発生しています。
class _SP_DEVINFO_DATA:
def __init__(self, ClassGUID, DevInst = ""):
'''flags = SPINT_DEFAULT, SPINT_REMOVED, or SPINT_ACTIVE'''
self._ClassGUID = None
self._DevInst = None
self._Reserved = None
self._cbSize = None
###Getters:
def getClassGUID(self):
return self._ClassGUID
def getDevInst(self):
return self._DevInst
def getReserved(self):
return self._Reserved
def getcbSize(self):
return self._cbSize
###Setters:
def setClassGUID(self, value):
self._ClassGUID = value
def setDevInst(self, value):
self._DevInst = value
def setReserved(self, value):
self._Reserved = value
def setcbSize(self):
self._cbSize = sys.getsizeinfo(self)
ClassGUID = property(getClassGUID, setClassGUID, None, "Class GUID")
DevInst = property(getDevInst, setDevInst, None, "Device Instance")
Reserved = property(getReserved, setReserved, None, "RESERVED: DO NOT USE")
cbSize = property(getcbSize, setcbSize, None, "CB Size. Set automatically")
エラーが発生したため、プロパティを使用してみました:
<type 'exceptions.TypeError'>: Don't know how to convert parameter
そうでなければ、このようにパラメーターを定義すると問題が解決することを読んだことがありますが、そうではなく、ここで何をすべきかわかりません。
デバイスからの読み取りとデバイスへの書き込みのみが必要なため、WinUSB を使用したいのですが、それだけです。WinUSB には必要なものがあるようですが、この問題を乗り越えるまでは、ちょっと立ち往生しています。
助言がありますか?ctypes.windll.LoadLibrary(DLL) でロードされた DLL 関数にクラス オブジェクトを渡すにはどうすればよいですか?
そして、これを行うためのより簡単な方法があれば、それも大歓迎です。
ありがとう。