Ejemplo n.º 1
0
        private void btnQueryRF_Click(object sender, EventArgs e)
        {
            #region reader mode
            {
                IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x19);
                if (reader.Send(msg))
                {
                    switch (msg.ReceivedMessage.QueryData[0])
                    {
                    case 0x04:
                        cbReaderMode.SelectedIndex = 0;
                        break;

                    case 0x05:
                        cbReaderMode.SelectedIndex = 1;
                        break;

                    case 0x02:
                        cbReaderMode.SelectedIndex = 2;
                        break;

                    case 0xff:
                        cbReaderMode.SelectedIndex = 3;
                        break;

                    case 0x09:
                        cbReaderMode.SelectedIndex = 4;
                        break;

                    default:
                        cbReaderMode.SelectedIndex = -1;
                        break;
                    }
                    cbReaderMode.Enabled = true;
                }
                else
                {
                    cbReaderMode.Enabled = false;
                }
            }
            #endregion

            #region Session
            {
                IRP1.TagOperationQuery_6C msg = new IRP1.TagOperationQuery_6C(0x12);
                if (reader.Send(msg))
                {
                    // query session
                    cbSession.SelectedIndex = msg.ReceivedMessage.QueryData[0];
                    // query inventory flag
                    cbFlag.SelectedIndex = msg.ReceivedMessage.QueryData[1];
                    //        MessageBox.Show(msg.ReceivedMessage.QueryData[0].ToString() + " " + msg.ReceivedMessage.QueryData[1].ToString());
                }
                else
                {
                    MessageBox.Show("Query Error - Session and Flag");
                }
            }
            #endregion
        }
Ejemplo n.º 2
0
        private void btnIOTriggerQuery_Click(object sender, EventArgs e)
        {
            IRP1.SysQuery_800 order = new IRP1.SysQuery_800(0xE2, (byte)(cmbox1.SelectedIndex + 1));
            if (reader.Send(order))
            {
                if (order.ReceivedMessage == null || order.ReceivedMessage.QueryData == null)
                {
                    return;
                }

                //触发方式

                cmbox1.SelectedIndex = order.ReceivedMessage.QueryData[0] - 1;
                cmbox2.SelectedIndex = order.ReceivedMessage.QueryData[1];

                //停止条件
                if (order.ReceivedMessage.QueryData[2] == 0)
                {
                    radioButton1.Checked = true;
                    numTime.Enabled      = false;
                }
                else
                {
                    rbTime.Checked  = true;
                    numTime.Enabled = true;
                }
                numTime.Value = (order.ReceivedMessage.QueryData[3] << 8) + order.ReceivedMessage.QueryData[4];
            }
            else
            {
                groupBox3.Enabled = false;
            }
        }
Ejemplo n.º 3
0
 private void btnQuery_Click(object sender, EventArgs e)
 {
     IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x06);
     if (reader.Send(msg))
     {
         getIP(msg.ReceivedMessage.QueryData);
     }
     else
     {
         groupBox1.Enabled = false;
     }
 }
Ejemplo n.º 4
0
        private void btnModelSN_Click(object sender, EventArgs e)
        {
            tbModelNum.Text        = reader.ModelNumber;
            tbPortType.Text        = reader.PortType;
            tbReaderName.Text      = reader.ReaderName;
            tbProtocolVersion.Text = reader.ProtocolVersion;
            IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x27); //returns serial number

            /*
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x27); // returns serial number
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x26); // returns 1.10
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x25); // returns 1.10
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x24); // returns nothing
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x23); // returns 3.34
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x22); // returns odd characters
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x21); // returns 8861CA
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x20); // returns XC-RF861
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x19); // returns ascii character
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x18); // returns blank
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x17); // returns blank
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x16); // returns blank
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x15); // returns blank
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x14); // returns blank
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x13); // returns nothing
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x12); // returns blank
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x11); // returns nothning
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x10); // returns ascii
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x09); // returns nothing
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x08); // returns blank
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x07); // returns blank
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x06); // returns ????
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x05); // returns blank
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x04); // returns
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x03); // returns ascii
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x02); // returns blank?
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x01); // returns blank
             * IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x00); // returns odd character
             *
             *
             */
            if (reader.Send(msg))
            {
                string sn = Encoding.ASCII.GetString(msg.ReceivedMessage.QueryData);
                if (sn.Length > 18)
                {
                    sn = sn.Substring(0, 18);
                }
                tbSN.Text = sn;
            }
        }
