コード例 #1
0
        private void btnUploadPrivilege_Click(object sender, EventArgs e)
        {
            int ret     = 0;
            int success = 0;  //0 失败, 1表示成功

            if (string.IsNullOrEmpty(txtSN.Text))
            {
                MessageBox.Show("请输入有效的控制器SN");
                return;
            }
            String ControllerIP = txtIP.Text;
            long   controllerSN = long.Parse(txtSN.Text);

            //创建短报文 pkt
            WGPacketShort pkt = new WGPacketShort();

            pkt.iDevSn = controllerSN;
            pkt.IP     = ControllerIP;
            //1.11	权限添加或修改[功能号: 0x50] **********************************************************************************
            //增加卡号0D D7 37 00, 通过当前控制器的所有门
            pkt.Reset();
            pkt.functionID = 0x50;
            //0D D7 37 00 要添加或修改的权限中的卡号 = 0x0037D70D = 3659533 (十进制)
            long cardNOOfPrivilege = long.Parse(this.txtCardNO.Text); // 0x0037D70D;

            LongToBytes(ref pkt.data, 0, cardNOOfPrivilege);

            //20 10 01 01 起始日期:     (必须大于2001年)
            DateTime ptm = dtpActivate.Value;

            pkt.data[4] = (byte)GetHex((ptm.Year - ptm.Year % 100) / 100); //0x20;
            pkt.data[5] = (byte)GetHex((int)((ptm.Year) % 100));           // 0x10;
            pkt.data[6] = (byte)GetHex(ptm.Month);                         // 0x01;
            pkt.data[7] = (byte)GetHex(ptm.Day);
            //20 29 12 31 截止日期:
            ptm          = dtpDeactivate.Value;
            pkt.data[8]  = (byte)GetHex((ptm.Year - ptm.Year % 100) / 100); //0x20;
            pkt.data[9]  = (byte)GetHex((int)((ptm.Year) % 100));           // 0x10;
            pkt.data[10] = (byte)GetHex(ptm.Month);                         // 0x01;
            pkt.data[11] = (byte)GetHex(ptm.Day);

            pkt.data[30] = (byte)GetHex(ptm.Hour);   //时
            pkt.data[31] = (byte)GetHex(ptm.Minute); //分


            //01 允许通过 一号门 [对单门, 双门, 四门控制器有效]
            pkt.data[12] = 0x01;
            //01 允许通过 二号门 [对双门, 四门控制器有效]
            pkt.data[13] = 0x01;  //如果禁止2号门, 则只要设为 0x00
            //01 允许通过 三号门 [对四门控制器有效]
            pkt.data[14] = 0x01;
            //01 允许通过 四号门 [对四门控制器有效]
            pkt.data[15] = 0x01;

            ret     = pkt.run();
            success = 0;
            if (ret > 0)
            {
                if (pkt.recv[8] == 1)
                {
                    //这时 刷卡号为= 0x0037D70D = 3659533 (十进制)的卡, 1号门继电器动作.
                    log("1.11 权限添加或修改	 成功...");
                    success = 1;
                }
            }
            if (success < 1)
            {
                log("1.11 权限添加或修改	 失败...");
            }
        }
