public object Decode(string Code) { PacketRecv PacketRecv_ = new PacketRecv(); ; int iAddress; iAddress = (int.Parse(Code.Substring(0, 2), NumberStyles.AllowHexSpecifier) - 0x80) * 256; iAddress += int.Parse(Code.Substring(2, 2), NumberStyles.AllowHexSpecifier) - 200 == 13 ? 13 : int.Parse(Code.Substring(2, 2), NumberStyles.AllowHexSpecifier); ; PacketRecv_.address = iAddress; switch (Code.Substring(4, 2).ToUpper()) { case "50":// Code = [@] nnnn 0x50 <OK> <FCS> * [<Return>] 发送数据指令返回 PacketRecv_.recvType = RecvType.Correct; break; case "56":// Code = [@] nnnn 0x56 <KEY> <FCS> * [<Return>] 查询状态指令返回 PacketRecv_.recvType = RecvType.KeyEvent; PacketRecv_.message = Code; break; case "60":// Code = [@] nnnn 0x60 <OK> <FCS> * [<Return>] 复位指令返回 PacketRecv_.recvType = RecvType.Correct; break; default: PacketRecv_.recvType = RecvType.Others; break; } return PacketRecv_; }
public object Decode(string Code) { PacketRecv PacketRecv_ = new PacketRecv();; int iAddress; iAddress = (int.Parse(Code.Substring(0, 2), NumberStyles.AllowHexSpecifier) - 0x80) * 256; iAddress += int.Parse(Code.Substring(2, 2), NumberStyles.AllowHexSpecifier) - 200 == 13 ? 13 : int.Parse(Code.Substring(2, 2), NumberStyles.AllowHexSpecifier);; PacketRecv_.address = iAddress; switch (Code.Substring(4, 2).ToUpper()) { case "50": // Code = [@] nnnn 0x50 <OK> <FCS> * [<Return>] 发送数据指令返回 PacketRecv_.recvType = RecvType.Correct; break; case "56": // Code = [@] nnnn 0x56 <KEY> <FCS> * [<Return>] 查询状态指令返回 PacketRecv_.recvType = RecvType.KeyEvent; PacketRecv_.message = Code; break; case "60": // Code = [@] nnnn 0x60 <OK> <FCS> * [<Return>] 复位指令返回 PacketRecv_.recvType = RecvType.Correct; break; default: PacketRecv_.recvType = RecvType.Others; break; } return(PacketRecv_); }
public PacketRecv Parse(string recv) { PacketRecv PacketRecv0000; try { RecvType rt; int iAddress = int.Parse(recv.Substring(0, 4), NumberStyles.AllowHexSpecifier); switch (recv.Substring(12, 2).ToUpper()) { case "10": rt = RecvType.Correct; iAddress = int.Parse(recv.Substring(14, 2), NumberStyles.AllowHexSpecifier); goto Label_0114; case "11": rt = RecvType.CheckError; iAddress = int.Parse(recv.Substring(14, 2), NumberStyles.AllowHexSpecifier); goto Label_0114; case "12": rt = RecvType.EndError; iAddress = int.Parse(recv.Substring(14, 2), NumberStyles.AllowHexSpecifier); goto Label_0114; case "13": rt = RecvType.SRamFull; iAddress = int.Parse(recv.Substring(14, 2), NumberStyles.AllowHexSpecifier); goto Label_0114; case "1C": rt = RecvType.DeleteTable; goto Label_0114; case "1D": rt = RecvType.KeyEvent; goto Label_0114; case "18": if (!(recv.Substring(14, 2).ToUpper() == "00")) { break; } rt = RecvType.ResetCorrect; goto Label_0114; default: rt = RecvType.Others; goto Label_0114; } rt = RecvType.ResetError; Label_0114: PacketRecv0000 = new PacketRecv(rt, iAddress, recv); } catch (Exception) { PacketRecv0000 = new PacketRecv(RecvType.Others, 0, recv); } return PacketRecv0000; }
public PacketRecv Parse(string recv) { PacketRecv PacketRecv0000; try { RecvType rt; int iAddress = int.Parse(recv.Substring(0, 4), NumberStyles.AllowHexSpecifier); switch (recv.Substring(12, 2).ToUpper()) { case "10": rt = RecvType.Correct; iAddress = int.Parse(recv.Substring(14, 2), NumberStyles.AllowHexSpecifier); goto Label_0114; case "11": rt = RecvType.CheckError; iAddress = int.Parse(recv.Substring(14, 2), NumberStyles.AllowHexSpecifier); goto Label_0114; case "12": rt = RecvType.EndError; iAddress = int.Parse(recv.Substring(14, 2), NumberStyles.AllowHexSpecifier); goto Label_0114; case "13": rt = RecvType.SRamFull; iAddress = int.Parse(recv.Substring(14, 2), NumberStyles.AllowHexSpecifier); goto Label_0114; case "1C": rt = RecvType.DeleteTable; goto Label_0114; case "1D": rt = RecvType.KeyEvent; goto Label_0114; case "18": if (!(recv.Substring(14, 2).ToUpper() == "00")) { break; } rt = RecvType.ResetCorrect; goto Label_0114; default: rt = RecvType.Others; goto Label_0114; } rt = RecvType.ResetError; Label_0114: PacketRecv0000 = new PacketRecv(rt, iAddress, recv); } catch (Exception) { PacketRecv0000 = new PacketRecv(RecvType.Others, 0, recv); } return(PacketRecv0000); }
public override void com_Data_Return(object Data) { try { PacketRecv pr = (PacketRecv)Data; if (pr.recvType != RecvType.Correct && Ack == null) { return; } switch (pr.recvType) { case RecvType.Correct: if (this.CurrentData != null && pr.address == ((CmdData)this.CurrentData.data).address) { this.CurrentData = null; } break; case RecvType.KeyEvent: if (this.CurrentData != null && pr.address == ((CmdData)this.CurrentData.data).address) { this.CurrentData = null; } string recv = pr.message; string data = recv.Substring(6, 2); byte[] btData = new byte[2]; int keyNo = 0; btData[0] = byte.Parse(data.Substring(0, 2), NumberStyles.HexNumber); if ((btData[0] & 1) == 1) { keyNo = 1; } if ((btData[0] & 2) == 2) { keyNo = 2; } if ((btData[0] & 4) == 4) { keyNo = 3; } Ack(pr.address % 256, keyNo.ToString(), "key"); break; case RecvType.DeleteTable: this.DeleteData(pr.address); Ack(pr.address, "DeleteTable!", "err"); break; case RecvType.CheckError: Ack(pr.address, "CheckError", "err"); break; case RecvType.EndError: Ack(pr.address, "EndError", "err"); break; case RecvType.NotExist: Ack(pr.address, "NotExist", "err"); break; case RecvType.SRamFull: Ack(pr.address, "SRamFull", "err"); break; case RecvType.Timeout: Ack(pr.address, "Timeout", "err"); break; case RecvType.ResetCorrect: Ack(pr.address, "控制卡复位成功!", "success"); break; case RecvType.ResetError: Ack(pr.address, "控制卡复位失败!", "err"); break; case RecvType.Others: Ack(pr.address, "控制卡其他不可识别错误!", "err"); break; default: break; } } catch { } }