1. 开发包的作用 2 
	2. 开发包文件 2 
	3. 开发包的稳定性 2 
	4. 开发包环境支持 2 
	5. 演示程序环境支持 2 
	6. 演示程序说明 2 
	1) C# 2 
	2) Delphi 3 
	3) VC 3 
	7. 检票机配置说明 3 
	8. 开发包原理图和函数结构 3 
	1) 软件调用结构 3 
	2) 开发包函数调用的顺序 4 
	3) C#演示程序的结构 4 
	4) Delphi演示程序结构 4 
	5) 顺极检票机控制板的IO接口 4 
	9. 检票控制板和闸机之间的连接 4 
	1) 概述 4 
	2) 检票机的接法 4 
	a) 单板单向接法 4 
	b) 单板双向接法 4 
	10. 开发包动态库的函数详细说明 4 
	  
	1. 开发包的作用 
	1) 控制检票机的开闸、液晶屏/LED屏显示(声音播放)、卡回收机的动作等 
	2) 以相似的方式接收检票机上各个方向的阅读器的卡号、指纹流、相片流等 
	3) 监视检票机的过人信号 
	4) 询问检票机是否在线 
	2. 开发包文件 
	1) 开发包动态在SDK\win32\目录中 
	2) sjudptrans.dll、sjkj_pctomac.dll运行时必须放在主程序同目录下,或者系统环境变量设置的其它路径 
	3) SJKJ_PC2MAC_CS_DLL.dll是.net程序调用时的二次封装文件 
	4) sjkj_pctomac.lib 是VC静态调用sjkj_pctomac.dll的.lib文件 
	5) sjkj_pctomac.h是包内函数的C头文件,其中包含了函数调用说明 
	6) SDK\C#win7x64demo\目录中,含有sjudptrans.dll、sjkj_pctomac.dll的x64版本,用于.net主程在win7 64位下调用 
	3. 开发包的稳定性 
	1) 开发包动态库与检票机实时通信,通信数据进行了封包、校验、分拆,通过开发包收发数据,可靠、高效 
	2) 开发包动态库内部与检票机之间存在对接时序检验,只要网络硬件可靠,一方发送的数据,总能被对方可靠收到 
	3) 一个开发包,管理局域网中所有检票机,函数数量少,易于更换成其它厂家开发包 
	4) 检票机自动维护开发包发来的多个开闸命令,在超时未到之前,自动计数过人,也就是说,通过开发包发送命令,不需要过问时机是否合适 
	4. 开发包环境支持 
	1) 本开发包运行于windows xp、win7 32/64位系统 
	2) 请首先打开:Demos\delphi\Win32\Debug\testPcToMac.exe,如果运行正常,则说明开发包系统环境已支持 
	5. 演示程序环境支持 
	1) C#演示程序需要系统支持.net2.0程序 
	2) 可以打开:Demo\CS\CS.DEMO\bin\Debug\sjkj_pctomac.exe,如果运行正常,说明系统支持.net2.0程序 
	3) Win7 64位下,可以打开: SDK\C#win7x64demo\sjkj_pctomac.exe,如果运行正常,说明系统支持.net2.0程序;注意:此目录下的开发包DLL是64位的 
	4) C#演示程序使用Visual Studio 2010编写 
	5) Delphi演示程序使用 Delphi xe5编写 
	6) VC演示程序使用Visual Studio 2010编写,VC演示程序演示闸机不间断录入的指纹 
	7) 演示程序有全部源码,可以用对应的开发工具打开工程,进行再开发 
	6. 演示程序说明 
	1) C# 
	a) C#演示程序将开发包的函数封装成了另一个.net类库,该类库的目录名为“SJKJ_PC2MAC_CS_DLL”,该类库工程包含了全部的源代码,它是托管的DLL,主要目的是将主程序尽可能简化。您可以不关心此类库的源码,只需要将“SDK_DEMOS\CS\SJKJ_PC2MAC_CS_DLL\bin\Release\SJKJ_PC2MAC_CS_DLL.dll”复制到您的工程下,并在工程中添加此类库的引用,然后创建类的全局变量就可以使用了; 
	b) “Demos\CS\CS.DEMO”是演示程序,就是按照上一步的方法,先将“SJKJ_PC2MAC_CS_DLL.dll”复制到“SDK_DEMOS\CS\CS.DEMO\bin\Debug”中,然后添加引用到工程 
	c) 开发包的两个DLL动态库“sjkj_pctomac.dll”、“sjudptrans.dll”要与您的“.exe”主程序在同一个目录,本例中是“Debug”目录 
	d) 使用“SJKJ_PC2MAC_CS_DLL.dll”可以不关心字符编码问题 
	e) “SJKJ_PC2MAC_CS_DLL.dll”中的函数,和二进制开发包“sjkj_pctomac.dll”中的函数是一一对应的,它的源码在“Demos\CS\SJKJ_PC2MAC_CS_DLL\ sjkjpc2mac.cs”中 
	2) Delphi 
	a) Delphi演示程序是将动态库的函数转成对应的全局函数,使用时,将“dllimports.pas”复制到您的工程下 
	b) 开发包的两个DLL动态库“sjkj_pctomac.dll”、“sjudptrans.dll”要与您的“.exe”主程序在同一个目录,本例中是“Debug”目录 
	3) VC 
	a) VC演示程序演示了检票机自动采集指纹到开发包比对的功能 
	b) VS2010工程静态调用DLL需要用到“Demos\VC\vctest.flg\sjkj_pctomac.lib” 
	7. 检票机配置说明 
	1) 您在开发时,检票机相当一台网络上的电脑,有自己的IP地址,开发包通过TCP/IP协议与检票机通信,顺极检票机出厂IP地址从192.168.1.2向192.168.1.99累计 
	2) 检票机默认与192.168.1.100通信,所以,您的开发电脑(服务器)需要设置成192.168.1.100,否则只能发送数据,不能接收数据 
	3) 检票机上可以同时接多个阅读器设备,这些阅读器分别安装在检票机的正向(进入)或反向(出门); 
	4) 如果检票机上有多个相同类型的阅读器,则这些阅读器序号是不同的 
	5) 检票机上如果安装了液晶屏或LED点阵屏,则在发送命令的同时,还应填充函数的文本参数 
	6) 无论您是否使用开发包中的相关函数,开发包DLL和检票机的内部通信始终存在 
	开发包和检票机的通信是实时异步的,不受上层软件调用的影响,上层软件只是获取了通信中的相关数据 
	8. 开发包原理图和函数结构 
	1) 软件调用结构 
	  
	2) 开发包函数调用的顺序 
	a) 视版本不同,可能函数数量不一样,但形式都一样 
	b) 发送与接收是两套不相关的函数,比如,只需要向机器发送数据,则不需要接收函数 
	c) 接收函数是超时阻塞式,应使用单独的线程处理,提高效率; 
	d) 接收函数一旦收到检票机发来的数据,应立即调用相应的下一个函数取出缓存中的数据,否则数据可能会被覆盖 
	  
	3) C#演示程序的结构 
	  
	4) Delphi演示程序结构 
	  
	5) 顺极检票机控制板的IO接口 
	  
	9. 检票控制板和闸机之间的连接 
	1) 概述 
	检票控制板用于上层软件和闸机之间的通信,是整个检票系统的硬件核心,其作用为开发包的硬件形式,功能和开发包的函数一一对应 
	检票控制板基于TCP/IP协议,底层采用UDP分包校验处理,每块控制板有一个IP地址 
	2) 检票机的接法 
	检票和门禁系统,都有进、出方向的概念,闸机可以双向转动或者开闸。但是,过去不少检票场所都只利用了检票机的一个方向,要么进,要么出,至于哪个进,哪个出,由上层软件人为决定,这样,无论进出,闸机都只朝“一个方向”(进向)转动或开闸 
	a) 单板单向接法 
	是指1块控制板控制1组闸机通道,闸机是单向通行的,在检票区附近可设置一块液晶屏 
	这种接法几乎是收费检票系统唯一的接法,检票机的“进”、“出”方向是由上层软件通过IP地址自行处理,此时开发板的方向都是“正”向控制 
	在开发包中,如果接收到“方向”的参数“dir”时,应完全忽略,而发送时,永远使用数值“1” 
	  
	b) 单板双向接法 
	是指1组闸机通道使用1块控制板,1块控制板分别控制两个方向 
	这种接法,需要利用开发包中的“方向”参数“dir”,检票机上有检票时,会将阅读器的“进、出”方向通过“dir”参数传到开发包上,而开闸时,将数值(1代表进向开闸,0代表反向开闸)通过“dir”参数再发送过去,检票机就可以按照命令的方向开闸并在相应屏上显示文本 
	  
	10. 开发包动态库的函数详细说明 
	请使用“vs2010”或者其它能格式化c函数的开发环境打开“sjkj_pctomac.h”头文件参阅 
	“sjkj_pctomac.h”头文件内容 
	#define TRAN_ALL_BUFFSIZE (1024*1024*1)//允接收的最大缓存为1M 
	////send,发送到控制板各命令的意义 
	enum TY_SEND_FUNTP{ 
	 SEND_FUNTP_NONE=0,//占空,无意义 
	 SEND_FUNTP_OPEN,//开闸 
	 SEND_FUNTP_NOTICE,//通知 
	 SEND_FUNTP_OPED,//常开 
	 SEND_FUNTP_RESU,//常开恢复 
	 SEND_FUNTP_INV,//检票无效 
	 SEND_FUNTP_ASK,//询问状态 
	 SEND_FUNTP_STIP,//设置IP.此值已丢弃,非开发包一部分 
	 /*以下是硬件比对指纹的函数*/ 
	 SEND_FUNTP_GFGR,//请求指纹 
	 SEND_FUNTP_MTFGR,//比对指纹 
	  
	 SEND_FUNTP_REBOOT,//重新启动.此值已丢弃,非开发包一部分 
	 SEND_FUNTP_CMMIT//提交系统写入.此值已丢弃,非开发包一部分 
	 ,SEND_FUNTP_DISMAC//检票机外设禁能 
	 ,SEND_FUNTP_ENMAC//检票机外设使能 
	 ,SEND_FUNTP_GETIMG//命令检票机拍照 
	}; 
	//************************************ 
	// Method:    sjkjsopen 命令检票机开闸 
	// Returns:   int 值为1表示发送命令成功,0表示失败;返回值是32位的整型 
	// Parameter: char dir 检票机的开闸方向,1为右,0为左;是8位整数 
	// Parameter: char idx 针对上次发送来的阅读器的序号;是8位整数(可以不使用) 
	// Parameter: char flg 上次发送来的阅读器是否在卡机中;1为是,0为否;是8位整数(可以不使用) 
	// Parameter: char * nacn30 票名称,不超过30字节;GBK编码 
	// Parameter: char * naen120 票名称的英文翻译,不超过120字节;GBK编码 
	// Parameter: char * mncn50 票的描述,不超过50字节;GBK编码 
	// Parameter: char * mnen200 票的英文描述,不超过200字节;GBK编码 
	// Parameter: char suid  控制检票机播放的声音:8位的整数,是数学值(注意,不是字符);0为播放检票机内预定的声音(常用) 
	// Parameter: int tid  发送给检票机的标记值,是32位的整型,如果不需此标记,设置成0;该值的作用是:如果一次检票过程没有结束,检票机返回时,会将此值再次发送过来,通过该值,在多个检票机同时通信时,可以模拟“处理事务” 
	// Parameter: char * macip  检票机的IP地址,在字节序列上,必须以'\0'结尾的字符串,形式如“192.168.1.111\0”;GBK编码 
	//************************************ 
	int sjkjsopen(char dir,char idx,char flg,char* nacn30,char* naen120,char* mncn50,char* mnen200,char suid,int tid,char* macip); 
	  
	//************************************ 
	// Method:    sjkjsnotice 向检票机发送通知;通知只是显示文本和声音,检票机不会产生机械动作 
	// Returns:   int 
	// Parameter: char dir  针对的检票机的方向,1为右,0为左;是8位整数 
	// Parameter: char idx  针对上次发送来的阅读器的序号;是8位整数(可以不使用) 
	// Parameter: char flg 上次发送来的阅读器是否在卡机中;1为是,0为否;是8位整数(可以不使用) 
	// Parameter: char * mncn50 描述,不超过50字节;GBK编码 
	// Parameter: char * mnen200 英文描述,不超过200字节;GBK编码 
	// Parameter: char suid  控制检票机播放的声音:8位的整数,是数学值(注意,不是字符);0为播放检票机内预定的声音(常用) 
	// Parameter: int tid 发送给检票机的标记值,是32位的整型,如果不需此标记,设置成0;该值的作用是:如果一次检票过程没有结束,检票机返回时,会将此值再次发送过来,通过该值,在多个检票机同时通信时,可以模拟“处理事务” 
	// Parameter: char * macip 检票机的IP地址,在字节序列上,必须以'\0'结尾的字符串,形式如“192.168.1.111\0”;GBK编码 
	//************************************ 
	int sjkjsnotice(char dir,char idx,char flg,char* mncn50,char* mnen200,char suid,int tid,char* macip); 
	 
	/************************************ 
	Method:    sjkjsoped  命令检票机常开;常开后,除非取消,否则其它命令将不再执行;如果检票机不支持常开命令,将忽略 
	 参数意义同sjkjsopen 
	************************************/ 
	int sjkjsoped(char dir,char idx,char flg,char* nacn30,char* naen120,char* mncn50,char* mnen200,char suid,int tid,char* macip); 
	 
	/************************************ 
	Method:    sjkjsresu  取消检票机的常开命令 
	 参数意义同sjkjsnotice  
	************************************/ 
	int sjkjsresu(char dir,char idx,char flg,char* mncn50,char* mnen200,char suid,int tid,char* macip); 
	 
	/************************************ 
	Method:    sjkjsinv 向检票机发送票无效命令 
	 参数意义同sjkjsnotice  
	************************************/ 
	int sjkjsinv(char dir,char idx,char flg,char* mncn50,char* mnen200,char suid,int tid,char* macip); 
	 
	/************************************ 
	Method:    sjkjsask  向检票机发送询问,将得到检票机的回复,从回复中可以得到为:1、在线,2、检票机状态,3、人正在检票通行的人数 
	    参数意义同sjkjsopen  
	************************************/ 
	int sjkjsask(int tid,char* macip); 
	 
	/************************************ 
	Method:    sjkjsip  向检票机发送新的IP,检票机将设置成新的静态IP;带写保护的检票机会自动重启应用新的IP 
	Returns:   int 
	 Parameter: char * ip 
	 新的IP地址,在字节序列上,必须以'\0'结尾的字符串,形式如“192.168.1.112\0” 
	 Parameter: char * mk 
	 新的掩码地址,在字节序列上,必须以'\0'结尾的字符串,形式如“255.255.255.0\0” 
	 Parameter: char * gt 
	 新的网关地址,在字节序列上,必须以'\0'结尾的字符串,形式如“192.168.1.1\0”  
	************************************/ 
	int sjkjsip(char* ip,char* mk,char* gt,char* macip); 
	 
	//************************************ 
	// Method:    sjkjscommit 提交数据;如果检票板带在写保护,在写入数据后,先执行提交后再重启生效;无论写入多少次数据,提交只要1次 
	// Returns:   int 
	//************************************ 
	int sjkjscommit(int tid,char* macip); 
	 
	//************************************ 
	// Method:    sjkjsboot 命令检票板重新启动;如果检票板带在写保护,在写入数据后,先执行提交后再重启生效 
	// Returns:   int 
	//************************************ 
	int sjkjsboot(int tid,char* macip); 
	 
	/************************************ 
	Method:    sjkjsgetfgr 
	 请求录入指纹 
	 检票机将请求用户录入指纹,并处理成指纹的二进制特征值 
	    参数意义同sjkjsnotice    
	************************************/ 
	int sjkjsgetfgr(char dir,char idx,char flg,char* mncn50,char* mnen200,char suid,int tid,char* macip); 
	 
	/************************************ 
	Method:    sjkjsmathfgr 
	 请求比对指纹 
	 检票机将接收发送的指纹特征值,并请求用户录入指纹,进行比对 
	 参数意义同sjkjsnotice  
	Parameter: char * pdat 
	 要传给检票机进行比对指纹特征值二进制文件流;应将文件流转成字节数组或者内存流,dat为内存的首地址 
	Parameter: int datlen 
	 数据的有效长度 
	Parameter:int  ivl 
	 指纹数据分片传输的间隔,单位是毫秒。如果所在机器性能较低,可以为0,间隔越大,传输越慢,但接收端更可靠。 
	************************************/ 
	int sjkjsmathfgr(char dir,char idx,char flg,char* mncn50,char* mnen200,char suid,int tid,char* pdat,int datlen,char* macip,int ivl); 
	 
	/************************************ 
	Method:    sjkjsdismac 
	 检票机外设禁能 
	 禁能后,该方向上的录入设备录入无效 
	 禁能后,检票机显示屏上保持发送的文本,直到发送使能命令 
	 禁能命令是主动发出,重启后,默认是使能状态 
	Returns:   int 
	 4字节int型,返回1表示命令发送成功 
	Parameter: char dir 
	 1字节char型,数值为0表示反方向,1表示正方向 
	Parameter: char flg 
	 1字节char型,如果值为1,会吐出卡机中的卡 
	Parameter: char * mncn50 
	 描述,不超过50字节;GBK编码 
	Parameter: char * mnen200 
	 英文描述,不超过200字节;GBK编码 
	Parameter: char suid 
	 1字节char型,控制检票机播放的声音:8位的整数,是数学值(注意,不是字符);0为播放检票机内预定的声音(常用) 
	Parameter: int tid 发送给检票机的标记值,是32位的整型,如果不需此标记,设置成0;该值的作用是:如果一次检票过程没有结束,检票机返回时,会将此值再次发送过来,通过该值,在多个检票机同时通信时,可以模拟“处理事务” 
	Parameter: char * macip 检票机的IP地址,在字节序列上,必须以'\0'结尾的字符串,形式如“192.168.1.111\0”;GBK编码 
	************************************/ 
	int sjkjsdismac(char dir,char idx,char flg,char* mncn50,char* mnen200,char suid,int tid,char* macip); 
	/************************************ 
	 Method:    sjkjsenmac 
	 检票机外设使能 
	 使能后,该方向上显示发送的提示文本一段时间,然后回到初始化界面 
	Returns:   int 
	 4字节int型,返回1表示命令发送成功 
	Parameter: char dir 
	 1字节char型,数值为0表示反方向,1表示正方向 
	Parameter: char flg 
	 1字节char型,如果值为1,会吞卡 
	Parameter: char * mncn50 
	 描述,不超过50字节;GBK编码 
	Parameter: char * mnen200 
	 英文描述,不超过200字节;GBK编码 
	Parameter: char suid 
	 1字节char型,控制检票机播放的声音:8位的整数,是数学值(注意,不是字符);0为播放检票机内预定的声音(常用) 
	Parameter: int tid 发送给检票机的标记值,是32位的整型,如果不需此标记,设置成0;该值的作用是:如果一次检票过程没有结束,检票机返回时,会将此值再次发送过来,通过该值,在多个检票机同时通信时,可以模拟“处理事务” 
	Parameter: char * macip 检票机的IP地址,在字节序列上,必须以'\0'结尾的字符串,形式如“192.168.1.111\0”;GBK编码 
	************************************/ 
	int sjkjsenmac(char dir,char idx,char flg,char* mncn50,char* mnen200,char suid,int tid,char* macip); 
	/************************************ 
	 Method:    sjkjsgetimg 
	 命令检票机拍照 
	 拍照是后台动作,没有提示 
	Returns:   int 
	 4字节int型,返回1表示命令发送成功 
	Parameter: char dir 
	 1字节char型,数值为0表示反方向,1表示正方向 
	Parameter: char flg 
	 1字节char型,如果值为1,会吞卡 
	Parameter: int tid 发送给检票机的标记值,是32位的整型,如果不需此标记,设置成0;该值的作用是:如果一次检票过程没有结束,检票机返回时,会将此值再次发送过来,通过该值,在多个检票机同时通信时,可以模拟“处理事务” 
	Parameter: char * macip 检票机的IP地址,在字节序列上,必须以'\0'结尾的字符串,形式如“192.168.1.111\0”;GBK编码 
	************************************/ 
	int sjkjsgetimg(char dir,char idx,char flg,int tid,char* macip); 
	 
	////receive 
	////////////////////////////////////////////////////////////////////////// 
	//查询检票机发送来的数据,用到的值 
	////////////////////////////////////////////////////////////////////////// 
	//接收控制板端的数据 
	enum TY_REV_CMD_PAM{ 
	 rev_no_data=0,//没有收到数据 
	 rev_crd_cd,//收到有人检票 
	 rev_per_ovr,//收到有人通过检票机 
	 rev_get_fgr,//收到检票机录入指纹成功 
	 rev_mach_fgr,//收到检票机上比对指纹的结果 
	 rev_get_ms//收到检票机的状态 
	 ,rev_get_atfgr//收到检票机上自动录入指纹 
	 ,rev_get_img//收到检票机上的拍照 
	}; 
	enum TY_CARD_TP{ 
	 sc_id=1,//ID卡 
	 sc_ic,//IC卡 
	 sc_idt,//身份证 
	 sc_ew,//一维码 
	 sc_yw,//二维码 
	 sc_ot//其它 
	}; 
	//检票机的状态 
	enum   McStateDef{ 
	 MC_MAC_OK=1,//机器已就绪 
	 MC_MAC_UN,//机器没就绪 
	 MC_MAC_ERROR,//闸机出错,已经停止 
	 MC_ALARM//闸机有人站在报警区 
	}; 
	////////////////////////////////////////////////////////////////////////// 
	 
	/************************************ 
	 Method:    sjkjstart 
	 开始接收检票机端的数据 
	 Returns:   int 
	 如果返回1,表示开始成功,否则失败,只有成功了,才能进行下一步 
	************************************/ 
	int sjkjstart(); 
	  
	/************************************ 
	 Method:    sjkjhavedata 
	 查找是否有数据来到 
	 应该在多线程中,循环中调用此函数 
	 Returns:   int 数值对应的意思为 TY_REV_CMD_PAM 类型 
	 返回32位整形值 
	 需要通过返回的值,决定要执行以后的函数! 
	 0:没有收到数据; 
	 1:有人检票 
	  此时需要调用sjkjrcrd获取号码等详细数据 
	 2:有人通过 
	  此时要调用sjkjrovred查找过人的详细数据 
	  如果只需知道远程ip地址,也可以用sjkjrip代替sjkjrovred 
	  如果不需知道人通过的其它信息,可以不调用sjkjrovred或者sjkjrip 
	 3:有人录入指纹 
	  此时需要调用sjkjrfgr获取指纹特征值 
	 4:指纹比对的结果 
	  此时需要调用sjkjrcore获取比对的结果 
	 5:检票机在线 
	  此时需要调用sjkjrip查找远程ip地址 
	  如果不需知道远程ip地址,可以不调用sjkjrip 
	 6:有人自动录入指纹 
	  此时需要调用sjkjratfgr获取指纹的详细数据 
	 7: 拍照片 
	  此时需要调用sjkjrimg获取图片数据 
	 Parameter: int timeout 
	 32位int型,该值只是在没有数据时阻塞的时间,如果有数据时,将立即返回 
	 也就是说,该间隔的长短,并不影响实际数据的接收 
	 时间越长,对CPU占用越小,该值可以是大于10毫秒的任意值,比如200 
	 本函数是阻塞执行的,但其内部接收数据的机制却是非阻塞的 
	************************************/ 
	int sjkjhavedata(int timeout); 
	/************************************ 
	Method:    sjkjrcrd 
	 获取检票信息;注意,所有指针都要先按规定的字节分配内存空间,用于接收 
	 如果检票时,反方向还有行人,或者检票机状态不正常,此函数不会发生 
	Parameter: char * pcst  8位数值型指针,其中会填充数字,代表阅读器的类型; 填充的值代表的类型:1为ID卡,2为IC卡,3为身份证(注意,是数值) 
	Parameter: char * pdir  8位数值型指针,其中会填充数字; 1为右,0为左 
	Parameter: char * pcidx 8位数值型指针,其中会填充数字,代表阅读器的序号 
	 该数值只在检票机的同一方向上包含两个及以上相同的阅读器时,才有可能派上用场 
	 顺极科技检票机可以同时支持多个阅读器,数值从0开始编号 
	 该值与检票机的接法有关系 
	 以北京地铁的检票机为例: 
	  在进入时,临时IC卡和充值IC卡使用同一个读卡器,则cidx的值没有作用 
	  而出口时,临时IC卡回收,充值IC卡刷卡,上位机软件通过cidx的值判断出用户刷卡的位置,如果用户误将充值卡塞入回收机,或者用临时卡刷上方的阅读器,均为错误操作,软件应做出相应的拒绝回复 
	Parameter: char * pflg  8位数值型指针,其中会填充数字,代表是否在回收机中;1为是,0为否;如果不通过 pcidx判断是否在回收机中,则可以通过此值判断  
	Parameter: char * c40 是字符指针,其中将填充卡号,卡号是以'\0'结尾的;须分配的内存不小于40字节;如果是身份证,则为身份证号;为GBK编码 
	Parameter: char * c150 是字符指针,其中将其它信息,是以'\0'结尾的;须分配的内存不小于150字节;如果是身份证,内容是:姓名|姓别|出生年月|住址;为GBK编码 
	Parameter: int *ptid 
	 是32位的整型,被检票机发来的标记值填充 
	 该值的是由发送函数发过去的标记值,检票机只是将该值原样发送过来 
	Parameter: char * remoteip 
	 是字符串指针,其中填充了检票机的IP地址,结尾为“\0”,该字符的缓冲区的不小于24字节;为GBK编码 
	************************************/ 
	void sjkjrcrd(char* pcst,char* pdir,char* pcidx,char* pflg,char* c40,char* c150,int* ptid,char* premoteip); 
	  
	/************************************ 
	Method:    sjkjrovred 
	 获取人通过的详细信息 
	 人通过后,此函数就会发生一次,如果需要计算实际通过的人数,只需要计算此函数发生的次数即 
	 如果检票机上通过遥控、门禁信号、按钮开闸后,有人通过检票机,此函数会发生 
	 如果没有检票通过检票机,此函数不会发生 
	Parameter: int *ppers 
	 目前还有多少人检票后正在通过检票机 
	 如果排队检票,则前人还未通过时,后面又有人检票,则检票机将计数,则产生此值 
	 如果行人排队时,长时间不通过,则会超时清0而关闸,通过此检票机的人数可能小于ppers 
	Parameter: char * pdir 代表ppers人通行的方向;1为右,0为左 
	************************************/ 
	void sjkjrovred(int * ppers,char *pdir,int* ptid,char* premoteip); 
	  
	 
	/************************************ 
	Method:    sjkjrip 
	 获取远程检票机的IP地址 
	 在sjkjhavedata的返回值大于0后,可以调用此函数简单的获取检票机的IP地址 
	 该函数调用后,不影响其它函数 
	************************************/ 
	void sjkjrip(char* premoteip); 
	  
	/************************************ 
	Method:    sjkjrfgr 
	 获取二进制指纹文件的特征值,得到的文件应编号后保存起来,以便下次用于核对 
	 注意:只有主动发送sjkjsgetfgr,并且指纹获取正确,此函数才会发生 
	Parameter: char * pdir 
	 8位数值型指针,其中会填充数字 
	 1为进,0为出 
	Parameter: char * pidx 
	 8位数值型指针,其中会填充数字,代表的序号 
	 该数值只在检票机的同一方向上包含两个及以上相同的指纹仪时,才有可能派上用场 
	 一般情况下,检票机上只有一个指纹仪,因此无需关心此值 
	Parameter: int *ptid 
	Parameter: char * pdat 
	 将被填充为指纹特征文件的字节流 
	 指纹特征文件不大于512字节,要分配512字节的内存缓冲区用于接收 
	Parameter: int * pdatlen 
	 32位整形值,其中填充的数值表示pdat的有效长度 
	************************************/ 
	void sjkjrfgr(char* pdir,char* pidx,char* pflg,int* ptid,char* pdat,int* pdatlen,char* premoteip); 
	 
	/************************************ 
	Method:    sjkjrcore 
	 当发送一个本地存在的指纹文件,让用户在检票机上比对指纹后,会得到相似度结果 
	 注意:只有主动发送sjkjsmathfgr,此函数才会发生 
	Parameter: int * score 
	 是32字节的整形,其中填充了指纹比对的结果 
	 结果为0~255,只要大于30,就可以认为是同一个人,此值和指纹仪硬件相关 
	************************************/ 
	void sjkjrcore(char* pdir,char* pidx,char* pflg,int* ptid,int* score,char* premoteip);//取指纹比对的结果 
	  
	/************************************ 
	Method:    sjkjratfgr 
	 获取二进制的即时录入的指纹文件,该文件是特征值流或者是图片流;具体是哪种数据,是在检票机中事先配置好的 
	Parameter: char * pdir 
	 8位数值型指针,其中会填充数字 
	 1为进向,0为出向 
	Parameter: char * pidx 
	 8位数值型指针,其中会填充数字,代表的序号 
	 该数值只在检票机的同一方向上包含两个及以上相同的指纹仪时,才有可能派上用场 
	 一般情况下,检票机上只有一个指纹仪,因此无需关心此值 
	Parameter: int *ptid 
	Parameter: char * pdat 
	 将被填充为指纹文件的字节流 
	 指纹特征值不大于512字节,而图片不大于64K,需要提前分配不小于该容量的内存缓冲区用于接收 
	Parameter: int * pdatlen 
	 32位整形值,其中填充的数值表示pdat的有效长度 
	Parameter: char * remoteip 
	 是字符串指针,其中填充了检票机的IP地址,结尾为“\0”,该字符的缓冲区的不小于24字节;为GBK编码 
	************************************/ 
	void sjkjratfgr(char* pdir,char* pidx,char* pflg,int* ptid,char* pdat,int* pdatlen,char* premoteip); 
	 
	//************************************ 
	// Method:    sjkjgetsa 取得检票机状态 
	// Returns:   void 
	// Qualifier: 
	// Parameter: char * psta 8位指针,代表检票机的状态 
	//************************************ 
	void sjkjgetsa(int* ptid,char* psta,char* premoteip); 
	 
	/************************************ 
	Method:    sjkjrimg 
	 获取二进制的录入的拍照文件,该文件是图片流 
	Parameter: char * pdir 
	 8位数值型指针,其中会填充数字 
	 1为进向,0为出向 
	Parameter: char * pidx 
	 8位数值型指针,其中会填充数字,代表的序号 
	 该数值只在检票机的同一方向上包含两个及以上相同的指纹仪时,才有可能派上用场 
	 一般情况下,检票机上只有一个指纹仪,因此无需关心此值 
	Parameter: int *ptid 
	Parameter: char * pdat 
	 将被填充为图片文件的字节流 
	 图片不大于1M,需要提前分配不小于该容量的内存缓冲区用于接收 
	Parameter: int * pdatlen 
	 32位整形值,其中填充的数值表示pdat的有效长度 
	Parameter: char * remoteip 
	 是字符串指针,其中填充了检票机的IP地址,结尾为“\0”,该字符的缓冲区的不小于24字节;为GBK编码 
	************************************/ 
	void sjkjrimg(char* pdir,char* pidx,char* pflg,int* ptid,char* pdat,int* pdatlen,char* premoteip); 
	 
	/************************************ 
	Method:    sjkjstop 
	 停止接收检票闸机端的数据 
	 如果sjkjstart执行成功了,在程序结束时,必须执行此函数;反之,不应执行 
	************************************/ 
	void sjkjstop(); 
 |