Exemple #1
0
        static void Main(string[] args)
        {
            // Program setup
            if (1 > args.Length)
            {
                Usage();
            }
            int[] antennaList = null;
            for (int nextarg = 1; nextarg < args.Length; nextarg++)
            {
                string arg = args[nextarg];
                if (arg.Equals("--ant"))
                {
                    if (null != antennaList)
                    {
                        Console.WriteLine("Duplicate argument: --ant specified more than once");
                        Usage();
                    }
                    antennaList = ParseAntennaList(args, nextarg);
                    nextarg++;
                }
                else
                {
                    Console.WriteLine("Argument {0}:\"{1}\" is not recognized", nextarg, arg);
                    Usage();
                }
            }

            try
            {
                // Create Reader object, connecting to physical device.
                // Wrap reader in a "using" block to get automatic
                // reader shutdown (using IDisposable interface).
                using (Reader r = Reader.Create(args[0]))
                {
                    //Uncomment this line to add default transport listener.
                    //r.Transport += r.SimpleTransportListener;

                    r.Connect();
                    if (Reader.Region.UNSPEC == (Reader.Region)r.ParamGet("/reader/region/id"))
                    {
                        Reader.Region[] supportedRegions = (Reader.Region[])r.ParamGet("/reader/region/supportedRegions");
                        if (supportedRegions.Length < 1)
                        {
                            throw new FAULT_INVALID_REGION_Exception();
                        }
                        r.ParamSet("/reader/region/id", supportedRegions[0]);
                    }
                    string model = (string)r.ParamGet("/reader/version/model").ToString();
                    if (!model.Equals("M3e"))
                    {
                        if (r.isAntDetectEnabled(antennaList))
                        {
                            Console.WriteLine("Module doesn't has antenna detection support please provide antenna list");
                            Usage();
                        }
                    }
                    else
                    {
                        if (antennaList != null)
                        {
                            Console.WriteLine("Module doesn't support antenna input");
                            Usage();
                        }
                    }
                    List <ReadPlan> readPlans    = new List <ReadPlan>();
                    TagProtocol[]   protocolList = (TagProtocol[])r.ParamGet("/reader/version/supportedProtocols");

                    if (model.Equals("M3e"))
                    {
                        //Set the multiple protocols using /reader/protocolList param for dynamic protocol switching
                        r.ParamSet("/reader/protocolList", protocolList);

                        // If /reader/protocolList param is set, API ignores the protocol mentioned in readplan.
                        SimpleReadPlan plan = new SimpleReadPlan(antennaList, TagProtocol.ISO14443A, null, null, 1000);
                        r.ParamSet("/reader/read/plan", plan);
                    }
                    else
                    {
                        foreach (TagProtocol protocol in protocolList)
                        {
                            readPlans.Add(new SimpleReadPlan(antennaList, protocol, null, null, 10));
                        }
                        MultiReadPlan testMultiReadPlan = new MultiReadPlan(readPlans);
                        r.ParamSet("/reader/read/plan", testMultiReadPlan);
                    }
                    // Create and add tag listener
                    r.TagRead += delegate(Object sender, TagReadDataEventArgs e)
                    {
                        Console.WriteLine("Background read: " + e.TagReadData + " Protocol: " + e.TagReadData.Tag.Protocol);
                    };
                    // Create and add read exception listener
                    r.ReadException += new EventHandler <ReaderExceptionEventArgs>(r_ReadException);

                    // Search for tags in the background
                    r.StartReading();

                    Console.WriteLine("\r\n<Do other work here>\r\n");
                    Thread.Sleep(5000);
                    Console.WriteLine("\r\n<Do other work here>\r\n");
                    Thread.Sleep(500);

                    r.StopReading();
                }
            }
            catch (ReaderException re)
            {
                Console.WriteLine("Error: " + re.Message);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
        }
        static void Main(string[] args)
        {
            // Program setup
            if (1 > args.Length)
            {
                Usage();
            }
            int[] antennaList = null;
            for (int nextarg = 1; nextarg < args.Length; nextarg++)
            {
                string arg = args[nextarg];
                if (arg.Equals("--ant"))
                {
                    if (null != antennaList)
                    {
                        Console.WriteLine("Duplicate argument: --ant specified more than once");
                        Usage();
                    }
                    antennaList = ParseAntennaList(args, nextarg);
                    nextarg++;
                }
                else
                {
                    Console.WriteLine("Argument {0}:\"{1}\" is not recognized", nextarg, arg);
                    Usage();
                }
            }

            try
            {
                // Create Reader object, connecting to physical device.
                // Wrap reader in a "using" block to get automatic
                // reader shutdown (using IDisposable interface).
                using (Reader r = Reader.Create(args[0]))
                {
                    //Uncomment this line to add default transport listener.
                    //r.Transport += r.SimpleTransportListener;

                    r.Connect();
                    if (Reader.Region.UNSPEC == (Reader.Region)r.ParamGet("/reader/region/id"))
                    {
                        Reader.Region[] supportedRegions = (Reader.Region[])r.ParamGet("/reader/region/supportedRegions");
                        if (supportedRegions.Length < 1)
                        {
                            throw new FAULT_INVALID_REGION_Exception();
                        }
                        r.ParamSet("/reader/region/id", supportedRegions[0]);
                    }
                    string model = r.ParamGet("/reader/version/model").ToString();
                    if ((model.Equals("M6e Micro") || model.Equals("M6e Nano") || model.Equals("Sargas")) && antennaList == null)
                    {
                        Console.WriteLine("Module doesn't has antenna detection support please provide antenna list");
                        Usage();
                    }
                    List <ReadPlan> readPlans    = new List <ReadPlan>();
                    TagProtocol[]   protocolList = (TagProtocol[])r.ParamGet("/reader/version/supportedProtocols");
                    foreach (TagProtocol protocol in protocolList)
                    {
                        readPlans.Add(new SimpleReadPlan(antennaList, protocol, null, null, 10));
                    }
                    MultiReadPlan testMultiReadPlan = new MultiReadPlan(readPlans);
                    r.ParamSet("/reader/read/plan", testMultiReadPlan);
                    TagReadData[] tagRead = r.Read(1000);
                    foreach (TagReadData tr in tagRead)
                    {
                        Console.WriteLine(String.Format("{0} {1}",
                                                        tr.Tag.Protocol, tr.ToString()));
                    }
                }
            }
            catch (ReaderException re)
            {
                Console.WriteLine("Error: " + re.Message);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
        }
Exemple #3
0
        static void Main(string[] args)
        {
            // Program setup
            if (1 > args.Length)
            {
                Usage();
            }
            int[] antennaList = null;
            for (int nextarg = 1; nextarg < args.Length; nextarg++)
            {
                string arg = args[nextarg];
                if (arg.Equals("--ant"))
                {
                    if (null != antennaList)
                    {
                        Console.WriteLine("Duplicate argument: --ant specified more than once");
                        Usage();
                    }
                    antennaList = ParseAntennaList(args, nextarg);
                    nextarg++;
                }
                else
                {
                    Console.WriteLine("Argument {0}:\"{1}\" is not recognized", nextarg, arg);
                    Usage();
                }
            }

            try
            {
                // Create Reader object, connecting to physical device.
                // Wrap reader in a "using" block to get automatic
                // reader shutdown (using IDisposable interface).
                using (Reader r = Reader.Create(args[0]))
                {
                    //Uncomment this line to add default transport listener.
                    //r.Transport += r.SimpleTransportListener;

                    r.Connect();
                    if (Reader.Region.UNSPEC == (Reader.Region)r.ParamGet("/reader/region/id"))
                    {
                        Reader.Region[] supportedRegions = (Reader.Region[])r.ParamGet("/reader/region/supportedRegions");
                        if (supportedRegions.Length < 1)
                        {
                            throw new FAULT_INVALID_REGION_Exception();
                        }
                        r.ParamSet("/reader/region/id", supportedRegions[0]);
                    }
                    string model = (string)r.ParamGet("/reader/version/model").ToString();
                    if (!model.Equals("M3e"))
                    {
                        if (r.isAntDetectEnabled(antennaList))
                        {
                            Console.WriteLine("Module doesn't has antenna detection support please provide antenna list");
                            Usage();
                        }

                        // Set the q value
                        r.ParamSet("/reader/gen2/q", new Gen2.StaticQ(1));
                    }
                    else
                    {
                        if (antennaList != null)
                        {
                            Console.WriteLine("Module doesn't support antenna input");
                            Usage();
                        }
                    }
                    // Set the number of tags to read
                    StopOnTagCount sotc = new StopOnTagCount();
                    sotc.N = 5;
                    StopTriggerReadPlan readplan;
#if ENABLE_SIMPLE_READPLAN
                    if (model.Equals("M3e"))
                    {
                        readplan = new StopTriggerReadPlan(sotc, antennaList, TagProtocol.ISO14443A, null, null, 1000);
                        // Set readplan
                        r.ParamSet("/reader/read/plan", readplan);
                    }
                    else
                    {
                        // Prepare single read plan.
                        readplan = new StopTriggerReadPlan(sotc, antennaList, TagProtocol.GEN2, null, null, 1000);
                        // Set readplan
                        r.ParamSet("/reader/read/plan", readplan);
                    }
#else
                    TagProtocol[] protocolList = (TagProtocol[])r.ParamGet("/reader/version/supportedProtocols");
                    if (model.Equals("M3e"))
                    {
#if ENABLE_DYNAMIC_SWITCHING
                        //Set the multiple protocols using "/reader/protocolList" param for dynamic protocol switching
                        r.ParamSet("/reader/protocolList", protocolList);
                        // If param is set, API ignores the protocol mentioned in readplan.
                        StopTriggerReadPlan plan = new StopTriggerReadPlan(sotc, antennaList, TagProtocol.ISO14443A, null, null, 1000);
                        // Set readplan
                        r.ParamSet("/reader/read/plan", plan);
#else
                        List <ReadPlan> planList = new List <ReadPlan>();
                        foreach (TagProtocol protocol in protocolList)
                        {
                            planList.Add(new StopTriggerReadPlan(sotc, antennaList, protocol, null, null, 1000));
                        }
                        MultiReadPlan plan = new MultiReadPlan(planList);
                        // Set read plan
                        r.ParamSet("/reader/read/plan", plan);
#endif
                    }
                    else
                    {
                        List <ReadPlan> planList = new List <ReadPlan>();
                        foreach (TagProtocol protocol in protocolList)
                        {
                            planList.Add(new StopTriggerReadPlan(sotc, antennaList, protocol, null, null, 1000));
                        }
                        MultiReadPlan plan = new MultiReadPlan(planList);
                        // Set readplan
                        r.ParamSet("/reader/read/plan", plan);
                    }
#endif
#if ENABLE_SYNC_READ
                    TagReadData[] tagReads;
                    // Read tags
                    tagReads = r.Read(1000);
                    // Print tag reads
                    foreach (TagReadData tr in tagReads)
                    {
                        Console.WriteLine(tr.ToString() + ", Protocol: " + tr.Tag.Protocol.ToString());
                    }
#endif
#if ENABLE_ASYNC_READ
                    // Create and add tag listener
                    r.TagRead += delegate(Object sender, TagReadDataEventArgs e)
                    {
                        Console.WriteLine("Background read: " + e.TagReadData);
                    };
                    // Create and add read exception listener
                    r.ReadException += new EventHandler <ReaderExceptionEventArgs>(r_ReadException);
                    // Search for tags in the background
                    r.StartReading();
                    while (!r.isReadStopped())
                    {
                    }
#endif
                }
            }
            catch (ReaderException re)
            {
                Console.WriteLine("Error: " + re.Message);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
        }
Exemple #4
0
        static void Main(string[] args)
        {
            // Program setup
            if (1 != args.Length)
            {
                Console.WriteLine(String.Join("\r\n", new string[] {
                    "Please provide reader URL, such as:",
                    "tmr:///com4",
                    "tmr://my-reader.example.com",
                }));
                Environment.Exit(1);
            }

            try
            {
                // Create Reader object, connecting to physical device.
                // Wrap reader in a "using" block to get automatic
                // reader shutdown (using IDisposable interface).
                using (Reader r = Reader.Create(args[0]))
                {
                    //Uncomment this line to add default transport listener.
                    //r.Transport += r.SimpleTransportListener;

                    r.Connect();
                    if (Reader.Region.UNSPEC == (Reader.Region)r.ParamGet("/reader/region/id"))
                    {
                        Reader.Region[] supportedRegions = (Reader.Region[])r.ParamGet("/reader/region/supportedRegions");
                        if (supportedRegions.Length < 1)
                        {
                            throw new FAULT_INVALID_REGION_Exception();
                        }
                        else
                        {
                            r.ParamSet("/reader/region/id", supportedRegions[0]);
                        }
                    }
                    List <ReadPlan> readPlans    = new List <ReadPlan>();
                    TagProtocol[]   protocolList = (TagProtocol[])r.ParamGet("/reader/version/supportedProtocols");
                    foreach (TagProtocol protocol in protocolList)
                    {
                        readPlans.Add(new SimpleReadPlan(null, protocol, null, null, 10));
                    }
                    MultiReadPlan testMultiReadPlan = new MultiReadPlan(readPlans);
                    r.ParamSet("/reader/read/plan", testMultiReadPlan);
                    TagReadData[] tagRead = r.Read(1000);
                    foreach (TagReadData tr in tagRead)
                    {
                        Console.WriteLine(String.Format("{0} {1}",
                                                        tr.Tag.Protocol, tr.ToString()));
                    }
                }
            }
            catch (ReaderException re)
            {
                Console.WriteLine("Error: " + re.Message);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
        }
Exemple #5
0
        /// <summary>
        /// 连接采集设备
        /// </summary>
        private void Running()
        {
            while (Runningl)
            {
                try
                {

                    reader = Reader.Create(sparmas.Comv, (ModuleTech.Region)sparmas.Region, (ReaderType)sparmas.ReaderType);
                    Funpercent(30, "创建读写器完毕");
                    //
                    reader.ParamSet("CheckAntConnection", sparmas.CheckAnt);
                    Funpercent(40, "检测天线");
                    AntPower[] apwrs = new AntPower[sparmas.AntType];
                    for (int i = 0; i < apwrs.Length; i++)
                    {
                        apwrs[i].AntId = (byte)(i + 1);
                        apwrs[i].ReadPower = ushort.Parse(sparmas.ReadPw[i]);
                        apwrs[i].WritePower = ushort.Parse(sparmas.WritePw[i]);
                    }
                    reader.ParamSet("AntPowerConf", apwrs);
                    Funpercent(50, "配置天线功率");
                    reader.ParamSet("TagopAntenna", sparmas.Opant);
                    Funpercent(60, "配置默认天线");
                    int[] connectedants = (int[])reader.ParamGet("ConnectedAntennas");

                    SimpleReadPlan gen2srp = null;
                    SimpleReadPlan iso6bsrp = null;
                    if (connectedants.Length > 0)
                    {
                        sparmas.Connectants = connectedants;
                        gen2srp = new SimpleReadPlan(TagProtocol.GEN2, connectedants);
                        iso6bsrp = new SimpleReadPlan(TagProtocol.ISO180006B, connectedants);
                    }
                    else
                    {
                        sparmas.Connectants = null;
                        gen2srp = new SimpleReadPlan(TagProtocol.GEN2, new int[] { sparmas.Opant });
                        iso6bsrp = new SimpleReadPlan(TagProtocol.ISO180006B, new int[] { sparmas.Opant });
                    }

                    if (sparmas.Protocol == 0)
                    {
                        reader.ParamSet("ReadPlan", gen2srp);
                        Funpercent(70, "配置盘点方式");
                    }
                    else if (sparmas.Protocol == 1)
                    {
                        reader.ParamSet("ReadPlan", iso6bsrp);
                        Funpercent(70, "配置盘点方式");
                    }
                    else
                    {
                        ReadPlan[] rp = new ReadPlan[2];
                        rp[0] = gen2srp;
                        rp[1] = iso6bsrp;
                        MultiReadPlan mrp = new MultiReadPlan(rp);
                        reader.ParamSet("ReadPlan", rp);
                        Funpercent(70, "配置盘点方式");
                    }

                    reader.ParamSet("Gen2Session", (ModuleTech.Gen2.Session)sparmas.Session);
                    Funpercent(80, "配置会话模式");
                    if (sparmas.CustomFrequency)
                    {
                        List<uint> htb = new List<uint>();
                        for (int i = 0; i < sparmas.Frequencys.Length; i++)
                        {
                            htb.Add(uint.Parse(sparmas.Frequencys[i]));
                        }
                        reader.ParamSet("FrequencyHopTable", htb.ToArray());
                        Funpercent(90, "配置频率表");
                    }
                    else
                    {
                        reader.ParamSet("Region", (ModuleTech.Region)sparmas.Region);
                        Funpercent(90, "配置频率表");
                    }
                    try
                    {

                        reader.ParamSet("PowerMode", (byte)sparmas.PowerMode);
                        reader.ParamSet("IsTransmitPowerSave", true);
                    }
                    catch (Exception omitex)
                    {

                    }

                    Funpercent(100, "配置完毕,读写器工作就绪");

                }
                catch (System.Exception ex)
                {
                    string msg = string.Empty;

                    if (ex is ModuleLibrary.FatalInternalException)
                        msg = Convert.ToString(((ModuleLibrary.FatalInternalException)ex).ErrCode, 16);
                    if (ex is ModuleLibrary.HardwareAlertException)
                        msg = Convert.ToString(((ModuleLibrary.HardwareAlertException)ex).ErrCode, 16);
                    if (ex is ModuleLibrary.ModuleException)
                        msg = Convert.ToString(((ModuleLibrary.ModuleException)ex).ErrCode, 16);
                    if (ex is ModuleLibrary.OpFaidedException)
                        msg = Convert.ToString(((ModuleLibrary.OpFaidedException)ex).ErrCode, 16);
                    if (reader != null)
                        reader.Disconnect();

                    Funpercent(0, "连接失败" + ex.Message + " :" + msg);

                    dlog.WirteLog(ex.Message + ":" + msg + ex.StackTrace);
                }

                Thread.Sleep(1000);
                Runningl = false;
            }

            IsExit = false;

            Funpercent(-100, string.Empty);
        }
Exemple #6
0
        /// <summary>
        /// 连接采集设备
        /// </summary>
        private void Running()
        {
            while (Runningl)
            {
                try
                {
                    reader = Reader.Create(sparmas.Comv, (ModuleTech.Region)sparmas.Region, (ReaderType)sparmas.ReaderType);
                    Funpercent(30, "创建读写器完毕");
                    //
                    reader.ParamSet("CheckAntConnection", sparmas.CheckAnt);
                    Funpercent(40, "检测天线");
                    AntPower[] apwrs = new AntPower[sparmas.AntType];
                    for (int i = 0; i < apwrs.Length; i++)
                    {
                        apwrs[i].AntId      = (byte)(i + 1);
                        apwrs[i].ReadPower  = ushort.Parse(sparmas.ReadPw[i]);
                        apwrs[i].WritePower = ushort.Parse(sparmas.WritePw[i]);
                    }
                    reader.ParamSet("AntPowerConf", apwrs);
                    Funpercent(50, "配置天线功率");
                    reader.ParamSet("TagopAntenna", sparmas.Opant);
                    Funpercent(60, "配置默认天线");
                    int[] connectedants = (int[])reader.ParamGet("ConnectedAntennas");

                    SimpleReadPlan gen2srp  = null;
                    SimpleReadPlan iso6bsrp = null;
                    if (connectedants.Length > 0)
                    {
                        sparmas.Connectants = connectedants;
                        gen2srp             = new SimpleReadPlan(TagProtocol.GEN2, connectedants);
                        iso6bsrp            = new SimpleReadPlan(TagProtocol.ISO180006B, connectedants);
                    }
                    else
                    {
                        sparmas.Connectants = null;
                        gen2srp             = new SimpleReadPlan(TagProtocol.GEN2, new int[] { sparmas.Opant });
                        iso6bsrp            = new SimpleReadPlan(TagProtocol.ISO180006B, new int[] { sparmas.Opant });
                    }

                    if (sparmas.Protocol == 0)
                    {
                        reader.ParamSet("ReadPlan", gen2srp);
                        Funpercent(70, "配置盘点方式");
                    }
                    else if (sparmas.Protocol == 1)
                    {
                        reader.ParamSet("ReadPlan", iso6bsrp);
                        Funpercent(70, "配置盘点方式");
                    }
                    else
                    {
                        ReadPlan[] rp = new ReadPlan[2];
                        rp[0] = gen2srp;
                        rp[1] = iso6bsrp;
                        MultiReadPlan mrp = new MultiReadPlan(rp);
                        reader.ParamSet("ReadPlan", rp);
                        Funpercent(70, "配置盘点方式");
                    }

                    reader.ParamSet("Gen2Session", (ModuleTech.Gen2.Session)sparmas.Session);
                    Funpercent(80, "配置会话模式");
                    if (sparmas.CustomFrequency)
                    {
                        List <uint> htb = new List <uint>();
                        for (int i = 0; i < sparmas.Frequencys.Length; i++)
                        {
                            htb.Add(uint.Parse(sparmas.Frequencys[i]));
                        }
                        reader.ParamSet("FrequencyHopTable", htb.ToArray());
                        Funpercent(90, "配置频率表");
                    }
                    else
                    {
                        reader.ParamSet("Region", (ModuleTech.Region)sparmas.Region);
                        Funpercent(90, "配置频率表");
                    }
                    try
                    {
                        reader.ParamSet("PowerMode", (byte)sparmas.PowerMode);
                        reader.ParamSet("IsTransmitPowerSave", true);
                    }
                    catch (Exception omitex)
                    {
                    }

                    Funpercent(100, "配置完毕,读写器工作就绪");
                }
                catch (System.Exception ex)
                {
                    string msg = string.Empty;

                    if (ex is ModuleLibrary.FatalInternalException)
                    {
                        msg = Convert.ToString(((ModuleLibrary.FatalInternalException)ex).ErrCode, 16);
                    }
                    if (ex is ModuleLibrary.HardwareAlertException)
                    {
                        msg = Convert.ToString(((ModuleLibrary.HardwareAlertException)ex).ErrCode, 16);
                    }
                    if (ex is ModuleLibrary.ModuleException)
                    {
                        msg = Convert.ToString(((ModuleLibrary.ModuleException)ex).ErrCode, 16);
                    }
                    if (ex is ModuleLibrary.OpFaidedException)
                    {
                        msg = Convert.ToString(((ModuleLibrary.OpFaidedException)ex).ErrCode, 16);
                    }
                    if (reader != null)
                    {
                        reader.Disconnect();
                    }

                    Funpercent(0, "连接失败" + ex.Message + " :" + msg);

                    dlog.WirteLog(ex.Message + ":" + msg + ex.StackTrace);
                }

                Thread.Sleep(1000);
                Runningl = false;
            }

            IsExit = false;

            Funpercent(-100, string.Empty);
        }
Exemple #7
0
        private void Running()
        {
            while (Runningl)
            {
                try
                {
                    ReaderType[] types = new ReaderType[] { ReaderType.MT_TWOANTS, ReaderType.MT_FOURANTS, ReaderType.MT_THREEANTS, ReaderType.MT_ONEANT, ReaderType.PR_ONEANT, ReaderType.MT_A7_FOURANTS, ReaderType.MT_A7_TWOANTS, ReaderType.SL_FOURANTS, ReaderType.M6_A7_FOURANTS, ReaderType.MT100, ReaderType.MT200 };
                    mf.Rd = Reader.Create(sparmas.Comv, ModuleTech.Region.PRC, types[sparmas.ReaderType]);
                    Funpercent(30, "创建读写器完毕");
                    dlog.WirteLog("创建读写器完毕\r\n");
                    //
                    if (!(types[sparmas.ReaderType] == ReaderType.M6_A7_FOURANTS && sparmas.AntType == 2))
                    {
                        mf.Rd.ParamSet("CheckAntConnection", sparmas.CheckAnt);
                        Funpercent(40, "检测天线");
                        dlog.WirteLog("检测天线\r\n");
                    }

                    AntPower[] apwrs = new AntPower[sparmas.AntType];
                    for (int i = 0; i < apwrs.Length; i++)
                    {
                        apwrs[i].AntId      = (byte)(i + 1);
                        apwrs[i].ReadPower  = ushort.Parse(sparmas.ReadPw[i]);
                        apwrs[i].WritePower = ushort.Parse(sparmas.WritePw[i]);
                    }
                    mf.Rd.ParamSet("AntPowerConf", apwrs);
                    Funpercent(50, "配置天线功率");
                    dlog.WirteLog("配置天线功率\r\n");
                    mf.Rd.ParamSet("TagopAntenna", sparmas.Opant);
                    Funpercent(60, "配置默认天线");
                    dlog.WirteLog("配置默认天线\r\n");
                    int[] connectedants = (int[])mf.Rd.ParamGet("ConnectedAntennas");

                    SimpleReadPlan gen2srp  = null;
                    SimpleReadPlan iso6bsrp = null;
                    if (connectedants.Length > 0 && (sparmas.AntType != 2 && types[sparmas.ReaderType] != ReaderType.M6_A7_FOURANTS))
                    {
                        sparmas.Connectants = connectedants;
                        gen2srp             = new SimpleReadPlan(TagProtocol.GEN2, connectedants, 30);
                        iso6bsrp            = new SimpleReadPlan(TagProtocol.ISO180006B, connectedants, 30);
                    }
                    else
                    {
                        sparmas.Connectants = null;
                        gen2srp             = new SimpleReadPlan(TagProtocol.GEN2, new int[] { sparmas.Opant }, 30);
                        iso6bsrp            = new SimpleReadPlan(TagProtocol.ISO180006B, new int[] { sparmas.Opant }, 30);
                    }

                    if (sparmas.Protocol == 0)
                    {
                        mf.Rd.ParamSet("ReadPlan", gen2srp);
                    }
                    else if (sparmas.Protocol == 1)
                    {
                        mf.Rd.ParamSet("ReadPlan", iso6bsrp);
                    }
                    else
                    {
                        List <SimpleReadPlan> Lrp = new List <SimpleReadPlan>();
                        //List<ReadPlan> Lrp = new List<ReadPlan>();
                        Lrp.Add(gen2srp);
                        Lrp.Add(iso6bsrp);
                        MultiReadPlan mrp = new MultiReadPlan(Lrp.ToArray());
                        mf.Rd.ParamSet("ReadPlan", mrp);
                    }
                    Funpercent(70, "配置盘点方式");
                    dlog.WirteLog("配置盘点方式\r\n");
                    mf.Rd.ParamSet("Gen2Session", (ModuleTech.Gen2.Session)sparmas.Session);
                    Funpercent(80, "配置会话模式");
                    dlog.WirteLog("配置会话模式\r\n");

                    ModuleTech.Region[] mregion = new ModuleTech.Region[] { ModuleTech.Region.UNSPEC, ModuleTech.Region.CN, ModuleTech.Region.EU, ModuleTech.Region.EU2, ModuleTech.Region.EU3, ModuleTech.Region.IN, ModuleTech.Region.KR, ModuleTech.Region.JP, ModuleTech.Region.NA, ModuleTech.Region.PRC, ModuleTech.Region.OPEN, ModuleTech.Region.OPEN };
                    mf.Rd.ParamSet("Region", mregion[sparmas.Region]);
                    Funpercent(90, "配置区域");
                    dlog.WirteLog("配置区域" + mregion[sparmas.Region].ToString() + "\r\n");

                    if (sparmas.CustomFrequency)
                    {
                        List <uint> htb = new List <uint>();
                        for (int i = 0; i < sparmas.Frequencys.Length; i++)
                        {
                            htb.Add(uint.Parse(sparmas.Frequencys[i]));
                            //dlog.WirteLog(sparmas.Frequencys[i].ToString()+"\r\n");
                        }
                        try
                        {
                            mf.Rd.ParamSet("FrequencyHopTable", htb.ToArray());
                            Funpercent(90, "配置频率表");
                            dlog.WirteLog("配置频率表\r\n");
                        }
                        catch (System.Exception ex)
                        {
                        }
                    }

                    try
                    {
                        //case 0x00:
                        //    pm = SerialReader.PowerMode.FULL;
                        //    break;
                        //case 0x01:
                        //    pm = SerialReader.PowerMode.MINSAVE;
                        //    break;
                        //case 0x02:
                        //    pm = SerialReader.PowerMode.MEDSAVE;
                        //    break;
                        //case 0x03:
                        //    pm = SerialReader.PowerMode.MAXSAVE;
                        //    break;
                        //case 0x04:
                        //    pm = SerialReader.PowerMode.SLEEP;
                        mf.Rd.ParamSet("PowerMode", (byte)sparmas.PowerMode);//0x03
                        mf.Rd.ParamSet("IsTransmitPowerSave", true);
                    }
                    catch// (Exception omitex)
                    {
                    }
                    Funpercent(100, "配置完毕,读写器工作就绪");
                }
                catch (System.Exception ex)
                {
                    string msg = string.Empty;
                    if (ex is ModuleLibrary.FatalInternalException)
                    {
                        msg = Convert.ToString(((ModuleLibrary.FatalInternalException)ex).ErrCode, 16);
                    }
                    if (ex is ModuleLibrary.HardwareAlertException)
                    {
                        msg = Convert.ToString(((ModuleLibrary.HardwareAlertException)ex).ErrCode, 16);
                    }
                    if (ex is ModuleLibrary.ModuleException)
                    {
                        msg = Convert.ToString(((ModuleLibrary.ModuleException)ex).ErrCode, 16);
                    }
                    if (ex is ModuleLibrary.OpFaidedException)
                    {
                        msg = Convert.ToString(((ModuleLibrary.OpFaidedException)ex).ErrCode, 16);
                    }
                    if (mf.Rd != null)
                    {
                        mf.Rd.Disconnect();
                    }
                    Funpercent(0, "连接失败" + ex.Message + " :" + msg);
                    if (dlog != null)
                    {
                        dlog.WirteLog(ex.Message + ":" + msg + ex.StackTrace);
                    }
                }

                Thread.Sleep(1000);
                Runningl = false;
            }
            IsExit = false;

            Funpercent(-100, string.Empty);
        }