コード例 #2
0
        private void btnSetQRPassword_Click(object sender, EventArgs e) //2017-11-11 09:20:28 设置二维码密码
        {
            int ret     = 0;
            int success = 0;  //0 失败, 1表示成功

            if (string.IsNullOrEmpty(txtSN.Text))
            {
                MessageBox.Show("请输入有效的控制器SN");
                return;
            }
            String ControllerIP = txtIP.Text;
            long   controllerSN = long.Parse(txtSN.Text);

            //创建短报文 pkt
            WGPacketShort pkt = new WGPacketShort();

            pkt.iDevSn = controllerSN;
            pkt.IP     = ControllerIP;

            //查询控制器驱动版本[功能号: 0x94] **********************************************************************************
            pkt.Reset();
            pkt.functionID = 0x94;
            ret            = pkt.run();

            if (ret == 1)
            {
                string controllerVersion = "0"; //控制器版本
                controllerVersion = string.Format("{0:X}.{1:X}", pkt.recv[26], pkt.recv[27]);
                log(" 当前控制器驱动版本 = V" + controllerVersion);
                if (double.Parse(controllerVersion) < 8.92)
                {
                    MessageBox.Show(" 当前控制器驱动版本 = V" + controllerVersion + ",必须要8.92版本才行!");
                    return;
                }
            }
            else
            {
                log("查询控制器驱动版本 失败?????...");
                return;
            }


            pkt.Reset();

            string pwd = txtQRPassword.Text;

            byte[] sendData =
            {
                (byte)0, (byte)0, (byte)0, (byte)0, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
                (byte)0, (byte)0, (byte)0, (byte)0, (byte)0,    (byte)0,    (byte)0x00, (byte)0x00
            };
            byte[] pwdData =
            {
                (byte)0, (byte)0, (byte)0, (byte)0, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
                (byte)0, (byte)0, (byte)0, (byte)0, (byte)0,    (byte)0,    (byte)0x00, (byte)0x00
            };
            byte[] p = Encoding.UTF8.GetBytes(pwd);
            if (sender == this.btnSetQRPassword)
            {
                for (int i = 0; i < p.Length && i < 16; i++)
                {
                    pwdData[i] = p[i];
                }
            }
            pkt.functionID = 0xE0;
            //防止误操作标识
            Array.Copy(System.BitConverter.GetBytes(WGPacketShort.SpecialFlag), 0, pkt.data, 0, 4);
            for (int i = 0; i < 16; i++)  //设置新密码
            {
                pkt.data[4 + i]  = pwdData[i];
                pkt.data[36 + i] = pwdData[i];
            }
            Array.Copy(System.BitConverter.GetBytes(WGPacketShort.SpecialFlag), 0, pkt.data, 20, 4);  //设置QR密码必须

            ret     = pkt.run();
            success = 0;
            if (ret > 0)
            {
                //if (pkt.recv[8] == 1)
                {
                    if (sender == this.btnSetQRPassword)
                    {
                        log("QR二维码密码设置成功...");
                    }
                    else
                    {
                        log("清除QR二维码密码成功...");
                    }
                    success = 1;
                }
            }
            if (success == 0)
            {
                log("设置	 失败...");
            }
        }
コード例 #3
0
        private void btnQRFunction_Click(object sender, EventArgs e)
        {
            int ret     = 0;
            int success = 0;  //0 失败, 1表示成功

            if (string.IsNullOrEmpty(txtSN.Text))
            {
                MessageBox.Show("请输入有效的控制器SN");
                return;
            }
            String ControllerIP = txtIP.Text;
            long   controllerSN = long.Parse(txtSN.Text);

            //创建短报文 pkt
            WGPacketShort pkt = new WGPacketShort();

            pkt.iDevSn = controllerSN;
            pkt.IP     = ControllerIP;

            //查询控制器驱动版本[功能号: 0x94] **********************************************************************************
            pkt.Reset();
            pkt.functionID = 0x94;
            ret            = pkt.run();

            success = 0;
            if (ret == 1)
            {
                string controllerVersion = "0"; //控制器版本
                controllerVersion = string.Format("{0:X}.{1:X}", pkt.recv[26], pkt.recv[27]);
                log(" 当前控制器驱动版本 = V" + controllerVersion);
                //if (float.Parse(controllerVersion) < 8.0)
                //{
                //    MessageBox.Show("控制器驱动版本低于V8.76. \r\n请将控制器返厂升级到最新驱动版本. \r\n或者更换新的高版本的控制器.");
                //}
                if (float.Parse(controllerVersion) < 8.92)  //2017-11-11 16:47:08
                {
                    MessageBox.Show("控制器驱动版本低于V8.92. \r\n请将控制器返厂升级到最新驱动版本. \r\n或者更换新的高版本的控制器.");
                }
            }
            else
            {
                log("查询控制器驱动版本 失败?????...");
                return;
            }

            //QR串口透传配置 协议文档请参看  20170708新增-设置双串口(二维码)-测试中V8.2以上.doc**********************************************************************************
            pkt.Reset();
            pkt.functionID = 0xF2;
            pkt.data[0]    = 0x55; pkt.data[1] = 0xAA; pkt.data[2] = 0xAA; pkt.data[3] = 0x55;
            if (sender == this.btnQR1)
            {
                //透传
                pkt.data[4] = 0xF1; pkt.data[5] = 0x01; pkt.data[6] = 0x81;
            }
            else if (sender == this.btnQRRestore)
            {
                //关闭
                pkt.data[4] = 0xF1; pkt.data[5] = 0x01; pkt.data[6] = 0x0;
            }

            else
            {
                return; //
            }
            ret     = pkt.run();
            success = 0;
            if (ret > 0)
            {
                if (pkt.recv[8] == 1)
                {
                    log(string.Format("二维码操作	 成功...{0}", (sender as Button).Text));
                    success = 1;
                }
            }
            if (success == 0)
            {
                log(string.Format("二维码操作	 失败????...{0}", (sender as Button).Text));
            }
        }