【发布时间】:2015-11-04 08:52:37
【问题描述】:
我想通过其 DLL 连接光谱仪,其中一个功能定义为
UINT UAI_SpectrometerOpen(unsigned int dev, void** handle, unsigned int VID, unsigned int PID)
来自文档,dev 是指定光谱仪的索引 handle is 返回光谱仪的句柄指针 VID 是提供指定的 VID PID 是提供指定的 PID dev, VID, PID 是已知的,但我不知道如何设置句柄。 我当前的代码是
import ctypes
otoDLL = ctypes.CDLL('UserApplication.dll')
spectrometerOpen = otoDLL.UAI_SpectrometerOpen
spectrometerOpen.argtypes = (ctypes.c_uint, ctypes.POINTER(c_void_p),
ctypes.c_uint, ctypes.c_uint)
spectrometerOpen.restypes = ctypes.c_uint
handle = ctypes.c_void_p
errorCode = spectrometerOpen(0, handle, 1592, 2732)
当我运行上面的代码时,我得到了错误
runfile('C:/Users/Steve/Documents/Python Scripts/otoDLL.py', wdir='C:/Users/Steve/Documents/Python Scripts')
Traceback (most recent call last):
File "<ipython-input-1-73fe9922d732>", line 1, in <module>
runfile('C:/Users/Steve/Documents/Python Scripts/otoDLL.py', wdir='C:/Users/Steve/Documents/Python Scripts')
File "C:\Users\Steve\Anaconda3\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 685, in runfile
execfile(filename, namespace)
File "C:\Users\Steve\Anaconda3\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 85, in execfile
exec(compile(open(filename, 'rb').read(), filename, 'exec'), namespace)
File "C:/Users/Steve/Documents/Python Scripts/otoDLL.py", line 5, in <module>
spectrometerOpen.argtypes = (ctypes.c_uint, ctypes.POINTER(c_void_p),
NameError: name 'c_void_p' is not defined
我不熟悉 ctypes 和 C,谁能帮我解决这个问题。 非常感谢。
【问题讨论】: