一半苹果 2021-06-04 18:12 采纳率: 100%
浏览 399
已结题

python怎样读取身份证读卡器内容?

因为某些原因,我需要用Python写一个脚本,连接神思身份证读卡器读取身份证信息后作他用,用ctypes调用sdtapi.dll文件,调用里面的函数SDT_StartFindIDCard、SDT_SelectIDCard都没有问题,但是最关键的一步,调用SDT_ReadBaseMsg函数老是出错,这个函数一共有5个参数,因为c++不怎么会,但是该函数参数我是iport = 1001,p2 =p2 = create_string_buffer(1024),p3=p2 = create_string_buffer(1024),puiCHMsgLen=0, puiPHMsgLen=0,然后老是出现

......

r = dl.SDT_ReadBaseMsg(iport,p2,puiCHMsgLen,p3,puiPHMsgLen,1)

OSError: exception: access violation writing 0x00000000

SDT_ReadBaseMsg函数参数如下:

 

  • 写回答

2条回答 默认 最新

  • szrs0913 2021-07-12 19:19
    关注
    port = c_int32(1001)
    ifopen = c_int32(1)
    pucManaInfo = create_string_buffer(4)
    pucManaMsg = create_string_buffer(8)
    dll.SDT_StartFindIDCard(port, pucManaInfo, ifopen)
    dll.SDT_SelectIDCard(port, pucManaMsg, ifopen)
    pucCHMsg = create_unicode_buffer(256)
    pucPHMsg = create_string_buffer(1024)
    puiCHMsgLen = c_uint(0)
    puiPHMsgLen = c_uint(0)
    ret = dll.SDT_ReadBaseMsg(port, pucCHMsg, byref(puiCHMsgLen), pucPHMsg, byref(puiPHMsgLen), ifopen)
    print(pucCHMsg.value)
    return pucCHMsg.value
    

    注意 byref(puiCHMsgLen) c的函数是一个指针。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月12日
  • 已采纳回答 5月4日

悬赏问题

  • ¥30 Matlab打开默认名称带有/的光谱数据
  • ¥50 easyExcel模板 动态单元格合并列
  • ¥15 res.rows如何取值使用
  • ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
  • ¥15 CSP算法实现EEG特征提取,哪一步错了?
  • ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
  • ¥15 vue3前端取消收藏的不会引用collectId
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格