嘿!你可能已经注意到了,我对ctypes有一个恼人的问题。我正在尝试与一个仪器进行通信,为此我必须使用ctypes与DLL驱动程序通信。在
到目前为止,我通过以下操作成功导出了DLL:>>> from ctypes import *
>>>maury = WinDLL( 'MLibTuners')
>>> maury
(WinDLL 'MlibTuners', handle 10000000 at 9ef9d0)
>>> maury.get_tuner_driver_version()
(_FuncPtr object at 0x009F6738)
>>> version_string = create_string_buffer(80)
>>> maury.get_tuner_driver_version(version_string)
2258920
>>> print version_string.value
'Maury Microwave MT993V04 Tuner Driver DLL, Version 1.60.00, 07/25/2007'
它工作得很好,根据文档,它应该将调谐器驱动程序DLL保存在作为参数给定的80字节字符串中。
但是,当我尝试使用名为add\u tuner的函数时,它失败了。文件是这样写的:
^{pr2}$
我试着调用上面的函数:
更改的参数是所有指针和max_range[],根据手册下面的值也是正确的,我只是不知道为什么我总是在写入0x00000000no_motors = pointer(c_short())
f_min = pointer(c_double())
f_max = pointer(c_double())
f_crossover = pointer(c_double())
maury.add_tuner(c_short(0), c_char_p('MT982EU'), c_short(serial_number), c_short(0),
c_short(1),no_motors, c_long(),
f_min,f_max,f_crossover, create_string_buffer(80))
序列号是通过引用一个变量而被截取的。有人知道该怎么做吗?,您看到我的输入有任何错误吗?在
谢谢
/马兹达克