中控考勤机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 >= )
{
int nameLength = (nameBytes.Length - ) / + ;
sName = System.Text.Encoding.UTF8.GetString(nameBytes, , * 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的质量:
编程风格很严谨,代码注释很详细。赞!
中控考勤机SDK使用中员工姓名的处理( c# )的更多相关文章
- 中控考勤机使用 zkemkeeper SDK订阅考勤数据事件失效解决方式
问题 前同事编写的对中控考勤机数据集成项目当中,打卡数据不能实时进行上传到平台当中,一直靠定时全量上传来同步数据. 阅读代码后,发现代码中有实时上传数据的逻辑,但是运行一段时间后,中控zkemkeep ...
- 通达OA 同步中控考勤机 增强版
如果你用的是中控考勤机且考勤机能联网,那恭喜有福了! 最近发现考勤机提供web方式查询,经过调试可以用程序直接读取考勤机数据跨过考勤机软件及其access数据库,数据同步及时性.可靠性大幅提高. 通达 ...
- oracle中plsql练习题-----编写一个PL/SQL块,输出所有员工的员工姓名、员工号、工资和部门号
一.思路:首先输出需要变量接收,需要声明变量,于是考虑什么变量类型比较合适,在这我用的是table类型,最后,查询出来,循环输出即可. 二.具体实现 -- 编写一个PL/SQL块,输出所有员工的员工姓 ...
- Java初学者作业——编写JAVA程序,在控制台中输入六位员工的姓名,通过随机点名方式,输出当选组长的员工姓名。
返回本章节 返回作业目录 需求说明: 编写JAVA程序,在控制台中输入六位员工的姓名,通过随机点名方式,输出当选组长的员工姓名. 实现思路: (1)定义字符串类型的数组names,长度为6,用于存储六 ...
- oracle中plsql练习题----查询姓为“SMITH”的员工信息,并输出其员工号、姓名、工资、部门号。 – –如果该员工不存在,则插入一条新记录,员工号为2012,员工姓名为“Smith”,工资为7500元,入职日期为“2002年3月5日”,部门号为50。 – –如果存在多个名“Smith”的员工,则输出所有名为“Smith”的员工号、姓名、工资、入职日期、部门号L。
一.思路:首先判断这个查询的是emp表,需要接收值,声明一个rowtype类型接收数据即可,第二是,存在exception,需要处理,exception中有两种异常,分别处理即可,分别输出即可. 二. ...
- 中控考勤机-C#操作
引用:Interop.zkemkeeper.dll 实例化: public zkemkeeper.CZKEM axCZKEM1 = new zkemkeeper.CZKEM(); 首先从数据库中获取考 ...
- 中控考勤机WEB主动上报接收SERVER程序
using System; using System.IO; using System.Net; using System.Text.RegularExpressions; namespace Con ...
- Ajax提交数据判断员工编号是否存在,及自动填充与员工编号所对应的员工姓名。
JSP页面中所需要的JavaScript事件及Ajax <script type="text/javascript"> function checkEmpNo(id){ ...
- 如何用分析函数找出EMP表中每个部门工资最高的员工
EMP表是Oracle测试账户SCOTT中的一张雇员表,首先,我们来看看emp表的数据 SQL> select * from emp; EMPNO ENAME JOB MGR HIREDATE ...
随机推荐
- SQLServer中查询表结构(表主键 、列说明、列数据类型、所有表名)的Sql语句
SQLServer中查询表结构(表主键 .列说明.列数据类型.所有表名)的Sql语句 1.查询数据库中的所有表名称: SELECT name FROM SysObjects Where XType=' ...
- MAVEN创建JAVA的Web工程
maven命令:http://blog.csdn.net/edward0830ly/article/details/8748986 1.创建MAVEN的Web工程 mvn archetype:gene ...
- 在 Vim 中使用 pydiction 对 Python 进行代码补全
Pydiction 允许你在 Vim 中实现 TAB 代码补全, 可以补全的内容包括:标准的.自定义的,以及第三方模块和包.外加关键字.BIFs,和字符串. Pydiction 由 3 个主要文件构成 ...
- Nginx配置站点适配PC和手机
考虑到站点的在多种设备下的兼容性,有非常多站点会有手机版和电脑版两个版本号.訪问同一个站点URL,当服务端识别出用户使用电脑訪问.就打开电脑版的页面,用户假设使用手机訪问,则会得到手机版的页面. 1. ...
- 《Android源代码设计模式解析与实战》读书笔记(十)
第十章.解释器模式 解释器模式是一种用的比較少的行为型模式.其提供了一种解释语言的语法或表达式的方式. 可是它的使用场景确实非常广泛,仅仅是由于我们自己非常少回去构造一个语言的文法,所以使用较少. 1 ...
- PCL中的OpenNI点云获取框架(OpenNI Grabber Framework in PCL)
从PCL 1.0开始,PCL(三维点云处理库Point Cloud Library)提供了一个通用采集接口,这样可以方便地连接到不同的设备及其驱动.文件格式和其他数据源.PCL集成的第一个数据获取驱动 ...
- [pip]安装和管理python第三方包
使用 ”pip install 包名“ 直接下载安装第三方包 1.在以下地址下载最新的PIP安装文件:http://pypi.python.org/pypi/pip#downloads2.下载Wi ...
- 完美解决office2013 错误1402
遇到1402问题 按照网络上的帖子都无法解决,老提示无权限更改,原来只是少了一个步骤而已!经本人多次试验,已经完美解决,现在上图! 步骤 肯定是得先出现错误,找到注册表所在项! 这个就不赘述,通过 ...
- Spring Cloud环境搭建: Eureka Server
项目目录结构, 总共三个文件 ├── pom.xml └── src ├── main │ ├── java │ │ └── com │ │ └── rockbb │ │ ...
- 【php页面表单提交】form校验后再提交,非ajax提交
form表单校验后,在执行提交动作: <form method="post" action="{:U('Custom/addmsg')}" id=&quo ...