Private Declare Function Syn_OpenPort Lib "Syn_IDCardRead.dll " (ByVal iPortID As Long) As Long
Private Declare Function Syn_ClosePort Lib "Syn_IDCardRead.dll " (ByVal iPortID As Long) As Long
Private Declare Function Syn_StartFindIDCard Lib "Syn_IDCardRead.dll " (ByVal iPortID As Long, ByRef pucManaInfo As String, ByVal iIfOpen As Long) As Long
Private Declare Function Syn_SelectIDCard Lib "Syn_IDCardRead.dll " (ByVal iPortID As Long, ByRef pucManaMsg As String, ByVal iIfOpen As Long) As Long
Private Declare Function Syn_ReadMsg Lib "Syn_IDCardRead.dll " (ByVal iPortID As Long, ByVal iIfOpen As Long, ByRef pIDCardData As Any) As Long
Private Type tagIDCardData
Name As String * 32
Sex As String * 4
Nation As String * 6
Born As String * 18
Address As String * 72
IDCardNo As String * 38
GrantDept As String * 32
UserLifeBegin As String * 18
UserLifeEnd As String * 18
reserved As String * 38
PhotoFileName As String * 255
End Type
Private Sub Command1_Click()
Dim ifOpen As Integer
Dim iPort As Integer
Dim iRet As Integer
Dim pucIIN As String * 4
Dim pucSN As String * 8
Dim CardMsg As tagIDCardData
/************************端口类API *************************/
int STDCALL Syn_GetCOMBaud(int iComID,unsigned int *puiBaud);
int STDCALL Syn_SetCOMBaud(int iComID,unsigned int uiCurrBaud,unsigned int uiSetBaud);
int STDCALL Syn_OpenPort(int iPortID);
int STDCALL Syn_ClosePort(int iPortID);
/************************ SAM类API *************************/
int STDCALL Syn_GetSAMStatus(int iPortID,int iIfOpen);
int STDCALL Syn_ResetSAM(int iPortID,int iIfOpen);
int STDCALL Syn_GetSAMID(int iPortID,unsigned char *pucSAMID,int iIfOpen);
int STDCALL Syn_GetSAMIDToStr(int iPortID,char *pcSAMID,int iIfOpen);
/********************身份证卡类API *************************/
int STDCALL Syn_StartFindIDCard(int iPortID,unsigned char *pucManaInfo,int iIfOpen);
int STDCALL Syn_SelectIDCard(int iPortID,unsigned char *pucManaMsg,int iIfOpen);
int STDCALL Syn_ReadMsg(int iPortID,int iIfOpen,IDCardData *pIDCardData);
10.1 vc6.0调试通过
void CSampleDlg::OnButton1()
{
// TODO: Add your control notification handler code here
int ifOpen;
int iPort;
int iRet;
unsigned char pucIIN[4];
unsigned char pucSN[8];
IDCardData CardMsg;
ifOpen=0; //是否需要打开串口
iPort=1;
iRet=Syn_OpenPort(iPort);
if (iRet==0)
{
iRet=Syn_StartFindIDCard(iPort,pucIIN,ifOpen);
if (iRet==0)
{
iRet=Syn_SelectIDCard(iPort,pucSN,ifOpen);
if (iRet==0)
{
iRet=Syn_ReadMsg(iPort,0,&CardMsg);
if (iRet==0)
{
//显示读出的信息
UpdateData(true);
m_name=CardMsg.Name;
UpdateData(false);
Syn_SendSound(0);
Syn_DelPhotoFile();
}
C中是这样定义的:
int STDCALL Syn_StartFindIDCard(int iPortID,unsigned char *pucManaInfo,int iIfOpen);
调用时:
int ifOpen;
int iPort;
int iRet;
unsigned char pucIIN[4];
ifOpen=0;//是否需要打开串口
iPort=1;
iRet=Syn_StartFindIDCard(iPort,pucIIN,ifOpen);
而翻译成VB后我是这样定义的:
Private Declare Function Syn_StartFindIDCard Lib "Syn_IDCardRead.dll" (ByVal iPortID As Long, ByRef pucManaInfo As String, ByVal iIfOpen As Long) As Long
调用时:
Dim ifOpen As Integer
Dim iPort As Integer
Dim iRet As Integer
Dim pucIIN As String * 4
ifOpen = 0
iPort = 1
pucIIN = Space(4) '在网上搜了很久,说要给这个字符串赋一个初始值。
iRet = Syn_StartFindIDCard(iPort, pucIIN, ifOpen)//这里总是返回-3而不是0,不知道是不是参数定义有问题
Private Declare Function Syn_OpenPort Lib "Syn_IDCardRead.dll" (ByVal iPortID As Long) As Long
Private Declare Function Syn_ClosePort Lib "Syn_IDCardRead.dll" (ByVal iPortID As Long) As Long
Private Declare Function Syn_StartFindIDCard Lib "Syn_IDCardRead.dll" (ByVal iPortID As Long, ByRef pucManaInfo As String, ByVal iIfOpen As Long) As Long
Private Declare Function Syn_SelectIDCard Lib "Syn_IDCardRead.dll" (ByVal iPortID As Long, ByRef pucManaMsg As String, ByVal iIfOpen As Long) As Long
Private Declare Function Syn_ReadMsg Lib "Syn_IDCardRead.dll" (ByVal iPortID As Long, ByVal iIfOpen As Long, ByRef pIDCardData As Any) As Long
Private Type tagIDCardData
Name As String * 32
Sex As String * 4
Nation As String * 6
Born As String * 18
Address As String * 72
IDCardNo As String * 38
GrantDept As String * 32
UserLifeBegin As String * 18
UserLifeEnd As String * 18
reserved As String * 38
PhotoFileName As String * 255
End Type
Private Sub Command1_Click()
Dim ifOpen As Integer
Dim iPort As Integer
Dim iRet As Integer
Dim pucIIN As String * 4
Dim pucSN As String * 8
Dim CardMsg As tagIDCardData
Private Declare Function Syn_StartFindIDCard Lib "aa" (byvaliPortID As Long, ByRef pucManaInfo As String, ByVal iIfOpen As Long) As Long
Private Declare Function Syn_SelectIDCard Lib "aa" (ByVal iPortID As Long, ByRef pucManaMsg As String, ByVal iIfOpen As Long) As Long
Private Declare Function Syn_ReadMsg Lib "aa" (ByVal iPortID As Long, ByVal iIfOpen As Long, ByRef pIDCardData As Any) As Long