我将vb项目转移到python,com接口的设置正在工作,现在我想读取数据:
# int FEISC_0xB0_ISOCmd( int iReaderHnd, unsigned char cBusAdr, unsigned char* cReqData, int iReqLen, unsigned char* cRspData, int* iRspLen, int iDataFormat )
feisc.FEISC_0xB0_ISOCmd.argtypes = c_int, c_ubyte, c_char_p, c_int, c_char_p, c_int, c_int
rspData = create_string_buffer(512);
rspDatalen = 0
iBack = feisc.FEISC_0xB0_ISOCmd(iReader, 255, b'0100', 4, rspData, rspDataLen, 0x01)我得到了以下错误:
OSError: [WinError -4021] Windows Error 0x%X这个错误意味着什么?
我更改为feisc = WinDLL('FeIsc'),现在从dll中得到一个错误,其中某个指针为0。如何才能将rdpatlen作为函数的int*?
发布于 2018-02-19 21:02:02
iRspLen应该是POINTER(c_int)类型。对于输出参数,需要创建ctype数据实例来保存结果。下面,我猜想cRspDataLen应该用输入上的响应缓冲区的大小初始化,并且很可能是根据输出上的实际大小更新的。
# int FEISC_0xB0_ISOCmd(int iReaderHnd, unsigned char cBusAdr, unsigned char* cReqData, int iReqLen, unsigned char* cRspData, int* iRspLen, int iDataFormat)
feisc.FEISC_0xB0_ISOCmd.argtypes = c_int,c_ubyte,c_char_p,c_int,c_char_p,POINTER(c_int),c_int
cReqData = b'0100'
rspData = create_string_buffer(512);
iRspLen = c_int(len(rspData))
iBack = feisc.FEISC_0xB0_ISOCmd(iReader,255,cReqData,len(cReqData),rspData,iRspLen, 0x01)https://stackoverflow.com/questions/48870662
复制相似问题