public new static MSG_ADD_ACCESSSPEC FromString(string str) { string val; XmlDocument xdoc = new XmlDocument(); xdoc.LoadXml(str); XmlNode node = (XmlNode)xdoc.DocumentElement; MSG_ADD_ACCESSSPEC msg = new MSG_ADD_ACCESSSPEC(); try { msg.MSG_ID = Convert.ToUInt32(XmlUtil.GetNodeAttrValue(node, "MessageID")); } catch { } try { XmlNodeList xnl = XmlUtil.GetXmlNodes(node, "AccessSpec"); if (null != xnl) { if (xnl.Count != 0) msg.AccessSpec = PARAM_AccessSpec.FromXmlNode(xnl[0]); } } catch { } return msg; }
public MSG_ADD_ACCESSSPEC_RESPONSE ADD_ACCESSSPEC(MSG_ADD_ACCESSSPEC msg, out MSG_ERROR_MESSAGE msg_err, int time_out) { msg_err = null; //Add your code here _event_ADD_ACCESSSPEC_RESPONSE = new ClientManualResetEvent(false); _event_ADD_ACCESSSPEC_RESPONSE.msg_id = msg.MSG_ID; _event_ERROR_MESSAGE = new ClientManualResetEvent(false); WaitHandle[] waitHandles = new WaitHandle[] { _event_ADD_ACCESSSPEC_RESPONSE.evt, _event_ERROR_MESSAGE.evt }; bool[] bit_array = msg.ToBitArray(); byte[] data = Util.ConvertBitArrayToByteArray(bit_array); cI.Send(data); int wait_result = WaitHandle.WaitAny(waitHandles, time_out, false); int cursor = 0; int length; BitArray bArr; try { switch (wait_result) { case 0: bArr = Util.ConvertByteArrayToBitArray(_event_ADD_ACCESSSPEC_RESPONSE.data); length = bArr.Count; MSG_ADD_ACCESSSPEC_RESPONSE msg_rsp = MSG_ADD_ACCESSSPEC_RESPONSE.FromBitArray(ref bArr, ref cursor, length); if (msg_rsp.MSG_ID != msg.MSG_ID) return null; else return msg_rsp; case 1: bArr = Util.ConvertByteArrayToBitArray(_event_ERROR_MESSAGE.data); length = bArr.Count; msg_err = MSG_ERROR_MESSAGE.FromBitArray(ref bArr, ref cursor, length); return null; default: return null; } } catch { return null; } }
public new static MSG_ADD_ACCESSSPEC FromBitArray(ref BitArray bit_array, ref int cursor, int length) { if (cursor > length) return null; int field_len = 0; object obj_val; ArrayList param_list = new ArrayList(); MSG_ADD_ACCESSSPEC obj = new MSG_ADD_ACCESSSPEC(); int msg_type = 0; cursor += 6; msg_type = (int)(UInt64)Util.CalculateVal(ref bit_array, ref cursor, 10); if (msg_type != obj.msgType) { cursor -= 16; return null; } obj.msgLen = (UInt32)(UInt64)Util.CalculateVal(ref bit_array, ref cursor, 32); obj.msgID = (UInt32)(UInt64)Util.CalculateVal(ref bit_array, ref cursor, 32); obj.AccessSpec = PARAM_AccessSpec.FromBitArray(ref bit_array, ref cursor, length); return obj; }
private MSG_ADD_ACCESSSPEC GetAccessSpecMsg(ReaderManager.ReaderConfig readerconfig) { MSG_ADD_ACCESSSPEC msg = new MSG_ADD_ACCESSSPEC(); msg.AccessSpec = new PARAM_AccessSpec(); msg.AccessSpec.AccessSpecID = 1001; msg.AccessSpec.AntennaID = 0; //0 : applys to all antennae, msg.AccessSpec.ProtocolID = ENUM_AirProtocols.EPCGlobalClass1Gen2; msg.AccessSpec.CurrentState = ENUM_AccessSpecState.Disabled; msg.AccessSpec.ROSpecID = 123; //define trigger msg.AccessSpec.AccessSpecStopTrigger = new PARAM_AccessSpecStopTrigger(); msg.AccessSpec.AccessSpecStopTrigger.AccessSpecStopTrigger = ENUM_AccessSpecStopTriggerType.Null; msg.AccessSpec.AccessSpecStopTrigger.OperationCountValue = 3; return msg; }
private static void AddTagSpec(string tagID, string maskBits, MSG_ADD_ACCESSSPEC msg) { //define access command //define air protocol spec msg.AccessSpec.AccessCommand = new PARAM_AccessCommand(); msg.AccessSpec.AccessCommand.AirProtocolTagSpec = new UNION_AirProtocolTagSpec(); PARAM_C1G2TagSpec tagSpec = new PARAM_C1G2TagSpec(); tagSpec.C1G2TargetTag = new PARAM_C1G2TargetTag[1]; tagSpec.C1G2TargetTag[0] = new PARAM_C1G2TargetTag(); tagSpec.C1G2TargetTag[0].Match = true; //change to "true" if you want to the following parameters take effect. tagSpec.C1G2TargetTag[0].MB = new TwoBits(1); tagSpec.C1G2TargetTag[0].Pointer = 0x20; tagSpec.C1G2TargetTag[0].TagData = LLRPBitArray.FromString(tagID); tagSpec.C1G2TargetTag[0].TagMask = LLRPBitArray.FromBinString(maskBits); msg.AccessSpec.AccessCommand.AirProtocolTagSpec.Add(tagSpec); }
private void SendAccessSpec(MSG_ADD_ACCESSSPEC msg) { MSG_ADD_ACCESSSPEC_RESPONSE rsp = client.ADD_ACCESSSPEC(msg, out msg_err, 3000); if (rsp != null) { //textBox2.Text = rsp.ToString() + "\n"; WriteMessage(rsp.ToString(), "Add_AccessSpec"); } else if (msg_err != null) { readerMgr.AppendToDebugTextBox("Add_AccessSpec " + msg_err.ToString() + "\n"); } else readerMgr.AppendToDebugTextBox("Add_AccessSpec Command time out!" + "\n"); }
private static void AddWriteAccessCommand(MSG_ADD_ACCESSSPEC msg, string data) { //define access spec msg.AccessSpec.AccessCommand.AccessCommandOpSpec = new UNION_AccessCommandOpSpec(); PARAM_C1G2Write wr = new PARAM_C1G2Write(); wr.AccessPassword = 0; wr.MB = new TwoBits(1); wr.OpSpecID = 111; wr.WordPointer = 2; //Data to be written. ex: "EEEE11112222333344445555" wr.WriteData = UInt16Array.FromString(data); msg.AccessSpec.AccessCommand.AccessCommandOpSpec.Add(wr); }
private static void AddReadAccessCommand(ushort wordCount, ushort wordPtr, MSG_ADD_ACCESSSPEC msg) { PARAM_C1G2Read rd = new PARAM_C1G2Read(); rd.AccessPassword = 0; rd.MB = new TwoBits(2); rd.OpSpecID = 111; rd.WordCount = wordCount; rd.WordPointer = wordPtr; msg.AccessSpec.AccessCommand.AccessCommandOpSpec.Add(rd); }