我需要将VB6程序移植到python。 此程序使用DLL与Bentel Kyo防盗控制单元通信。 在VB6中,我以以下方式声明函数:
Public Declare Function PanelConnection Lib "C:\SupervisioneCasa\BisKyoUnit.dll" (ByVal Comando As Long, ByVal Porta As Byte, tentativi, ByRef pin As Byte, ByVal LenPin As Byte, ByRef presult As Byte) As Byte
并以这种方式调用该函数:
ExitCode = PanelConnection(&H302, 1, 1, 0, 0, Buffer(0))
我尝试以以下方式翻译python中的VB6代码:
import ctypes
hllDll = ctypes.WinDLL ("c:\\Appoggio\\BisKyoUnit.dll")
array_type = ctypes.c_byte * 255
Buffer = array_type()
hllApiProto = ctypes.WINFUNCTYPE (
ctypes.c_byte, # Return type.
ctypes.c_long, # Parameters 1 ...
ctypes.c_byte,
ctypes.c_int,
ctypes.c_byte,
ctypes.c_byte,
ctypes.c_byte) # ... thru 6.
hllApiParams = (1, "p1", 0), (1, "p2", 0), (1, "p3",0), (1, "p4",0), (1, "p5",0), (1, "p6",0),
hllApi = hllApiProto (("PanelConnection", hllDll), hllApiParams)
p1 = ctypes.c_long (302)
p2 = ctypes.c_byte (1)
p3 = ctypes.c_int (1)
p4 = ctypes.c_byte (0)
p5 = ctypes.c_byte (0)
p6 = ctypes.c_byte (Buffer)
hllApi (p1, p2, p3, p4, p5, p6)
但当我尝试运行py时,我得到了以下错误:
Traceback (most recent call last):
File "y:\Downloads\Python\Bentel.py", line 28, in <module>
p6 = ctypes.c_byte (Buffer)
TypeError: an integer is required
我错在哪里?有人能帮我吗? 谢谢
尤里
我尝试以这种方式重新编写函数:
这样,就不会返回错误。但实际上,这个电话不起作用。在
returnarray
中没有返回任何内容。 有什么帮助吗? 多谢各位相关问题 更多 >
编程相关推荐