您当前位置:顺极 >> 产品展示 >> 二次开发 >> 浏览产品 |(顺极闸机开发包(非web api版))|关键词: 闸机SDK 闸机开发包 闸机二次开发 通道开发包
  • 顺极闸机开发包(非web api版)
  • 型号: sjkj_pctomac.dll
  • 规格: 标准win32动态库
  • 单位: 套
  • 推荐:
    顺极闸机开发包(非web api版)
    其它图片:view

    检票机开发包说明书 V9.0 第 1 页 共 16 页
    1. 开发包的作用................................................................................................................... 2
    2. 开发包环境支持............................................................................................................... 2
    3. 演示程序环境支持........................................................................................................... 2
    4. 演示程序说明................................................................................................................... 2
    1) C# .................................................................................................................................. 2
    2) Delphi .......................................................................................................................... 2
    5. 检票机配置说明............................................................................................................... 2
    6. 开发包原理图和函数结构............................................................................................... 3
    1) 软件调用结构............................................................................................................... 3
    2) 开发包函数调用的顺序............................................................................................... 3
    3) C#演示程序的结构....................................................................................................... 4
    4) Delphi 演示程序结构.................................................................................................. 4
    5) 现代智能检票机控制板的IO 接口........................................................................................ 5
    7. 检票控制板和闸机之间的连接....................................................................................... 5
    1) 概述.............................................................................................................................. 5
    2) 检票机的接法............................................................................................................... 5
    a) 单板单向接法....................................................................................................... 6
    b) 双板双向接法....................................................................................................... 6
    c) 单板双向接法....................................................................................................... 7
    3) 推荐接法...................................................................................................................... 8
    8. 开发包动态库的函数详细说明....................................................................................... 8
    9. “sjkj_pctomac.h”头文件内容................................................................................... 8
    检票机开发包说明书 V9.0 第 2 页 共 16 页
    1. 开发包的作用
    1) 控制检票机的开关动作、指示灯/液晶屏/LED屏显示、提示声音播放、卡回收机的
    动作等
    2) 以相似的方式接收检票机上各个阅读器的卡号和指纹文件
    3) 监视检票机的过人信号
    4) 获取指纹比对的结果
    5) 询问检票机是否在线
    2. 开发包环境支持
    1) 本开发包运行于windows xp、windows 7,32位系统,二进制动态库可运行于windows
    7 64位系统
    2) 请首先打开:delphi\Win32\Debug\testPcToMac.exe,如果运行正常,则说明开发
    包环境已支持
    3. 演示程序环境支持
    1) C#演示程序需要系统支持.net2.0 程序
    2) 可以打开:SDK_DEMOS\CS\CS.DEMO\bin\Debug\sjkj_pctomac.exe,如果运行正常,
    说明你的系统已经支持.net2.0程序
    3) C#演示程序使用Visual Studio 2008 编写
    4) Delphi 演示程序使用 Delphi xe2 编写
    5) 提供了演示程序的所有源码
    4. 演示程序说明
    1) C#
    a) C#演示程序将开发包的函数封装成了一个简单的类库,该类库的目录名为
    “SJKJ_PC2MAC_CS_DLL”,该类库工程包含了全部的源代码,它是托管的DLL,
    主要目的是将主程序尽可能简化。您完全可以不关心此类库的源码,只需要将
    “SDK_DEMOS\CS\SJKJ_PC2MAC_CS_DLL\bin\Release\SJKJ_PC2MAC_CS_DLL.dl
    l”复制到您的工程下,并在工程中添加此类库的引用,然后创建类的全局变
    量就可以使用了;
    b) “SDK_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”
    中的函数是一一对应的,它的源码在“SDK_DEMOS\CS\SJKJ_PC2MAC_CS_DLL\
    sjkjpc2mac.cs”中
    2) Delphi
    a) Delphi 演示程序是将动态库的函数转成对应的全局函数,使用时,将
    “dllimports.pas”复制到您的工程下
    b) 开发包的两个DLL 动态库“sjkj_pctomac.dll”、“sjudptrans.dll”要与您的
    “.exe”主程序在同一个目录,本例中是“Debug”目录
    5. 检票机配置说明
    1) 您在开发时,检票机相当一台网络上的电脑,有自己的IP地址,开发包通过TCP/IP
    协议与检票机通信,IP地址可以通过演示程序修改
    检票机开发包说明书 V9.0 第 3 页 共 16 页
    2) 检票机上可以同时接多个阅读器设备,这些阅读器分别安装在检票机的进门方向或
    出门方向;
    3) 如果检票机上有多个相同类型的阅读器,则需要配置阅读器的顺序加以区别
    4) 检票机上如果安装了液晶屏,则能同时显示两行文字,如果安装的是LED 点阵屏,
    则两行文字接续显示
    5) 无论您是否调用开发包中的相关函数,开发包和检票机的内部通信始终存在
    开发包和检票机的通信是实时异步的,不受上层软件调用的影响,上层软件只是获
    取通信中的相关数据
    6. 开发包原理图和函数结构
    1) 软件调用结构
    2) 开发包函数调用的顺序
    检票机开发包说明书 V9.0 第 4 页 共 16 页
    3) C#演示程序的结构
    4) Delphi 演示程序结构
    检票机开发包说明书 V9.0 第 5 页 共 16 页
    5) 现代智能检票机控制板的IO 接口
    7. 检票控制板和闸机之间的连接
    1) 概述
    检票控制板用于上层软件和闸机之间的通信,是整个检票系统的硬件核心,其作用
    为开发包的硬件形式,功能和开发包的函数一一对应
    检票控制板基于TCP/IP协议,底层采用UDP分包校验处理,每块控制板有一个IP
    地址
    2) 检票机的接法
    检票和门禁系统,都有进、出方向的概念,实际上闸机可以实现双向转动或者开闸,
    检票机开发包说明书 V9.0 第 6 页 共 16 页
    但是,为了更为稳定和自然,实际应用中的收费系统的闸机都只使用一个方向,要
    么进,要么出,至于哪个进,哪个出,由上层软件人为决定,这样,无论进出,闸
    机都只朝“一个方向”(进向)转动或开闸
    a) 单板单向接法
    是指1块控制板控制1 组闸机通道,闸机是单向通行的,在检票区附近可设置一
    块液晶屏
    这种接法几乎是收费检票系统唯一的接法,检票机的“进”、“出”方向是由上
    层软件通过IP地址自行处理,此时开发板的方向都是“正”向控制
    在开发包中,如果接收到“方向”的参数“dir”时,应完全忽略,而发送时,
    永远使用数值“1”
    现代智能控制板-单板单向接法


    现代智能YJXMT
    现代智能YJXM
    显示屏
    交换机
    服务器
    现代智能控
    制板
    现代智能YJXMT
    现代智能YJXM
    显示屏
    现代智能控
    制板
    b) 双板双向接法
    是指1 组闸机通道使用2 块控制板,也就是有两个独立的IP 地址分别控制进出
    开门方向,其原理、控制与“单板单向接法”完全一样,只不过2 块控制板接在
    同一个检票机的两个方向而已
    检票机开发包说明书 V9.0 第 7 页 共 16 页
    其本质与“单板单向接法”一样
    这种系统可以用在双向实时门禁系统,每块板子都可以连1 块液晶屏,因此进出
    方向都可以有显示屏
    现代智能YJXM
    显示屏
    交换机
    服务器
    现代智能控
    制板
    现代智能控制板-双板双向接法


    现代智能YJXM
    显示屏
    现代智能控制板
    c) 单板双向接法
    是指1组闸机通道使用1块控制板,1块控制板分别控制两个方向,可以把液晶
    屏放在闸机中间,进出共用
    很多门禁系统对进出限制不如检票系统那样严格,可以不设置液晶屏
    这种接法能最大程序节省成本,但接口和开发难度有所增加
    这种接法,需要利用开发包中的“方向”参数“dir”,检票机上有检票时,会
    将阅读器的“进、出”方向通过“dir”参数传到开发包上,而开闸时,将数值
    (1 代表进向开闸,0代表反向开闸)通过“dir”参数再发送过去,检票机就可
    以按照命令的方向开闸
    检票机开发包说明书 V9.0 第 8 页 共 16 页
    现代智能YJXM
    显示屏
    交换机
    服务器
    现代智能控
    制板
    现代智能控制板-单板双向接法


    现代智能YJXM
    3) 推荐接法
    a) 检票系统或单进单出门禁系统采用“单板单向接法”
    b) 双进双出的门禁系统采用“双板双向接法”
    8. 开发包动态库的函数详细说明
    请使用“vs2008”或者其它能格式化c 函数的开发环境打开“sjkj_pctomac.h”头文件
    参阅
    9. “sjkj_pctomac.h”头文件内容
    /*/////////////////////////////////////////////////////////////////////////
    /
    现代智能科技检票机开发包DIY 版,该开发包文件名为“sjkj_mactopc.dll”,它的同目录
    下必需还有“sjudptrans.dll”(数据分包文件,基于UPD和TCP 协议)
    版本:v9.0。开发包中包含了监视和控制的所有函数。
    质量主管:QQ:5326,2582,5;注释编写:
    备注:
    1、动态库中包含两套函数,分别为发送命令和接收反馈的函数,两套函数是完全独立
    的,如果只需要控制检票机,不需要接收反馈(开门、关门、人通过、刷卡和回复是否在线
    的功能),只需要使用“发送函数”单向控制即可
    2、通信端口为6002、6055,TCP 和UDP,请注意设置防火墙
    3、出于兼容考虑,程序为非UNICODE 的win32 环境,字符串遵从c 语言方式,即使用
    '\0'结尾;
    使用C#、delphi、VB 新版本调用时,注意进行必要的转换(C#的演示包中,又对
    检票机开发包说明书 V9.0 第 9 页 共 16 页
    二进制动态库进行.net类的二次封装,使用该类则无需关心字符编码问题)
    4、根据检票机的功能不同,有的命令可能不能执行,此时命令会被简单地忽略
    5、检票机上可以连接一个卡回收机,卡回收机由控制板智能执行“暂停、吸入、吐出
    卡”等动作,所以开发包中不需要包含相关控制函数
    6、现代智能科技检票机控制板可以同时连接多个双向ID、IC、二维码、身份证等阅读器设
    备和指纹模块,检票机上默认使用7寸真彩液晶屏,也可以替换成LED点阵屏
    7、C语言的“char”能直接表示数值,而其它语言一般需要转换
    *//////////////////////////////////////////////////////////////////////////
    /
    //定义几个常量,便于理解和记忆
    //没有收到数据
    #define rev_no_data 0
    //收到有人检票
    #define rev_crd_code 1
    //收到有人通过检票机
    #define rev_per_ovr 2
    //收到检票机回答在线
    #define rev_mac_line 3
    //收到检票机录入指纹成功
    #define rev_get_fgr 4
    //收到检票机上比对指纹的结果
    #define rev_mach_fgr 5
    ////receive
    /************************************
    Method: sjkjstart
    开始接收检票闸机端的数据
    Returns: int
    如果返回1,表示开始成功,否则失败,只有成功了,才能进行下一步
    ************************************/
    int sjkjstart();
    /************************************
    Method: sjkjhavedata
    查找是否有数据来到
    应该在多线程中,循环中调用此函数
    Returns: int
    返回32 位整形值
    需要通过返回的值,决定要执行以后的函数!
    0:没有收到数据;
    检票机开发包说明书 V9.0 第 10 页 共 16 页
    1:有检票
    此时需要调用sjkjrcrd取获取检票的号码和其它详细数据
    2:有人通过
    此时要调用sjkjrovred查找过人的详细数据
    如果只需知道远程ip 地址,也可以用sjkjrip代替sjkjrovred
    如果不需知道人通过的其它信息,可以不调用sjkjrovred 或者sjkjrip
    3:检票机在线
    此时需要调用sjkjrip 查找远程ip地址
    如果不需要知道远程ip地址,可以不调用sjkjrip
    4:有人录入指纹
    此时需要调用sjkjrfgr获取指纹特征值
    5:指纹比对的结束
    此时需要调用sjkjrcore获取比对的结果
    Parameter: int timeout
    32 位int 型,该值只是在没有数据时阻塞的时间,如果有数据时,将立即放弃等

    也就是说,该间隔的长短,并不影响实际数据的接收
    时间越长,对CPU占用越小,该值可以是大于2000毫秒的任意值,比如500
    本函数是阻塞执行的,但其内部接收数据的机制却是非阻塞的
    ************************************/
    int sjkjhavedata(int timeout);
    /************************************
    Method: sjkjrcrd
    获取检票信息
    Parameter: char * ctp
    8位数值型指针,其中会填充数字,代表阅读器的类型
    填充的值代表的类型:1 为ID 卡,2 为IC 卡,3 为身份证,4 为二维码(注意,多次
    强调的,数值不是字符值!)
    Parameter: char * dir
    8位数值型指针,其中会填充数字
    1为进,0为出
    Parameter: char * cidx
    8位数值型指针,其中会填充数字,代表阅读器的序号
    该数值只在检票机的同一方向上包含两个及以上相同的阅读器时,才有可能派上用

    现代智能科技检票机可以同时支持多达4个阅读器
    默认情况下,值为1 代表第1 个阅读器;值为4 代表第4 个阅读器,第4 个阅读器与
    回收机绑定在一起
    该值与检票机的接法有关系
    以北京地铁的检票机为例:
    在进入时,临时IC 卡和充值IC卡使用同一个读卡器,则cidx 的值没有作用
    而出口时,临时IC卡回收,充值IC卡刷卡,上位机软件通过cidx的值判断出用
    户刷卡的位置,如果用户误将充值卡塞入回收机,或者用临时卡刷上方的阅读器,均为错误操
    检票机开发包说明书 V9.0 第 11 页 共 16 页
    作,软件应做出相应的拒绝回复
    Parameter: char * conte
    是字符指针,必须是不小于32 字节大小的内存指针,其中将填充原始卡号,卡号
    是以'\0'结尾的
    Parameter: int *tid
    是32位的整型,被检票机发来的标记值填充
    该值的是由由发送函数发过去的标记值,检票机只是将该值原样发送过来
    如果一个检票过程(事务)已经全部完成,该值为0
    Parameter: char * remoteip
    是字符串指针,其中填充了检票机的IP 地址,结尾为“\0”,该字符的缓冲区的
    大小必须不小于24字节
    ************************************/
    void sjkjrcrd(char* ctp,char* dir,char* cidx,int* tid,char* conte,char*
    remoteip);
    /************************************
    Method: sjkjrovred
    获取人通过的详细信息
    Parameter: int *tid
    Parameter: char * remoteip
    ************************************/
    void sjkjrovred(int* tid,char* remoteip);
    /************************************
    Method: sjkjrip
    获取远程检票机的IP 地址
    在sjkjhavedata 的返回值大于0后,可以调用此函数简单的获取检票机的IP地址
    该函数调用后,不影响其它函数
    Parameter: char * remoteip
    ************************************/
    void sjkjrip(char* remoteip);
    /************************************
    Method: sjkjrfgr
    获取二进制指纹文件
    注意:只有主动发送sjkjsgetfgr,并且指纹获取正确,此函数才会发生
    Parameter: char * dir
    8位数值型指针,其中会填充数字
    1为进,0为出
    Parameter: char * cidx
    8位数值型指针,其中会填充数字,代表阅读器的序号
    该数值只在检票机的同一方向上包含两个及以上相同的阅读器时,才有可能派上用

    一般情况下,检票机上只有一个指纹仪,因此无需关心此值
    检票机开发包说明书 V9.0 第 12 页 共 16 页
    Parameter: int *tid
    Parameter: char * dat
    将被填充为指纹特征文件的字节流
    指纹特征文件不大于512字节,因此只要分配512字节的内存缓冲区即可接收
    Parameter: int * datlen
    32 位整形值,其中填充的数值表示dat的有效长度
    Parameter: char * remoteip
    ************************************/
    void sjkjrfgr(char* dir,char* cidx,int* tid,char* dat,int* datlen,char*
    remoteip);//取指纹特征值
    /************************************
    Method: sjkjrcore
    发送一个本地指纹文件,将用户在检票机上比对指纹,最后对比,得到结果
    注意:只有主动发送sjkjsmathfgr,此函数才会发生
    Parameter: char * dir
    Parameter: char * cidx
    Parameter: int *tid
    Parameter: int * score
    是32字节的整形,其中填充了指纹比对的结果
    结果为0~255
    只要大于30,就可以认为是同一个人
    Parameter: char * remoteip
    ************************************/
    void sjkjrcore(char* dir,char* cidx,int* tid,int* score,char* remoteip);//
    取指纹比对的结果
    /************************************
    Method: sjkjstop
    停止接收检票闸机端的数据
    如果sjkjstart执行成功了,在程序结束时,必须调用此函数,反之,不执行
    ************************************/
    void sjkjstop();
    ////send
    注意:在以下任何函数之前,必须已经执行了“sjkjstart”。
    /************************************
    Method: sjkjsopen
    命令检票机开门或转动
    Returns: int
    值为1表示发送__________命令成功,0 表示失败;返回值是32 位的整型
    检票机开发包说明书 V9.0 第 13 页 共 16 页
    Parameter: char * remind
    显示屏上的第一行文本,一般用于提示用户;在字节序列上,必须以'\0'结尾
    如果值为“.”(英文点号),则维持显示上一次发送的文本
    Parameter: char * ticket
    显示屏上的第二行文本,一般用于显示票名称;在字节序列上,必须以'\0'结尾
    如果值为“.”(英文点号),则维持显示上一次发送的文本
    Parameter: char suid
    控制检票机播放的声音:8 位的整数,是数学值(注意,不是字符);
    0为播放检票机内预定的声音(常用)
    100为“无声”
    1~99 为“自定义的声音索引”;自定义时,需要录制wav 格式的声音文件,
    放到检票机控制板的“\sdcard\MACSTRL\SOUNDS\”或者“C:\MACSTRL\SOUNDS\”目录下,
    文件名类似“s1.wav”、“s2.wav”……
    Parameter: char dir
    检票机的开闸或转动的方向,1为进,0为出;是8位整数
    Parameter: int tid
    发送给检票机的标记值,是32位的整型,如果不需此标记,可以设置成0
    该值的作用是:如果一次检票过程没有结束,检票机返回时,会将此值再次发送过
    来,通过该值,在多个检票机同时通信时,可以作为标识
    Parameter: char * macip
    检票机的IP 地址,在字节序列上,必须以'\0'结尾的字符串,形式如
    “192.168.1.111\0”
    ************************************/
    int sjkjsopen(char* remind,char* ticket,char suid,char dir,int tid,char*
    macip);
    /************************************
    Method: sjkjsnotice
    向检票机发送通知
    通知只是显示文本和声音,检票机不会产生机械动作
    Returns: int
    Parameter: char * remind
    Parameter: char * ticket
    Parameter: char suid
    Parameter: char dir
    显示屏的方向,1 为进,0为出;是8位整数
    只有多个显示屏,该值才有作用,否则值为1
    Parameter: int tid
    Parameter: char * macip
    ************************************/
    int sjkjsnotice(char* remind,char* ticket,char suid,char dir,int tid,char*
    macip);
    /************************************
    检票机开发包说明书 V9.0 第 14 页 共 16 页
    Method: sjkjsoped
    命令检票机常开
    常开后,除非取消,否则其它命令将不再执行
    注意:检票机可能并不支持开常命令
    Returns: int
    Parameter: char * remind
    Parameter: char * ticket
    Parameter: char suid
    Parameter: char dir
    常开的方向,1为正,0为出;是8 位整数
    Parameter: char * macip
    ************************************/
    int sjkjsoped(char* remind,char* ticket,char suid,char dir,char* macip);
    /************************************
    Method: sjkjsresu
    取消检票机的常开命令
    执行时,如果检票机上挂有卡回收箱,如果回收箱中有卡,则卡会回收
    Returns: int
    Parameter: char * remind
    Parameter: char * ticket
    Parameter: char suid
    Parameter: char * macip
    ************************************/
    int sjkjsresu(char* remind,char* ticket,char suid,char* macip);
    /************************************
    Method: sjkjsinv
    向检票机发送票无效命令
    Returns: int
    Parameter: char * remind
    Parameter: char * ticket
    Parameter: char suid
    Parameter: char dir
    如果票有效,准备开门的方向,1 为进,0 为出;是8 位整数
    Parameter: int tid
    Parameter: char * macip
    ************************************/
    int sjkjsinv(char* remind,char* ticket,char suid,char dir,int tid,char*
    macip);
    /************************************
    Method: sjkjsask
    检票机开发包说明书 V9.0 第 15 页 共 16 页
    向检票机发送询问,问是否在线
    Returns: int
    Parameter: int tid
    Parameter: char * macip
    ************************************/
    int sjkjsask(int tid,char* macip);
    /************************************
    Method: sjkjsip
    向检票机发送新的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”
    Parameter: char * macip
    ************************************/
    int sjkjsip(char* ip,char* mk,char* gt,char* macip);
    /************************************
    Method: sjkjsgetfgr
    请求录入指纹
    检票机将请求用户录入指纹,并处理成指纹的二进制特征值
    Returns: int
    Parameter: char * remind
    Parameter: char * ticket
    Parameter: char suid
    Parameter: char dir
    指纹仪方向,1为进,0为出;是8 位整数
    现阶段,该值只为1
    Parameter: int tid
    Parameter: char * macip
    ************************************/
    int sjkjsgetfgr(char* remind,char* ticket,char suid,char dir,int tid,char*
    macip);
    /************************************
    Method: sjkjsmathfgr
    请求比对指纹
    检票机将接收发送的指纹特征值,并请求用户录入指纹,进行比对
    检票机开发包说明书 V9.0 第 16 页 共 16 页
    Returns: int
    Parameter: char * remind
    Parameter: char * ticket
    Parameter: char suid
    Parameter: char dir
    指纹仪方向,1为进,0为出;是8 位整数
    现阶段,该值只为1
    Parameter: int tid
    Parameter: char * dat
    要传给检票机进行比对指纹特征值二进制文件流
    应将文件流转成字节数组或者内存流,dat 内存的首地址
    Parameter: int datlen
    dat 的有效长度
    Parameter: char * macip
    ************************************/
    int sjkjsmathfgr(char* remind,char* ticket,char suid,char dir,int tid,char*
    dat,int datlen,char* macip);__