中控考勤机SDK使用中员工姓名的处理( c# )

公司使用的考勤机是中控的指纹考勤机,但是中控的型号乱七八糟,通过程序读出来的型号和实际标的型号不一致。

另外,提供的开发包的C#版本的Demo中调用

axCZKEM1.ReadAllUserID(iMachineNumber);

后调用

axCZKEM1.SSR_GetAllUserInfo(iMachineNumber, out sdwEnrollNumber, out sName, out sPassword, out iPrivilege, out bEnabled)

来获取所有用户信息时,返回的sName(雇员姓名)每次总是在后面多几个字节,虽然显示到Demo中的ListView中时,windows自动屏蔽了乱码,但是程序处理时依然会出现乱码。

用下面的方法可以解决此问题,并能从sName中解析出正确的雇员姓名。

 //处理名字中多余的字符
                //utf8编码后的字节数组长度,名字中汉字的个数=(byte[]长度-10)/6+2
                //提取汉字=字节数组的0开始,到名字中汉字的个数*3
                if (null != sName)
                {

                    byte[] nameBytes = System.Text.Encoding.UTF8.GetBytes(sName);
                    if (nameBytes.Length >= 10)
                    {
                        int nameLength = (nameBytes.Length - 10) / 6 + 2;
                        sName = System.Text.Encoding.UTF8.GetString(nameBytes, 0, 3 * nameLength);
                    }
                    /*
                    switch (nameBytes.Length)
                    {
                        case 22:
                            sName = System.Text.Encoding.UTF8.GetString(nameBytes, 0, 12);
                            break;
                        case 16:
                            sName = System.Text.Encoding.UTF8.GetString(nameBytes, 0, 9);
                            break;
                        case 10:
                            sName = System.Text.Encoding.UTF8.GetString(nameBytes, 0, 6);
                            break;
                        default:
                            sName = getChinese(sName);
                            break;
                    }
                   */
                }
                else
                {
                    sName = "null";
                }

顺便吐槽下中控的考勤机的SDK:

无法获取指定时间内的考勤数据,必须每次都全量下载。

顺便赞一下Demo的质量:

编程风格很严谨,代码注释很详细。赞!

时间: 2024-10-13 00:15:01

中控考勤机SDK使用中员工姓名的处理( c# )的相关文章

中控考勤机二次开发小记

最近公司更换了一批考勤机,但是居然无法上传和下载指纹等数据.我们的系统用的是广东一家人力资源系统,问了一下,说他们的系统不支持最新中控更新了固件的考勤机.我KAO了他NN个熊,不支持居然?特别是还要收好几千大洋的费用,问题我们还交着服务费呢?要不就在他们哪买卡机,免费给我们升级,哪还是一样吗?他们卖的考勤机可不是市场上的价格,是贵 一半的价格. 好吧, 其实要钱也不是要我给,但公司也不愿意给啊,这样的申请过不去啊.人事部也在闹,扯来扯去的.我用中控几年前发布的ZKTIME5.0这款自带的软件操作

python连接中控考勤机分析数据

用python连接中控考勤机. 下载并分析数据,把结果邮件给人事. 中控SDK包: x32地址 x64地址 SDK包建议用32位的,在win7 64位系统上用64位开发包不行,用32可以. python还要pywin32 注意版本,我这用的 32位的python 2.7 然后下的这个pywin32 #!/usr/bin/env python #_*_ coding:gbk _*_ import win32com.client import time import sys import smtpl

中控考勤机的二次开发之数据秒上传至服务器功能

1.客户选择了中控考勤机:IFACE系列 2.客户需要在WEB端实时看到员工的考勤情况 3.需要做到客户员工数据及时传递到服务器 实现方法如下: 1.安装中控DLL(一定要注意操作系统是32位还是64位,折腾死人,问题总是出现不会想到的地方) 2.配置.NET环境,版本不能低于研发环境版本 3.做成电脑服务程序,时刻监控考勤机,只要有人打卡,就取出,ID,员工名称,打卡时间点,上传服务器 有时间,我上传一个开发包上来抛砖引玉,供大家参考. 原文地址:https://www.cnblogs.com

MapReduce例程-列出工资比上司高的员工姓名及其工资

数据 EMPNO       ENAME        JOB                   MGR   HIREDATE                      SAL         COMM      DEPTNO       7369 SMITH      CLERK           7902 17-12月-80            800                    20       7499 ALLEN      SALESMAN        7698 20

部门中薪资超过部门平均薪资的员工姓名及薪资

部门中薪资超过部门平均薪资的员工姓名及薪资 # 题表 # 建表 create table emp( id int not null unique auto_increment, name varchar(20) not null, sex enum('male','female') not null default 'male', #大部分是男的 age int(3) unsigned not null default 28, hire_date date not null, post varc

zkteco iface702 中控考勤机java开发步骤二---获取考勤机 的考勤数据

1.工具类---ZkemSDKUtils package com.XXX.gasstation.commons.utils; import com.jacob.activeX.ActiveXComponent; import com.jacob.com.Dispatch; import com.jacob.com.Variant; import com.XXX.gasstation.commons.utils.lang.DateUtils; import net.sf.json.JSONObje

中控考勤机的二次开发之灵活调配职工功能

客户新增需求 1.客户员工需要不定时的外派或支援 2.客户员工发适时的到分公司去打卡 3.客户员工的打卡数据需要及时的发放到目标分公司 4.实现功能如下: 1)各分公司需要及时从考勤机上取得员工的打卡验证数据 2)各分公司需要及时上传员工考勤验证数据到服务器 3)各分公司需要及时从服务器上调出被调过来员工的考勤验证数据 4)各分公司需要及时把调出来员工数据同步到本公司的考勤机上 5)将要来的员工就可以及时打卡了 6)每个考勤机都是有最大容量的,所以,增加了删除员工数据功能 找时间,把代码分享出来

oracle中plsql练习题----查询姓为“SMITH”的员工信息,并输出其员工号、姓名、工资、部门号。 – –如果该员工不存在,则插入一条新记录,员工号为2012,员工姓名为“Smith”,工资为7500元,入职日期为“2002年3月5日”,部门号为50。 – –如果存在多个名“Smith”的员工,则输出所有名为“Smith”的员工号、姓名、工资、入职日期、部门号L。

一.思路:首先判断这个查询的是emp表,需要接收值,声明一个rowtype类型接收数据即可,第二是,存在exception,需要处理,exception中有两种异常,分别处理即可,分别输出即可. 二.在增删改之后加上commit提交事物. 三.具体实现 1 declare 2 -- 声明rowtype类型接收数据即可 3 v_emp emp%rowtype; 4 5 begin 6 -- 查询员工中姓为“SMITH” 7 select * into v_emp from emp where en

Ajax提交数据判断员工编号是否存在,及自动填充与员工编号所对应的员工姓名。

JSP页面中所需要的JavaScript事件及Ajax 1 <script type="text/javascript"> 2 function checkEmpNo(id){ 3 var empNoValue=document.getElementById(id).value; 4 $.ajax({ 5 type:'post', 6 url:'employee_checkEmpNoAndEmpName.htm', 7 data:'empNo='+empNoValue, 8