#ifndef _DLL_API_H
#define _DLL_API_H
#ifdef _DLL_API_H
#define BY618_108_API __declspec(dllexport)
#else
#define BY618_108_API __declspec(dllimport)
#endif
////////函数返回值/////////
// 0x00:成功
// 0x01:通讯端口号不合法、或通讯端口打开失败等
// 0x60:SAM不能接收命令
// 0x80:(卡认证时)寻找居民身份证失败
// 0x81:(卡认证时)选择居民身份证失败
// 0x9F:函数参数长度错误
// 0x90:其他未知错误
////////////调用流程说明//////////
// 1、打开通讯端口 -> 2、循环调用卡认证函数 到该函数返回值为0为止 -> 3、读卡 -> 4、获取字段信息或BMP图片 -> 5、关闭通讯端口。
//////////////////////////////////
/////////////////接口说明//////////////
//================基本功能接口函数定义====================//
//********************************************
//打开通讯端口。
//串口:1到16; USB口:1001到1016。
//参数iComm取值。比如阅读器连到COM5,参数传入5;要打开第一个USB接口设备,参数传入1001。
//********************************************
extern "C" BY618_108_API int WINAPI SNBC_InitComm(int iComm);
//卡认证。若卡片放置后发生读卡错误,需移走卡片重新放置并认证。
extern "C" BY618_108_API int WINAPI SNBC_Authenticate();
//////////////////////////////////////////////////////////////
//读卡。无参数,默认路径为当前可执行文件路径。
extern "C" BY618_108_API int WINAPI SNBC_ReadContent();
//*******************************************
//获取姓名信息。
//参数1: 返回结果字符串,
//参数2: 调用者期望获取得到的字符串长度。该长度若大于实际结果长度,返回字符串以实际结果为准;小于实际结果长度,返回截取后的字符串结果。
//以下各字段雷同。
//*******************************************
extern "C" BY618_108_API int WINAPI SNBC_GetName(char* , int);
//获取性别信息。参数解释同上。
extern "C" BY618_108_API int WINAPI SNBC_GetSex(char* , int);
//获取出生信息。参数解释同上。
extern "C" BY618_108_API int WINAPI SNBC_GetBirth(char* , int);
//获取民族信息。参数解释同上。
extern "C" BY618_108_API int WINAPI SNBC_GetNation(char* , int);
//获取身份证号码信息。参数解释同上。
extern "C" BY618_108_API int WINAPI SNBC_GetID(char* , int);
//获取住址信息。参数解释同上。
extern "C" BY618_108_API int WINAPI SNBC_GetAddress(char* , int);
//获取签发机关信息。参数解释同上。
extern "C" BY618_108_API int WINAPI SNBC_GetDepartment(char* , int);
//获取最新住址信息。参数解释同上。
extern "C" BY618_108_API int WINAPI SNBC_GetNewAddress(char* , int);
//获取有效期开始信息。参数解释同上
extern "C" BY618_108_API int WINAPI SNBC_GetISSUE(char* , int);
//获取有效期结束信息。参数解释同上。
extern "C" BY618_108_API int WINAPI SNBC_GetEXPIRES(char* , int);
//关闭通讯端口。参数参考SNBC_InitComm说明 。使用结束必须关闭端口,否则重新打开设备时会出错。
extern "C" BY618_108_API int WINAPI SNBC_CloseComm(int iComm);
//检测SAM模块工作状态。
extern "C" BY618_108_API int WINAPI SNBC_CheckSAMStatus();
//SAM_A 复位
extern "C" BY618_108_API int WINAPI SNBC_ResetSAM();
//读取 SAM_A 的编号字符串
extern "C" BY618_108_API int WINAPI SNBC_GetSAMIDToStr(char* str);
//=====================其他专项应用接口========================//
//返回照片文件内容(SAM模块返回的原始数据,大小1024)。
extern "C" BY618_108_API int WINAPI SNBC_PhotoFileContent(char*);
//生成JPG格式照片并返回照片文件名包括路径。
extern "C" BY618_108_API int WINAPI SNBC_PhotoFile(char* strDir);
//****************************************************
//生成并保存图片文件。
//获取照片信息函数。
//参数bmpFileName需按照格式传入(传入其他参数格式出错)。
//格式采用如下形式:D:\\TEMP\\PHOTO\\save1\\a.bmp ,即各
//级目录之间使用双反斜杠隔开,最后部分为BMP图片文件名称。
//具体存储路径可以自由定义,文件夹深度(层数)可以自由定义。
//****************************************************
extern "C" BY618_108_API int WINAPI SNBC_SavePhoto(char* bmpFileName);
/////////////////////////用于网页的接口(文件路径使用绝对地址参数)/////////////////////////////////////
//读卡。有参数,路径为绝对地址路径。参数strSourceDir格式为"C:\\TEMP\\ASM\\SWW\\"
extern "C" BY618_108_API int WINAPI SNBC_ReadContentNet(char* strSourceDir);
//生成JPG格式照片并返回照片文件名包括路径。参数getBmpDir和strSourceDir格式为"C:\\TEMP\\ASM\\SWW\\",
extern "C" BY618_108_API int WINAPI SNBC_PhotoFileNet(char* getBmpDir, char* strSourceDir, char* strDir);
//****************************************************
//生成并保存图片文件。参数getBmpDir和strSourceDir格式为"C:\\TEMP\\ASM\\SWW\\"
//获取照片信息函数。
//参数bmpFileName需按照格式传入(传入其他参数格式出错)。
//格式采用如下形式:D:\\TEMP\\PHOTO\\save1\\a.bmp ,即各
//级目录之间使用双反斜杠隔开,最后部分为BMP图片文件名称。
//具体存储路径可以自由定义,文件夹深度(层数)可以自由定义。
//****************************************************
extern "C" BY618_108_API int WINAPI SNBC_SavePhotoNet(char* getBmpDir,char* strSourceDir, char* bmpFileName);
//保存基本信息文件,参数为文件路径。
//extern "C" BY618_108_API int WINAPI SNBC_SaveBaseFile(char*);
#endif