zoukankan      html  css  js  c++  java
  • 中控考勤机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的质量:

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

  • 相关阅读:
    LeetCode155. 最小栈
    LeetCode154. 寻找旋转排序数组中的最小值 II
    LeetCode153. 寻找旋转排序数组中的最小值
    LeetCode152. 乘积最大子数组
    Python 异常值数据
    Python 生成周期性波动的数据 可指定数值范围
    VUE 组件 事件传递
    MyBatis-Plus And和Or的使用
    SQL Server 复制一条数据
    PLC扩展模拟量输入模块是什么
  • 原文地址:https://www.cnblogs.com/sixiweb/p/4809347.html
Copyright © 2011-2022 走看看