Пример #1
0
        void listener_OnClientConn(Socket socket, String pVer)
        {
            if (pVer == "IRP1")
            {
                IRP1.Reader reader = new IRP1.Reader(socket);

                if (reader.Connect())
                {
                    #region 激活天线
                    reader.Send(new IRP1.SysConfig_500(0x02, 0x01, new Byte[] { 0x01 }), 200);
                    #endregion
                    if (reader.IsConnected)
                    {
                        MyReader r = new MyReader();
                        r.reader = reader;
                        if (r.reader.ProtocolVersion == "IRP1")
                        {
                            r.ScanMessage = new IRP1.ReadTag(IRP1.ReadTag.ReadMemoryBank.EPC_6C);
                            r.StopMessage = new IRP1.PowerOff();//XC-RF502E-F6G
                        }
                        reader.OnMessageNotificationReceived += new MessageNotificationReceivedHandle(r_OnMessageNotificationReceived);
                        ReaderList.Add(r);
                        if (OnReaderClientConn != null)
                        {
                            OnReaderClientConn(r, EventArgs.Empty);
                        }
                    }
                }
            }
        }
Пример #2
0
        void addTreeNodeMethod(Control ctrl, MyReader myReader)
        {
            TreeNode node = tvReaders.Nodes.Find("Port:" + myReader.reader.ReaderGroup, true)[0];

            node.Nodes.Add(myReader.reader.ReaderName, myReader.reader.ReaderName).ImageIndex = 5;
            node.Expand();
            node.Parent.Expand();
        }
Пример #3
0
        public TagAccessForm(MyReader myReader, Byte antenna, String tagIDStr, String tagType, MemoryBank mb)
        {
            InitializeComponent();
            this.myReader = myReader;
            this.antenna = antenna;
            this.tagIDStr = tagIDStr;
            this.tagType = tagType;
            

            tagID = Util.ConvertHexStringToByteArray(this.tagIDStr);
            this.mb = mb;
        }
Пример #4
0
        void addTreeNode(Control ctrl, MyReader myReader)
        {
            if (this.InvokeRequired)
            {
                MethodInvoker invoker = new MethodInvoker(
                    delegate()
                {
                    addTreeNodeMethod(ctrl, myReader);
                });

                this.BeginInvoke(invoker, ctrl, myReader);
            }
            else
            {
                addTreeNodeMethod(ctrl, myReader);
            }
        }
Пример #5
0
 private void btnTagAccess_Click(object sender, EventArgs e)
 {
     if (dgvScanData.CurrentRow != null)
     {
         MyReader mr = Common.myReaders.Find(dgvScanData.CurrentRow.Cells[0].Value.ToString());
         if (!btnScan.Enabled)
         {
             MessageBox.Show("读卡时不能进行标签操作");
             return;
         }
         byte antenna = 0x01;
         int  aCount  = (int)dgvScanData.CurrentRow.Cells[8].Value;
         for (int i = 9; i < 12; i++)
         {
             int count = (int)dgvScanData.CurrentRow.Cells[i].Value;
             if (count > aCount)
             {
                 aCount  = count;
                 antenna = (byte)(i - 7);
             }
         }
         string     tagid   = dgvScanData.CurrentRow.Cells[2].Value.ToString();
         string     tagtype = dgvScanData.CurrentRow.Cells[1].Value.ToString();
         MemoryBank mb      = MemoryBank.EPCMemory;
         if (tagid == "")
         {
             tagid = dgvScanData.CurrentRow.Cells[3].Value.ToString();
             mb    = MemoryBank.TIDMemory;
         }
         TagAccessForm frm = new TagAccessForm(
             mr,
             antenna,
             tagid,
             tagtype,
             mb);
         frm.ShowDialog();
     }
 }
Пример #6
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
        }
Пример #7
0
 void myReaders_OnReaderClientConn(MyReader myReader, EventArgs arg)
 {
     addTreeNode(tvReaders, myReader);
 }