Ejemplo n.º 5
0
        private void btnAntQuery_Click(object sender, EventArgs e)
        {
            // Brett: Query successfully gets the antenna power and Q value
            // it does not get the selected antenna ports, memory bank or continuous or single read status.
            Boolean isSuc = false;

            IRP1.SysQuery_800 order = new IRP1.SysQuery_800(0x68, 0x00);
            if (reader.Send(order))
            {
                isSuc      = true;
                isNewPower = true;

                list = new Double[order.ReceivedMessage.QueryData.Length];
                for (int i = 0; i < list.Length; i++)
                {
                    list[i] = (Double)i;
                }

                // query power
                IRP1.SysQuery_800 order1 = new IRP1.SysQuery_800(0x65, 0x00);// power param
                if (reader.Send(order1))
                {
                    this.nudAnt1.Text = list[order1.ReceivedMessage.QueryData[0]].ToString();
                    this.nudAnt2.Text = list[order1.ReceivedMessage.QueryData[1]].ToString();
                    this.nudAnt3.Text = list[order1.ReceivedMessage.QueryData[2]].ToString();
                    this.nudAnt4.Text = list[order1.ReceivedMessage.QueryData[3]].ToString();
                }

                IRP1.TagOperationQuery_6C msg = new IRP1.TagOperationQuery_6C(0x10);
                if (reader.Send(msg))
                {
                    numQ.Value = msg.ReceivedMessage.QueryData[0];
                }
                else
                {
                    MessageBox.Show("Error getting Q");
                }
            }
        }
Ejemplo n.º 6
0
        private void btnQuery_Click(object sender, EventArgs e)
        {
            #region 天线功率查询
            {
                if (reader.ModelNumber.IndexOf("812") != -1 ||
                    reader.ModelNumber.IndexOf("825") != -1 ||
                    reader.ModelNumber.IndexOf("829") != -1 ||
                    reader.ModelNumber.IndexOf("853") != -1 ||
                    reader.ModelNumber.IndexOf("R2000") != -1 ||
                    reader.ModelNumber.IndexOf("802") != -1)
                {
                    lblpa2.Visible = false;
                    pa2.Visible    = false;
                    lblpa3.Visible = false;
                    pa3.Visible    = false;
                    lblpa4.Visible = false;
                    pa4.Visible    = false;
                }
                if (reader.ModelNumber.IndexOf("850") != -1)//850
                {
                    pa3.Visible    = false;
                    lblpa4.Visible = false;
                    pa4.Visible    = false;
                }
                Boolean isSuc = false;

                //获取功率参数表,注意:功率参数不等于功率值
                IRP1.SysQuery_800 order = new IRP1.SysQuery_800(0x68, 0x00);
                if (reader.Send(order))
                {
                    isSuc      = true;
                    isNewPower = true;

                    list = new Double[order.ReceivedMessage.QueryData.Length];
                    for (int i = 0; i < list.Length; i++)
                    {
                        list[i] = (Double)i;    //填充功率值表
                    }
                    // 填充功率表
                    for (int i = 0; i < list.Length; i++)
                    {
                        //功率参数大于0才有功率值
                        if (order.ReceivedMessage.QueryData[i] != 0x00 && i < list.Length)
                        {
                            pa1.Items.Add(list[i].ToString());
                            pa2.Items.Add(list[i].ToString());
                            pa3.Items.Add(list[i].ToString());
                            pa4.Items.Add(list[i].ToString());
                        }
                    }

                    // 查询功率值
                    IRP1.SysQuery_800 order1 = new IRP1.SysQuery_800(0x65, 0x00);
                    if (reader.Send(order1))
                    {
                        this.pa1.Text = list[order1.ReceivedMessage.QueryData[0]].ToString();
                        this.pa2.Text = list[order1.ReceivedMessage.QueryData[1]].ToString();
                        this.pa3.Text = list[order1.ReceivedMessage.QueryData[2]].ToString();
                        this.pa4.Text = list[order1.ReceivedMessage.QueryData[3]].ToString();
                    }
                }
                else
                {
                    IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x0C, 0x00);
                    if (reader.Send(msg))
                    {
                        isSuc      = true;
                        isNewPower = false;
                        // 生成功率表
                        {
                            if (reader.ModelNumber.IndexOf("806") != -1 ||
                                reader.ModelNumber.IndexOf("860") != -1 ||
                                reader.ModelNumber.IndexOf("804") != -1 ||
                                reader.ModelNumber.IndexOf("803") != -1)
                            {
                                list = new Double[msg.ReceivedMessage.QueryData.Length];
                                for (int i = 0; i < list.Length; i++)
                                {
                                    list[i] = 20 + (Double)i / 2;
                                }
                            }
                            if (reader.ModelNumber.IndexOf("807") != -1)    //807
                            {
                                list = new Double[msg.ReceivedMessage.QueryData.Length];
                                for (int i = 0; i < list.Length; i++)
                                {
                                    list[i] = 11 + (Double)i;
                                }
                            }
                            if (reader.ModelNumber.IndexOf("850") != -1)    //850
                            {
                                list = new Double[msg.ReceivedMessage.QueryData.Length];
                                for (int i = 0; i < list.Length; i++)
                                {
                                    list[i] = 9 + (Double)i;
                                }
                            }
                            if (reader.ModelNumber.IndexOf("861") != -1)    //861
                            {
                                list = new Double[msg.ReceivedMessage.QueryData.Length];
                                for (int i = 0; i < list.Length; i++)
                                {
                                    list[i] = 9 + (Double)i;
                                }
                            }
                            if (reader.ModelNumber.IndexOf("812") != -1 ||
                                reader.ModelNumber.IndexOf("825") != -1 ||
                                reader.ModelNumber.IndexOf("829") != -1 ||
                                reader.ModelNumber.IndexOf("853") != -1 ||
                                reader.ModelNumber.IndexOf("R2000") != -1 ||
                                reader.ModelNumber.IndexOf("802") != -1)
                            {
                                list = new Double[msg.ReceivedMessage.QueryData.Length];
                                for (int i = 0; i < list.Length; i++)
                                {
                                    list[i] = (Double)i;
                                }
                            }
                        }
                        for (int i = 0; i < msg.ReceivedMessage.QueryData.Length; i++)
                        {
                            if (msg.ReceivedMessage.QueryData[i] != 0x00 && i < list.Length)
                            {
                                pa1.Items.Add(list[i].ToString());
                                pa2.Items.Add(list[i].ToString());
                                pa3.Items.Add(list[i].ToString());
                                pa4.Items.Add(list[i].ToString());
                            }
                        }

                        // 查询天线功率
                        IRP1.SysQuery_800 order1 = new IRP1.SysQuery_800(0x03);
                        if (reader.Send(order1))
                        {
                            if (order1.ReceivedMessage.QueryData[0] < list.Length)
                            {
                                this.pa1.Text = list[order1.ReceivedMessage.QueryData[0]].ToString();
                            }
                            if (order1.ReceivedMessage.QueryData[1] < list.Length)
                            {
                                this.pa2.Text = list[order1.ReceivedMessage.QueryData[1]].ToString();
                            }
                            if (order1.ReceivedMessage.QueryData[2] < list.Length)
                            {
                                this.pa3.Text = list[order1.ReceivedMessage.QueryData[2]].ToString();
                            }
                            if (order1.ReceivedMessage.QueryData[3] < list.Length)
                            {
                                this.pa4.Text = list[order1.ReceivedMessage.QueryData[3]].ToString();
                            }
                        }
                    }
                }
                if (isSuc)
                {
                    this.groupBox1.Enabled = true;
                }
                else
                {
                    this.groupBox1.Enabled = false;
                }
            }
            #endregion
        }
