HackettHsu 2018-10-22 07:40 采纳率: 100%
浏览 1468
已采纳

python3使用ctypes有些c类型没有怎么办?

被实习作业折磨到摸不着头脑
菜狗一只,平常总是靠度娘解决问题,但这次真的搜不到了(╥╯^╰╥)
实在不想用C++......而且已经丢了很久了......
学校实习任务开发指纹仪的相关软件,调用dll函数。
问题1:
dll函数:HANDLE_stdcall sensorOpen(int index)

这个类型是句柄HANDLE,其返回值需要用到,但是Python没有直接HANDLE,我用int接收暂没出现问题,怕之后会遇到先问一个。

问题2:
dll函数:int_stdcall sensorCapture(HANDLE handle,unsigned char* imageBuffer, int imageBufferSize)//获取图像

handle就是上面那个,unsigned char* 文档解释是接收的图像即是输入的参数也会输出,后续指纹算法需要,ctypes也没有,怎么实现?
我目前使用imageBuffer = create_string_buffer(所需空间大小),但是没有采集到图像(我检验了该函数返回值,为0,即无图像)
我也试过了create_unicode_buffer,结果也一样。到底是使用方法问题还是其他导致我真的没采集到图像

问题3:(虽然前面的还没解决但先问下)(准确的说目前卡在这里)
dll函数:HANDLE stdcall BIOKEY_INIT(int License, WORD *isize, BYTE*Params, BYTE *Buffer, intImageFlag)
问题出在isize:文档描述:[in] 传入一个无符号双字节长度为22 的数组,且 isize[0]和isize[20]为传入图像宽度,isize[1]和 isize[21]为传入图像高度
这isize怎么提前定义?

我尝试使用isize = bytearray()处理,但是毕竟是双字节,光是宽度就有300多,但byte要在0-255之间,而且还不确定都是数字(我试过定义为整型数组,报错don't konw how to convert parameter 2)。作为指纹图像,虽然有函数可以修改采集图像的大小,但是太小了的话数据的完整性和可使用性就大打折扣。所以这个双字节咋整啊

问题4:
有些函数传入参数为int*,咋整......我先去看看ctypes的文档,但是我记得上次看的时候好像没有针对这种指针的...直接使用c_char_p吗?(目前没法验证这个方法是否可行,因为前面就走不通。。。)

总之目前就这些了,实习作业周三开始检查希望会的大佬帮帮我!谢谢啦!
我先滚去看文档了。。。

  • 写回答

1条回答 默认 最新

  • zqbnqsdsmd 2018-10-26 07:55
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置