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 权限添加或修改 失败..."); } }
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("设置 失败..."); } }
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)); } }