吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 206|回复: 6
收起左侧

[其他求助] 华大HD-S1读卡器SDK开发包 开发求助

[复制链接]
lysuro 发表于 2024-3-27 22:07
200吾爱币
本帖最后由 lysuro 于 2024-3-27 22:13 编辑

如题, 求助大佬抛个思路, 该用什么语言开发, 给个调用device_Open函数打开设备的例子. (我依葫芦画瓢,慢慢学习)
-       淘了个华大HD-S1五合一读卡器(USB接口免驱动型), 要了SDK开发包, 卖家承诺不再提供其他任何支持. 毫无疑问, 不会开发, 特此求助.
SDK开发包
链接:https://pan.baidu.com/s/1QZuVCbQCG10JQRiEQuexfw?pwd=52pj
提取码:52pj

由于SDK里没有书写例子和测试软件, 本人又没其他语言基础, 所以简单照着文档用AutoHotKey  DllCall了一下.
result := DllCall("NaturalCard.dll\device_Open", "char*", "USB")
msgbox, %result%
结果返回非0失败
更改参"USB1"~"USB10", "USB0001"~"USB0010", "COM1"~"COM10"均失败.
华大官网打不开, 400打不通. 度来度去也没度出个123来.

开发包展开如下
SDK.zip---
               NaturalCard.dll
               NaturalCard.h
               NaturalCard.lib
               WltRS.dll
               NaturalCard_API_V1.3.docx

打开API.docx---
-     2.1.1 device_Open打开设备
-      定义:打开设备端口
-      原型
-:     long device_Open(char* szPort)
-      参数:
-      szPortUSB COM1 COM2 COM3
-      返回值:
-      0    打开设备成功;
-      非0   打开设备失败,参考状态码
-                    、、、、、、、、


记事本打开NaturalCard.h---
-              #ifndef __NATURAL_CARD_32_H__
-             #define __NATURAL_CARD_32_H__
-             //############################### 通用函数 ############################################################
-              long WINAPI device_Open(char* szPort) ;
-              long WINAPI device_Close();
-              long WINAPI device_Beep();//蜂鸣
-              long WINAPI device_Version (char* pszVersion ) ;
-              、、、、、、、、、、、、、、、、、、、、
-              #endif // __NATURAL_CARD_32_H__


