private void displayMethod(IRP1.RXD_TagData msg) { lock (lockobj) { bool isAdd = true; string epc = Core.Util.ConvertByteArrayToHexString(msg.ReceivedMessage.EPC); string tid = Core.Util.ConvertByteArrayToHexString(msg.ReceivedMessage.TID); foreach (DataRow dr in myDt.Rows) { if ((dr["EPC"] != null && dr["EPC"].ToString() != "" && dr["EPC"].ToString() == epc) || (dr["TID"] != null && dr["TID"].ToString() != "" && dr["TID"].ToString() == tid)) { isAdd = false; dr["Count"] = int.Parse(dr["Count"].ToString()) + 1; } } if (isAdd) { DataRow mydr = myDt.NewRow(); mydr["EPC"] = epc; mydr["TID"] = tid; mydr["Userdata"] = Core.Util.ConvertByteArrayToHexString(msg.ReceivedMessage.UserData); mydr["Count"] = 1; myDt.Rows.Add(mydr); } } }
private void display(IRP1.RXD_TagData msg) { if (this.InvokeRequired) { displayHandle h = new displayHandle(displayMethod); lst_data.BeginInvoke(h, msg); } else { displayMethod(msg); } }
private void display(IRP1.RXD_TagData msg) { if (dataGridView1.InvokeRequired) { displayHandle h = new displayHandle(displayMethod); dataGridView1.BeginInvoke(h, msg); } else { displayMethod(msg); } }
void reader_OnMessageNotificationReceived(Invengo.NetAPI.Core.BaseReader reader, Invengo.NetAPI.Core.IMessageNotification msg) { // String nowString = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); // MessageBox.Show(nowString); //brett // String utcString = nowString; if (msg.StatusCode != 0) { showMsg(msg.ErrInfo); return; } String msgType = msg.GetMessageType(); msgType = msgType.Substring(msgType.LastIndexOf('.') + 1); switch (msgType) { #region RXD_TagData case "RXD_TagData": { IRP1.RXD_TagData m = (IRP1.RXD_TagData)msg; string rssi = m.ReceivedMessage.RSSI[0].ToString(); //RSSI SendMQTT(m); // Sends to MQTT display(m); // Local Display } break; #endregion #region RXD_IOTriggerSignal_800 case "RXD_IOTriggerSignal_800": { IRP1.RXD_IOTriggerSignal_800 m = (IRP1.RXD_IOTriggerSignal_800)msg; if (m.ReceivedMessage.IsStart) { changeCtrlEnable("scan"); // lbl_msg.Text = " Reading"; // btn_Stop.Enabled = true; // btn_ReadEPC.Enabled = false; } else { changeCtrlEnable("conn"); //lbl_msg.Text = " stop"; //btn_Stop.Enabled = false; //btn_ReadEPC.Enabled = true; } } break; #endregion } }
bool SendMQTT(IRP1.RXD_TagData msg) { //showMsg(); -- Desplega Mensajes string payload = ""; string Antenna = "99"; string epc = "XY"; lock (lockobj) { epc = Core.Util.ConvertByteArrayToHexString(msg.ReceivedMessage.EPC); //string tid = Core.Util.ConvertByteArrayToHexString(msg.ReceivedMessage.TID); //string userdata = Core.Util.ConvertByteArrayToHexString(msg.ReceivedMessage.UserData); //string UTC = Core.Util.ConvertByteArrayToHexString(msg.ReceivedMessage.RXDTime); Antenna = msg.ReceivedMessage.Antenna.ToString(); String nowString = DateTime.Now.ToString("yyyy-MM-dd|HH:mm:ss,fff");// you can use this if you want the time from the Host //string rxdTime = ReadTimeToString(msg.ReceivedMessage.RXDTime); //nowString = rxdTime; Byte[] bRssi = msg.ReceivedMessage.RSSI; string rssi = ""; rssi = bRssi[0].ToString("X2"); // X2 displays in HEX payload = nowString + "|" + kutil.getRNC(epc) + "|" + "NONE" + "|" + rssi; // payload = kutil.getRNC(epc) + "|" + tid + "|" + userdata + "|RSSI:" + rssi + "|UTC: " + nowString + "|Ant: " + Antenna; } //string topic = "rfid" + Antenna; // Deduplication Routine if (epc == lastEPC) { return(false); } else { lastEPC = epc; } //Send to MQTT client.Publish(Topic, Encoding.UTF8.GetBytes(payload), MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE, true); return(true); }
/// <summary> /// 接收到读写器消息触发事件 /// </summary> /// <param name="reader">读写器类</param> /// <param name="msg">消息内容</param> void reader_OnMessageNotificationReceived(Invengo.NetAPI.Core.BaseReader reader, Invengo.NetAPI.Core.IMessageNotification msg) { if (msg.StatusCode != 0) { //显示错误信息 showMsg(msg.ErrInfo); return; } String msgType = msg.GetMessageType(); msgType = msgType.Substring(msgType.LastIndexOf('.') + 1); switch (msgType) { #region RXD_TagData case "RXD_TagData": { IRP1.RXD_TagData m = (IRP1.RXD_TagData)msg; string tagType = m.ReceivedMessage.TagType; display(m); } break; #endregion #region RXD_IOTriggerSignal_800 case "RXD_IOTriggerSignal_800": { IRP1.RXD_IOTriggerSignal_800 m = (IRP1.RXD_IOTriggerSignal_800)msg; if (m.ReceivedMessage.IsStart) { changeCtrlEnable("scan"); showMsg(" I/O 触发,正在读卡..."); } else { changeCtrlEnable("conn"); showMsg(" I/O 触发,停止读卡"); } } break; #endregion } }
private void displayMethod(IRP1.RXD_TagData msg) { lock (lockobj) { string epc = Core.Util.ConvertByteArrayToHexString(msg.ReceivedMessage.EPC); string tid = Core.Util.ConvertByteArrayToHexString(msg.ReceivedMessage.TID); string userdata = Core.Util.ConvertByteArrayToHexString(msg.ReceivedMessage.UserData); string UTC = Core.Util.ConvertByteArrayToHexString(msg.ReceivedMessage.RXDTime); string Antenna = msg.ReceivedMessage.Antenna.ToString(); String nowString = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");// you can use this if you want the time from the Host string rxdTime = ReadTimeToString(msg.ReceivedMessage.RXDTime); nowString = rxdTime; Byte[] bRssi = msg.ReceivedMessage.RSSI; string rssi = ""; rssi = bRssi[0].ToString("X2"); // X2 displays in HEX lst_data.Items.Add(epc + " " + tid + " " + userdata + " RSSI:" + rssi + " UTC: " + nowString + " Ant: " + Antenna); } }
//Display what scan on the windows private void displayMethod(IRP1.RXD_TagData msg) { lock (lockobj) { bool isAdd = true; int count = 0; string barcode, layercode; string epc = Core.Util.ConvertByteArrayToHexString(msg.ReceivedMessage.EPC); string tid = Core.Util.ConvertByteArrayToHexString(msg.ReceivedMessage.TID); foreach (DataRow dr in myDt.Rows) { //whether is showed on the windows if ((dr["EPC"] != null && dr["EPC"].ToString() != "" && dr["EPC"].ToString() == epc)) { isAdd = false; count = int.Parse(dr["Count"].ToString()) + 1; dr["Count"] = count; } } if (isAdd) { DataRow mydr = myDt.NewRow(); mydr["EPC"] = epc; mydr["Count"] = 1; myDt.Rows.Add(mydr); //add data to database if (epc[9] == '2')//2 stands for layer code and should be stored into a different database { layercode = transLayerCode(epc); mydr["barcode"] = "Layer: " + layercode; } else if (epc[9] == '0')//0 stands for book code { barcode = convertBookLayer(epc); mydr["barcode"] = barcode; } } } }
static void reader_OnMessageNotificationReceived(Invengo.NetAPI.Core.BaseReader reader, Invengo.NetAPI.Core.IMessageNotification msg) { if (msg.StatusCode != 0) { //显示错误信息 throw (new Exception(msg.ErrInfo)); } String msgType = msg.GetMessageType(); msgType = msgType.Substring(msgType.LastIndexOf('.') + 1); switch (msgType) { #region RXD_TagData case "RXD_TagData": { IRP1.RXD_TagData m = (IRP1.RXD_TagData)msg; if (OnRFIDDisplay != null) { OnRFIDDisplay(m); } } break; #endregion #region RXD_IOTriggerSignal_800 case "RXD_IOTriggerSignal_800": { IRP1.RXD_IOTriggerSignal_800 m = (IRP1.RXD_IOTriggerSignal_800)msg; if (m.ReceivedMessage.IsStart) { } else { } } break; #endregion } }
void r_OnMessageNotificationReceived(BaseReader reader, IMessageNotification msg) { String nowString = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); String utcString = nowString; String reserve = string.Empty; NotificationMessage nmsg = null; switch (reader.ProtocolVersion) { case "IRP1": { if (msg.StatusCode != 0) { if (OnReaderErrorMsg != null) { OnReaderErrorMsg((IRP1.Reader)reader, msg.ErrInfo); } Log.Debug(reader.ReaderName + ":" + msg.ErrInfo); return; } String msgType = msg.GetMessageType(); msgType = msgType.Substring(msgType.LastIndexOf('.') + 1); switch (msgType) { #region RXD_TagData case "RXD_TagData": { IRP1.RXD_TagData m = (IRP1.RXD_TagData)msg; Byte[] bRssi = m.ReceivedMessage.RSSI; string rssi = ""; if (bRssi != null) { if (reader.ModelNumber.IndexOf("502E") != -1 || reader.ModelNumber.IndexOf("811") != -1) { rssi = bRssi[0].ToString("X2") + bRssi[1].ToString("X2"); } else { rssi = bRssi[0].ToString("X2"); } } string rxdTime = Common.ReadTimeToString(m.ReceivedMessage.RXDTime); if (rxdTime != "") { nowString = rxdTime; } nmsg = new NotificationMessage( m.ReceivedMessage.ReaderName, m.ReceivedMessage.TagType, Util.ConvertByteArrayToHexWordString(m.ReceivedMessage.EPC), Util.ConvertByteArrayToHexWordString(m.ReceivedMessage.TID), Util.ConvertByteArrayToHexWordString(m.ReceivedMessage.UserData), Util.ConvertByteArrayToHexWordString(m.ReceivedMessage.Reserved), rssi, m.ReceivedMessage.Antenna, nowString ); } break; #endregion #region EasAlarm_6C case "EasAlarm_6C": { IRP1.EasAlarm_6C m = (IRP1.EasAlarm_6C)msg; if (m.ReceivedMessage.AnswerType == 0xa0) { if (OnTagAlarm != null) { OnTagAlarm(null, EventArgs.Empty); } } } break; #endregion #region PcSendTime_500(805) case "PcSendTime_500": { IRP1.PcSendTime_500 m = (IRP1.PcSendTime_500)msg; DateTime now = DateTime.Now; TimeSpan ts = now - new DateTime(1970, 1, 1); int d = (int)ts.TotalSeconds; Byte[] bytes = BitConverter.GetBytes(d); Byte[] time = new Byte[4]; time[0] = bytes[3]; time[1] = bytes[2]; time[2] = bytes[1]; time[3] = bytes[0]; IRP1.PcSendTime_500 order = new IRP1.PcSendTime_500(m.ReceivedMessage.ReaderID, time); reader.Send(order); } break; #endregion #region RXD_IOTriggerSignal_800 case "RXD_IOTriggerSignal_800": { IRP1.RXD_IOTriggerSignal_800 m = (IRP1.RXD_IOTriggerSignal_800)msg; if (m.ReceivedMessage.IsStart) { //TODO: } else { //TODO: } } break; #endregion #region Keepalive case "Keepalive": { reader.Send(new IRP1.Keepalive()); } break; #endregion } } break; case "IRP2": // TODO: break; } if (OnReaderNotificationMsg != null) { OnReaderNotificationMsg((IRP1.Reader)reader, nmsg); } }