当前开发个项目需要读取到 依时利 889D 考勤机数据,查看系统自带的二次开发范例,有PB VB范例,我不懂这两种语言,但看其程序里面都有 EastRiver.dll 这个dll文 及 EastRiver.ini 这个ini文件,所以是这两种语言调用 dll进行操作的吧,查看帮助文档信息附在后面,但如果用Java语言调用这些dll及相关方法以获取考勤机上的数据?没有思路,因为没有底层接口开发的经验,故在这里开帖向大家请教,并从中学习,TKS。(看了相关资料说是用JNI,但没学习JNI,欢迎大家讨论)依时利 889D 帮助文档/*
文档中各个函数的语法均用Delphi声明,如有不便,在此深表歉意。在调用过程中,如有疑惑,欢迎来电咨询!
*/
/************** A *********************/
BatchReadRecord: 批量读取数据 语法:
function BatchReadRecord(hPort: THandle; var Records: array of TICRecord{; ArraySize: Integer}): Integer; 参数说明:
hPort: 端口句柄, 调用OpenCommPort函数得到,需要联机
Records: 返回记录数组, 最少需要16个单元
ArraySize: Delphi不需要,如果是VB或是C++需要传数组大小参数 返回变量: -1 : 错误 0 : 记录已经读完 1-16 : 正确读取的记录条数 其它说明:
1.本函数每次读回一批(最大不超过16)记录, 用户应在一个循环语句中反复读取,直到返回值为0时数据
读取完成
2.TICRecord结构中包含一条记录
3.使用该命令读取记录时,机器中的数据会自动删除 适用机型:
ER88X、ER-890、ER-98X、ER-690D、ER-690C1.X版/************* B ********************/
OpenCommPort: 打开串行通讯端口 语法:
function OpenCommPort(Port: Integer; BaudRate: Integer): Thandle; 参数说明: Port:端口号,允许值1-256, 如: COM1=1, COM2=2...COM256=256 BaudRate:端口波特率,允许值:9600、19200、38400、通常是9600,对
于ER981、ER890机型还支持57600、115200的波特率返回变量: 如果函数调用成功,返回的值就是端口句柄,用于其它函数调用。 如果函数调用失败,当返回的值是-1时,端口无效或正在使用;
当返回的值是0时,无法打开端口。
其它说明:
1.用户可声明TClockINfo类型的变量,然后对数据结构赋值,再传入该结构中Port及BaudRate域值做为本函
数的参数,当然,也可不定义TClockInfo来实现
2.使用Windows API 函数CloseHandle(hObject: HANDLE): BOOL; 来关闭端口句柄/***************** C ************************/ ClosePortHandle: 关闭端口句柄 语法:
function ClosePortHandle(hPort: THandle): Boolean; 参数说明: hPort: 己经打开的端口句柄,通过调用OpenCommPort函数得到其它说明:
也可以调用Windows的API函数CloseHandle返回变量: 如果函数调用成功,返回的值是True 如果函数调用失败,返回的值是False/**************************************/
文档中各个函数的语法均用Delphi声明,如有不便,在此深表歉意。在调用过程中,如有疑惑,欢迎来电咨询!
*/
/************** A *********************/
BatchReadRecord: 批量读取数据 语法:
function BatchReadRecord(hPort: THandle; var Records: array of TICRecord{; ArraySize: Integer}): Integer; 参数说明:
hPort: 端口句柄, 调用OpenCommPort函数得到,需要联机
Records: 返回记录数组, 最少需要16个单元
ArraySize: Delphi不需要,如果是VB或是C++需要传数组大小参数 返回变量: -1 : 错误 0 : 记录已经读完 1-16 : 正确读取的记录条数 其它说明:
1.本函数每次读回一批(最大不超过16)记录, 用户应在一个循环语句中反复读取,直到返回值为0时数据
读取完成
2.TICRecord结构中包含一条记录
3.使用该命令读取记录时,机器中的数据会自动删除 适用机型:
ER88X、ER-890、ER-98X、ER-690D、ER-690C1.X版/************* B ********************/
OpenCommPort: 打开串行通讯端口 语法:
function OpenCommPort(Port: Integer; BaudRate: Integer): Thandle; 参数说明: Port:端口号,允许值1-256, 如: COM1=1, COM2=2...COM256=256 BaudRate:端口波特率,允许值:9600、19200、38400、通常是9600,对
于ER981、ER890机型还支持57600、115200的波特率返回变量: 如果函数调用成功,返回的值就是端口句柄,用于其它函数调用。 如果函数调用失败,当返回的值是-1时,端口无效或正在使用;
当返回的值是0时,无法打开端口。
其它说明:
1.用户可声明TClockINfo类型的变量,然后对数据结构赋值,再传入该结构中Port及BaudRate域值做为本函
数的参数,当然,也可不定义TClockInfo来实现
2.使用Windows API 函数CloseHandle(hObject: HANDLE): BOOL; 来关闭端口句柄/***************** C ************************/ ClosePortHandle: 关闭端口句柄 语法:
function ClosePortHandle(hPort: THandle): Boolean; 参数说明: hPort: 己经打开的端口句柄,通过调用OpenCommPort函数得到其它说明:
也可以调用Windows的API函数CloseHandle返回变量: 如果函数调用成功,返回的值是True 如果函数调用失败,返回的值是False/**************************************/
我大概也清楚需要JNI,但因为项目比较急,不想深入研究(因为一般很少用到这个技术,学习需要时间),只想把功能实现即可可否依照以上资料帮我写个程序,分数可以再加如需其他条件,也可以谈- -#
(如还需其他二次开发文档及资料,我可以提供^..^)
要用jni需要对C语言有基础和编写能力,我告诉你的JACOB和JWIN是两个开源项目,目前由国外程序员在维护,他们都是已经封装了底层实现,JNI一般不用自己去写,只要关心怎么实现就行了,你觉得有帮助的话,你可以自己去看看资料..........
Hello injuer,我百度 跟GG都查了下,没有满意的相关资料,你那边是否有,如有,欢迎提供学习交流,TKS,QQ:1335861994