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); } } } } }
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(); }
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; }
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); } }
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(); } }
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 }
void myReaders_OnReaderClientConn(MyReader myReader, EventArgs arg) { addTreeNode(tvReaders, myReader); }