Пример #1
0
        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;
        }
Пример #2
0
        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;
            }
        }
Пример #3
0
        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;
        }
Пример #4
0
        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;
        }
Пример #5
0
        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);
        }
Пример #6
0
 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");
 }
Пример #7
0
        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);
        }
Пример #8
0
 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);
 }