Ejemplo n.º 7
0
        public void Connect()
        {
            #region Client
            foreach (XmlNode node in Common.sysit_xml.DocumentElement.SelectNodes("Reader"))
            {
                MyReader r = new MyReader(node.Attributes["Name"].Value);
                try
                {
                    if (!r.reader.IsConnected)
                    {
                        if (r.reader.PortType == "TCPIP_Client")
                        {
                            string ip = r.reader.ConnString.Substring(0, r.reader.ConnString.IndexOf(':'));
                            using (Ping ping = new Ping())
                            {
                                PingReply pingReply = null;
                                pingReply = ping.Send(ip, 100);
                                if (pingReply.Status != IPStatus.Success)
                                {
                                    if (OnReaderErrorMsg != null)
                                    {
                                        OnReaderErrorMsg(r.reader, "网络不通");
                                    }
                                    continue;
                                }
                            }
                        }
                        if (r.reader.Connect())
                        {
                            ReaderList.Add(r);
                            if (r.reader.ProtocolVersion == "IRP1")
                            {
                                #region 查询型号
                                if (r.reader.ModelNumber == "unknown")
                                {
                                    String            mn  = "";
                                    IRP1.SysQuery_800 msg = new IRP1.SysQuery_800(0x20);
                                    if (r.reader.Send(msg, 200))
                                    {
                                        mn = Encoding.ASCII.GetString(msg.ReceivedMessage.QueryData).Trim('\0');
                                        r.reader.ModelNumber = mn;
                                    }
                                    if (mn != "XCRF-502E-F6G" && mn != "XC-RF806")
                                    {
                                        IRP1.SysQuery_800 msg1 = new IRP1.SysQuery_800(0x21);
                                        if (r.reader.Send(msg1, 200))
                                        {
                                            mn = Encoding.ASCII.GetString(msg1.ReceivedMessage.QueryData);
                                            if (mn.IndexOf("807") != -1)
                                            {
                                                r.reader.ModelNumber = "XC-RF807";
                                            }
                                            else if (mn.IndexOf("806") != -1)
                                            {
                                                r.reader.ModelNumber = "XC-RF806";
                                            }
                                            else if (mn.IndexOf("860") != -1)
                                            {
                                                r.reader.ModelNumber = "XC-RF860";
                                            }
                                        }
                                        else
                                        {
                                            r.reader.ModelNumber = "XCRF-502E";
                                        }
                                    }
                                    r.reader.ModelNumber = r.reader.ModelNumber.Trim('\0');
                                }
                                #endregion

                                #region 查询RSSI功能
                                {
                                    switch (r.reader.ModelNumber)
                                    {
                                    case "XC-RF807":
                                    case "XC-RF806":
                                    case "XCRF-860":
                                        IRP1.SysQuery_800 order = new IRP1.SysQuery_800(0x14);
                                        if (r.reader.Send(order, 200))
                                        {
                                            if (order.ReceivedMessage.QueryData != null && order.ReceivedMessage.QueryData.Length > 0)
                                            {
                                                if (order.ReceivedMessage.QueryData[0] == 0x01)
                                                {
                                                    r.IsRssiEnable_800 = true;
                                                }
                                                else
                                                {
                                                    r.IsRssiEnable_800 = false;
                                                }
                                            }
                                        }
                                        break;

                                    case "XCRF-502E-F6G":
                                    case "XC-RF811":
                                        r.IsRssiEnable_800 = true;
                                        break;
                                    }
                                }
                                #endregion

                                #region 查询UTC功能
                                {
                                    switch (r.reader.ModelNumber)
                                    {
                                    case "XC-RF807":
                                    case "XC-RF806":
                                    case "XCRF-860":
                                        IRP1.SysQuery_800 order = new IRP1.SysQuery_800(0x18);
                                        if (r.reader.Send(order, 200))
                                        {
                                            if (order.ReceivedMessage.QueryData != null && order.ReceivedMessage.QueryData.Length > 0)
                                            {
                                                if (order.ReceivedMessage.QueryData[0] == 0x01)
                                                {
                                                    r.IsUtcEnable_800 = true;
                                                }
                                                else
                                                {
                                                    r.IsUtcEnable_800 = false;
                                                }
                                            }
                                        }
                                        else
                                        {
                                            r.IsUtcEnable_800 = false;
                                        }
                                        break;
                                    }
                                }
                                #endregion

                                #region 激活天线
                                if (r.scanMsgParam.antennaIndex < 0x80)
                                {
                                    if (r.reader.ModelNumber == "XCRF-860")
                                    {
                                        byte a = 0x01;
                                        switch (r.scanMsgParam.antennaIndex)
                                        {
                                        case 0:
                                            a = 0x01;
                                            break;

                                        case 1:
                                        case 4:
                                            a = 0x02;
                                            break;

                                        case 2:
                                        case 5:
                                            a = 0x03;
                                            break;

                                        case 3:
                                        case 6:
                                            a = 0x04;
                                            break;
                                        }
                                        r.reader.Send(new IRP1.SysConfig_800(0x02, new Byte[] { a }), 200);
                                    }
                                    else if (r.reader.ModelNumber == "XCRF-502E-F6G" ||
                                             r.reader.ModelNumber == "XCRF-502E" ||
                                             r.reader.ModelNumber == "XC-RF811")
                                    {
                                        byte a = r.scanMsgParam.antennaIndex;
                                        r.reader.Send(new IRP1.SysConfig_500(0x02, 0x01, new Byte[] { a }), 200);
                                    }
                                }
                                #endregion
                            }
                            r.reader.OnMessageNotificationReceived +=
                                new MessageNotificationReceivedHandle(r_OnMessageNotificationReceived);
                            if (OnReaderErrorMsg != null)
                            {
                                OnReaderErrorMsg(r.reader, "建立连接成功");
                            }
                        }
                        else
                        {
                            r.reader.Disconnect();
                            if (OnReaderErrorMsg != null)
                            {
                                OnReaderErrorMsg(r.reader, "建立连接失败");
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Log.Info(ex.Message);
                }
            }
            #endregion

            #region Server
            foreach (XmlNode node in Common.sysit_xml.DocumentElement.SelectNodes("Server"))
            {
                String        port     = node.Attributes["Port"].Value;
                String        pVer     = node.Attributes["Protocol"].Value;
                TcpIpListener listener = new TcpIpListener(int.Parse(port), pVer);
                try
                {
                    listener.OnClientConn += new OnClientConnHandle(listener_OnClientConn);
                    listener.Run();
                    ServerList.Add(listener);
                    if (OnReaderErrorMsg != null)
                    {
                        OnReaderErrorMsg(null, port + "端口:" + "启动监听服务");
                    }
                }
                catch (Exception ex)
                {
                    if (OnReaderErrorMsg != null)
                    {
                        OnReaderErrorMsg(null, port + "端口:" + "启动监听服务失败");
                    }
                    Log.Info(port + "端口:" + "启动监听服务失败!" + ex.Message);
                }
            }
            #endregion
        }