中控消费机SDK接口.docx
《中控消费机SDK接口.docx》由会员分享,可在线阅读,更多相关《中控消费机SDK接口.docx(15页珍藏版)》请在冰豆网上搜索。
中控消费机SDK接口
目录
1概述2
2函数简述2
2.1Connect2
2.2Disconnect3
2.3DataQuery3
2.4DataCount4
2.5DataAppend5
2.6DataUpdate6
2.7DataDelete6
2.8InfoQuery7
2.9InfoUpdate8
2.10GetRTLog8
3表名附件9
Dataapi接口使用指南(简要)
1概述
dataapi接口是一组功能函数,使用类似于SQL语句方式访问考勤机中的数据表及设备信息。
相对原有通信接口,dataapi接口提供仅10个函数,使用简单、直观。
提供dataapi接口的commro.dll动态库,依然兼容原有的通信接口。
2函数简述
以下为dataapi接口包含的函数,仅列出了函数名及功能叙述。
参数描述和详细的调用方法,参考提供的demo例程。
2.1Connect
[函数]
DLLIMPORTvoid*__stdcallConnect(constchar*Parameters);
[功能]
连接到设备,连接成功后返回连接的句柄。
[示例]
VC:
CStringszPara="protocol=HTTP,ipaddress=192.168.1.201,port=80,name=12345,passwd=12345";
HANDLEh=Connect(szPara);
VB:
PrivateDeclareFunctionConnectLib"commpro.dll"(ByValParametersAsString)AsLong
DimhAsLong'连接设备句柄
DimretAsLong'函数返回
h=
Connect("protocol=HTTP,ipaddress=192.168.1.213,port=80,name=12345,passwd=12345")
MsgBox"Connectreturn=0x"+Hex(h)
Java:
commpro2javaco=newcommpro2java();
longh=
co.Connect("protocol=HTTP,ipaddress=192.168.1.213,port=80,name=12345,passwd=12345");
System.out.printf("ReturnHandle=0x%x\n",h);
2.2Disconnect
[函数]
DLLIMPORTvoid__stdcallDisconnect(void*Handle);
[功能]
断开与设备的连接。
[示例]
VC:
Disconnect(h);
VB:
Disconnect(h)
Java:
co.Disconnect(h);
2.3DataQuery
[函数]
DLLIMPORTint__stdcallDataQuery(void*Handle,char*Buffer,intBufferSize,constchar*TableName,constchar*FieldNames,constchar*Filter,constchar*Options);
[功能]
根据输入的表名、过滤条件、选项来查询设备中的数据,返回符合条件的记录数。
表名见附件
[示例]
VC:
char*bufOut=(char*)malloc(2*1024*1024);//至少分配K以上,这里分配的是M字节
CStringstrTable="UserInfo";
CStringstrFields="*";
CStringstrFilter="pin<100";
CStringstrOptions="";
ret=DataQuery(h,(char*)bufOut,2*1024*1024,strTable,strFields,strFilter,strOptions);
VB:
BufferSize=204800
Buffer=Space(BufferSize)
TableName="UserInfo"'//可选择的表有:
UserInfo/FPTemplate/Transaction/OpLog/Sms/Workcode
FieldNames="*"'//“*”为显示全部字段
fil=""'//过滤条件,不填写为没有指定过滤条件
Options=""
ret=DataQuery(h,Buffer,BufferSize,TableName,FieldNames,fil,Options)
MsgBox"DataQueryreturn="+Str$(ret)
PrintBuffer
Java:
inti=0;
byte[]Buffer=newbyte[5*1024*1024];//分配M内存
for(i=0;i<5*1024*1024;i++)
Buffer[i]=0x00;//清空这片内存
intBufferSize=Buffer.length;
StringTableName="FPTemplate";'//可选择的表有:
UserInfo/FPTemplate/Transaction/OpLog/Sms/Workcode
StringFieldNames="*";//“*”为显示全部字段
StringFilter="";//出现中文时,使用Filter.getBytes(“gb2312”)传递参数
StringOptions="";
intlen=co.DataQuery(h,Buffer,BufferSize,TableName.getBytes(),FieldNames.getBytes(),Filter.getBytes(),Options.getBytes());
StringszBuffer=newString(Buffer);
intnNull=szBuffer.indexOf(0)+1;//找到第一个'\0'的位置,重新构造一个串
StringszRet=newString(Buffer,0,nNull);
System.out.println(szRet);
2.4DataCount
[函数]
DLLIMPORTint__stdcallDataCount(void*Handle,constchar*TableName,constchar*Filter,constchar*Options);
[功能]
根据输入的表名、过滤条件来查询设备中的数据记录数。
[示例]
VC:
CStringstrTable="UserInfo";
CStringstrFilter="pin<100";
CStringstrOptions="";
ret=dataCount(h,strTable,strFilter,strOptions);
VB:
TableName="UserInfo"
fil=""
Options=""
ret=DataCount(h,TableName,fil,Options)
MsgBox"DataCountreturn="+Str$(ret)
Java:
TableName="UserInfo";
Filter="";//出现中文时,使用Filter.getBytes(“gb2312”)传递参数
Options="";
len=co.DataCount(h,TableName.getBytes(),Filter.getBytes(),Options.getBytes());
System.out.printf("DataCountReturn=%d\n",len);
2.5DataAppend
[函数]
DLLIMPORTint__stdcallDataAppend(void*Handle,constchar*TableName,constchar*Datas,constchar*Options);
[功能]
增加数据到设备中,返回设备成功新增的数据记录数
[示例]
VC:
CStringstrTable="UserInfo";
CStringstrPost="PIN=2111\r\nPIN=2112\tname=www\r\nPIN=2113";//在代码中要明确的使用”\r\n”及”\r”
CStringstrOptions="";
ret=dataAppend(h,strTable,strPost,strOptions);
VB:
TableName="UserInfo"
Options=""
Datas="PIN=2111"+vbTab+"name=ixie"+vbCrLf+"PIN=2113"+vbCrLf+"PIN=2112"
ret=DataAppend(h,TableName,Datas,Options)
MsgBox"DataAppendreturn="+Str$(ret)
Java:
TableName="UserInfo";
Options="";
StringDatas="PIN=2111\r\nPIN=2112\r\nPIN=2113";//出现中文时,使用
//Datas.getBytes(“gb2312”)传递参数
len=co.DataAppend(h,TableName.getBytes(),Datas.getBytes(),Options.getBytes());
System.out.printf("DataAppendReturn=%d\n",len);
2.6DataUpdate
[函数]
DLLIMPORTint__stdcallDataUpdate(void*Handle,constchar*TableName,constchar*DataValues,constchar*Filter,constchar*Options);
[功能]
更新设备中的表的数据
[示例]
VC:
CStringstrTable="UserInfo";
CStringstrPost="name=xyz";
CStringstrFilter="pin<100";//将用户表中pin<100的用户的姓名,更改为xyz
CStringstrOptions="";
ret=dataUpdate(h,strTable,strPost,strFilter,strOptions);//
VB:
TableName="UserInfo"
fil="pin<100"'//过滤条件
Options=""
DataValues="name=xyz"
ret=DataUpdate(h,TableName,DataValues,fil,Options)
MsgBox"DataUpdatereturn="+Str$(ret)
Java:
TableName="UserInfo";
Filter="pin<2111";
Options="";
StringDataValues="name=xyz";//出现中文时,使用DataValues.getBytes(“gb2312”)传递参数
len=co.DataUpdate(h,TableName.getBytes(),DataValues.getBytes(),Filter.getBytes(),Options.getBytes());
System.out.printf("DataUpdateReturn=%d\n",len);
2.7DataDelete
[函数]
DLLIMPORTint__stdcallDataDelete(void*Handle,constchar*TableName,constchar*Filter,constchar*Options);
[功能]
根据表名、过滤条件及选项,删除设备中的表的数据。
[示例]
VC:
CStringstrTable="UserInfo";
CStringstrFilter="namelike张*";
CStringstrOptions="";
ret=dataDelete(h,strTable,strFilter,strOptions);
VB:
TableName="UserInfo"
fil="pin=2112"'//过滤条件
Options=""
ret=DataDelete(h,TableName,fil,Options)
MsgBox"DataDeletereturn="+Str$(ret)
Java:
TableName="UserInfo";
Filter="pin=2112";//出现中文时,使用DataValues.getBytes(“gb2312”)传递参数
Options="";
len=co.DataDelete(h,TableName.getBytes(),Filter.getBytes(),Options.getBytes());
System.out.printf("DataDeleteReturn=%d\n",len);
2.8InfoQuery
[函数]
DLLIMPORTint__stdcallInfoQuery(void*Handle,char*Buffer,intBufferSize,constchar*Items);
[功能]
查询设备信息,如当前时间、制造商、设备号等。
返回值为数据的长度。
设备信息定义见附录
[示例]
VC:
char*bufOut=(char*)malloc(2*1024*1024);//至少分配K以上,这里分配的是2M字节
CStringszKey="System.GetTime,System.OS"
ret=infoQuery(h,(char*)bufOut,2*1024*1024,szKey);
VB:
BufferSize=204800
Buffer=Space(BufferSize)
Cls
Items="System.GetTime,System.OS"
ret=InfoQuery(h,Buffer,BufferSize,Items)
PrintBuffer
MsgBox"InfoQueryreturn="+Str$(ret)
Java:
byte[]Buffer=newbyte[5*1024*1024];//分配5M内存
for(i=0;i<5*1024*1024;i++)Buffer[i]=0x00;//清空这片内存
StringItems="System.GetTime,System.OS";
len=co.InfoQuery(h,Buffer,BufferSize,Items.getBytes());
intnNull2=szBuffer2.indexOf(0)+1;//找到第一个'\0'的位置,重新构造一个串
StringszRet2=newString(Buffer,0,nNull2);
System.out.println(szRet2);
2.9InfoUpdate
[函数]
DLLIMPORTint__stdcallInfoUpdate(void*Handle,constchar*ItemAndValues);
[功能]
设置设备信息。
[示例]
VC:
CStringpCode="System.Beep=3\r\nSystem.PlayVoice=FILE:
S_2.wav";
intret=infoUpdate(h,pCode);//
VB:
ItemAndValues="System.PlayVoice=FILE:
S_3.wav"
ItemAndValues=ItemAndValues+vbCrLf‘//\r\n
ItemAndValues=ItemAndValues+"System.Beep=3"
ret=InfoUpdate(h,ItemAndValues)
MsgBox"InfoUpdatereturn="+Str$(ret)
Java:
StringItemAndValues="System.Beep=3\r\nSystem.PlayVoice=FILE:
S_2.wav";
len=co.InfoUpdate(h,ItemAndValues.getBytes());
System.out.printf("InfoUpdateReturn=%d\n",len);
2.10GetRTLog
[函数]
DLLIMPORTint__stdcallGetRTLog(void*Handle,char*Buffer,intBufferSize);
[功能]
实时获取考勤机的数据。
[示例]
VC:
while
(1)
{
memset(buffer,0x00,OUT_SIZE);//注意每次使用buffer前清空
ret=GetRTLog(h,buffer,OUT_SIZE);
if(ret>=0)
{
//打印buffer中的值
//.........
}
Sleep(1000);//延时一秒
}
Java:
while(true)
{
for(i=0;i<5*1024*1024;i++)Buffer[i]=0x00;//Clearbuffer
ret=co.GetRTLog(h,Buffer,Buffer.length);
if(ret>=0)
{
StringszBuffer=newString(Buffer);
intnNull=szBuffer.indexOf(0)+1;//找到第一个'\0'的位置,重新构造一个串
StringszRet=newString(Buffer,0,nNull);
System.out.println(szRet);
}
if(kkk++>1000)break;
Thread.sleep(1000);//延时
}
3表名附件
表名
说明
使用模式
UserInfo
用户信息表
可上传下载
Template
指纹模板表
可上传下载
OpLog
操作记录表
可下载,不可上传
PosLog
消费记录表
可下载,不可上传
PressKey
按键金额设置表
可上传下载
StoreInfo
商品信息设置表
可上传下载
Mealtype
餐别设置表
可上传下载
TimeSeg
就餐时间段设置表
可上传下载
Fixed
分段定值表
可上传下载
PayDetail
商品消费明细
可下载,不可上传
TmPosLog
计时消费记录
可下载,不可上传
CardType
卡类设置表
可上传下载
FullValue
充值记录表
可下载,不可上传
SubSidyLog
下载待补贴表
可上传下载
SidyLog
补贴记录表
可下载,不可上传
KeyDetail
按键消费明细表
可下载,不可上传
设备信息定义
参数定义
说明
KeyPadBeep=0
键盘Beep(1打开,0关闭)
ShowName=0
是否显示姓名(1打开,0关闭)
CardMaxMoney=999999
卡最大限额
DeviceID=1
机号
ComKey=0
连接密码
UseSection=1
主扇区
BackSection=2
备份扇区
CardPass=0
扇区密码
BlackList=1
是否开启黑名单
WhiteList=0
是否开启白名单
Operatorcard
是否启用操作员卡锁定
UseFinger
使用指纹验证
ConsKeap
是否使用记帐
FixMoney
定值金额
TimeSegMod
使用分段定值模式
Consmod
消费模式(1定值,2金额,3按键,4记次模式,5商品模式,6时间模式,7记帐模式)
GetIntmod
取整(记时模式下)
HourPrice
时价(记时模式下)
hypos
刷一次卡记几次(记次模式下)
VoiceFunOn
是否开启语音
Favourable
优惠充值
FullValueMod
充值模式0定额1金额
FullFixVaule
定值金额
FullType
充值状态0充值1退款
AllowUseOK
是否使用确定键补贴
MachineType
机器类型0消费机1充值机2补贴机3订餐机
UseBarcode
使用条码
CardWitdh
卡号显示宽度
AddAllow
累加补贴
ZeroAllow
写卡清零
MaxRecordCount
最大记录数7*10000
MaxUserCount
最大用户数3*10000