记事本打开NaturalCard.lib---
-              !<arch>
-              /               1706173979              0       4016      `              m  ?  "$  #^  3?  3?  *?  *?  )B  )B  :?  :?  ;  ;  *6  *6  :  :  4?  4?  +*  +*  -?  -?  4  4  -,  -,  +?  +?  5v  5v  )?  )?  4~  4~  .?  .?  2              2              2?  2?  0?  0?  3  3  /?  /?  /   /   .(  .(  1  1  0  0  1?  1?  7   7   7?  7?  ,*  ,*  6?  6?  8   8   5?  5?  8|  8|  <n  <n  <?  <?  =l  =l  >l  >l  =?  =?  ;?  ;?  ;?  ;?  9?  9?  ,?  ,?  9   9   $?  $?  %6  %6  '>  '>  '?  '?  (<  (<  %?  %?  (?  (?  &4  &4                &?  &禵_IMPORT_DESCRIPTOR_NaturalCard __NULL_IMPORT_DESCRIPTOR NaturalCard_NULL_THUNK_DATA ?device_Open@@YGJPAD@Z __imp_?device_Open@@YGJPAD@Z ?device_Close@@YGJXZ __imp_?device_Close@@YGJXZ ?                        device_Beep@@YGJXZ __imp_?device_Beep@@YGJXZ ?device_Version@@YGJPAD@Z __imp_?device_Version@@YGJPAD@Z ?device_WRSerial@@YGJHPAD@Z __imp_?device_WRSerial@@YGJHPAD@Z ?device_ChipSerial@@YGJPAD@Z                        __imp_?device_ChipSerial@@YGJPAD@Z ?device_SwitchRF@@YGJH@Z __imp_?device_SwitchRF@@YGJH@Z ?device_PowerOn@@YGJEPAD@Z __imp_?device_PowerOn@@YGJEPAD@Z ?device_ColdPowerOn@@YGJEPAD@Z __imp_?                          device_ColdPowerOn@@YGJEPAD@Z ?device_HotPowerOn@@YGJEPAD@Z __imp_?device_HotPowerOn@@YGJEPAD@Z ?device_PowerOff@@YGJE@Z __imp_?device_PowerOff@@YGJE@Z ?device_GetStatus@@YGJEPAH@Z __imp_?                          device_GetStatus@@YGJEPAH@Z ?device_ContactAPDU@@YGJEPAD0@Z __imp_?
-              、、、、、、、、、
-              乱码一堆, 隐约看到一些函数.


结尾! 致谢各位! 谢谢!

最佳答案

查看完整内容

这套源码是我们做的,我有android和windos的源码,都是用c++做的。以下是打开设备的调用方式: void CDonseeTestDlg::OnBnClickedButton1() { int t_nRe ; CString t_strInfo ; CString t_strCom ; CString t_strTemp ; GetDlgItemText(IDC_COMBO9,t_strCom) ; m_strCom = t_strCom ; if (t_strCom == "USB") { t_nRe = device_Open("USB") ; if (t_nRe != 0) { m_isOpenUSB = false ; t_s ...

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

总有bug想害朕 发表于 2024-3-27 22:07
这套源码是我们做的,我有android和windos的源码,都是用c++做的。以下是打开设备的调用方式:
void CDonseeTestDlg::OnBnClickedButton1()
{
        int t_nRe ;
        CString t_strInfo ;
        CString t_strCom ;
        CString t_strTemp ;

        GetDlgItemText(IDC_COMBO9,t_strCom) ;
        m_strCom = t_strCom ;

        if (t_strCom == "USB")
        {
                t_nRe = device_Open("USB") ;
                if (t_nRe != 0)
                {
                        m_isOpenUSB = false ;
                        t_strInfo.Format(L"USB端口打开失败,请检查读卡器是否连接,t_nRe = %d ",t_nRe) ;
                }
                else
                {
                        m_isOpenUSB = true ;
                        //m_buttonOpen.EnableWindow(FALSE) ;
                        t_strInfo.Format(L"USB端口打开成功,t_nRe = %d ",t_nRe) ;
                        device_Beep() ;
                }
        }
        else
        {
                USES_CONVERSION;
                t_strInfo = t_strCom ;
                t_nRe = device_Open(T2A(t_strCom)) ;
                if (t_nRe != 0)
                {
                        m_isOpenCOM = false ;
                        t_strTemp.Format(L"串口打开失败,请检查读卡器是否连接,t_nRe = %d ",t_nRe) ;
                        t_strInfo += t_strTemp ;
                }
                else
                {
                        m_isOpenCOM = true ;
                        m_buttonOpen.EnableWindow(FALSE) ;
                        t_strTemp.Format(L"串口打开成功,t_nRe = %d ",t_nRe) ;
                        t_strInfo += t_strTemp ;
                        device_Beep() ;
                }
        }
        InsertInfo(t_strInfo) ;
}

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
lysuro + 1 + 1 热心回复!

查看全部评分

 楼主| lysuro 发表于 2024-3-28 13:42
总有bug想害朕 发表于 2024-3-28 08:52
这套源码是我们做的,我有android和windos的源码,都是用c++做的。以下是打开设备的调用方式:
void CDons ...

首先, 感谢回复! 谢谢!

我不懂C++语法,
大致理解为点击Button1 先通过USB端口打开设备, 打开成功就Beep(),失败再通过COM口打开设备.
方法好像没有涉及Dll操作, .h .lib这些, 我的疑惑的是机器是如何直插免驱被操控的.

因SDK包里没有任何使用方面的说明,也没有驱动和测试软件, 也不知道.Dll .h .lib怎么写进方法里. 我用AutoHotKey Dllcall("NaturalCard.dll\device_Open", "char*", "USB")能返回-11状态码(-11表示设备连接错误). 但我设备连接是没问题的, 因为有另外一个加密读卡程序可以的控制设备读卡成功. 我就想是不是我要用其他语言开发,比如要其他语言#Include .h .lib等等操作才行.  

如大佬不闲我烦的话,还请多多赐教, 感激不尽!
总有bug想害朕 发表于 2024-3-28 14:27
lysuro 发表于 2024-3-28 13:42
首先, 感谢回复! 谢谢!

我不懂C++语法,

Include .h .lib是Visual Studio项目工程应用的 你用其他语言的话比如说java只需要使用NaturalCard.dll这个动态库即可 如果要读取身份证信息需要调用WltRS.dll,我没用过AutoHotKey环境,所以无法直接给你提供支持。
 楼主| lysuro 发表于 2024-3-28 14:47
总有bug想害朕 发表于 2024-3-28 14:27
Include .h .lib是Visual Studio项目工程应用的 你用其他语言的话比如说java只需要使用NaturalCard.dll这 ...

好的, 谢谢. 我先补补C++基础知识再开帖请教.
总有bug想害朕 发表于 2024-3-28 14:56
lysuro 发表于 2024-3-28 14:47
好的, 谢谢. 我先补补C++基础知识再开帖请教.

嗯C++可能要花时间久点来调试,如果你会java的话很简单的使用JNA(JavaNativeAccess)框架分分钟就能调用成功DLL里面的接口。
 楼主| lysuro 发表于 2024-3-28 15:15
总有bug想害朕 发表于 2024-3-28 14:56
嗯C++可能要花时间久点来调试,如果你会java的话很简单的使用JNA(JavaNativeAccess)框架分分钟就能调用成 ...

多谢提醒, 这就改补补Java去.
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-29 05:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表