private void ProcesssMessage(Int16 ver, Int16 msg_type, Int32 msg_id, byte[] data) { BitArray bArr; int cursor = 0; int length; switch ((ENUM_LLRP_MSG_TYPE)msg_type) { case ENUM_LLRP_MSG_TYPE.CUSTOM_MESSAGE: _event_CUSTOM_MESSAGE.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_CUSTOM_MESSAGE.data, data.Length); _event_CUSTOM_MESSAGE.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.GET_READER_CAPABILITIES: _event_GET_READER_CAPABILITIES.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_GET_READER_CAPABILITIES.data, data.Length); _event_GET_READER_CAPABILITIES.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.GET_READER_CAPABILITIES_RESPONSE: _event_GET_READER_CAPABILITIES_RESPONSE.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_GET_READER_CAPABILITIES_RESPONSE.data, data.Length); _event_GET_READER_CAPABILITIES_RESPONSE.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.ADD_ROSPEC: _event_ADD_ROSPEC.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_ADD_ROSPEC.data, data.Length); _event_ADD_ROSPEC.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.ADD_ROSPEC_RESPONSE: _event_ADD_ROSPEC_RESPONSE.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_ADD_ROSPEC_RESPONSE.data, data.Length); _event_ADD_ROSPEC_RESPONSE.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.DELETE_ROSPEC: _event_DELETE_ROSPEC.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_DELETE_ROSPEC.data, data.Length); _event_DELETE_ROSPEC.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.DELETE_ROSPEC_RESPONSE: _event_DELETE_ROSPEC_RESPONSE.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_DELETE_ROSPEC_RESPONSE.data, data.Length); _event_DELETE_ROSPEC_RESPONSE.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.START_ROSPEC: _event_START_ROSPEC.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_START_ROSPEC.data, data.Length); _event_START_ROSPEC.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.START_ROSPEC_RESPONSE: _event_START_ROSPEC_RESPONSE.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_START_ROSPEC_RESPONSE.data, data.Length); _event_START_ROSPEC_RESPONSE.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.STOP_ROSPEC: _event_STOP_ROSPEC.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_STOP_ROSPEC.data, data.Length); _event_STOP_ROSPEC.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.STOP_ROSPEC_RESPONSE: _event_STOP_ROSPEC_RESPONSE.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_STOP_ROSPEC_RESPONSE.data, data.Length); _event_STOP_ROSPEC_RESPONSE.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.ENABLE_ROSPEC: _event_ENABLE_ROSPEC.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_ENABLE_ROSPEC.data, data.Length); _event_ENABLE_ROSPEC.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.ENABLE_ROSPEC_RESPONSE: _event_ENABLE_ROSPEC_RESPONSE.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_ENABLE_ROSPEC_RESPONSE.data, data.Length); _event_ENABLE_ROSPEC_RESPONSE.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.DISABLE_ROSPEC: _event_DISABLE_ROSPEC.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_DISABLE_ROSPEC.data, data.Length); _event_DISABLE_ROSPEC.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.DISABLE_ROSPEC_RESPONSE: _event_DISABLE_ROSPEC_RESPONSE.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_DISABLE_ROSPEC_RESPONSE.data, data.Length); _event_DISABLE_ROSPEC_RESPONSE.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.GET_ROSPECS: _event_GET_ROSPECS.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_GET_ROSPECS.data, data.Length); _event_GET_ROSPECS.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.GET_ROSPECS_RESPONSE: _event_GET_ROSPECS_RESPONSE.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_GET_ROSPECS_RESPONSE.data, data.Length); _event_GET_ROSPECS_RESPONSE.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.ADD_ACCESSSPEC: _event_ADD_ACCESSSPEC.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_ADD_ACCESSSPEC.data, data.Length); _event_ADD_ACCESSSPEC.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.ADD_ACCESSSPEC_RESPONSE: _event_ADD_ACCESSSPEC_RESPONSE.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_ADD_ACCESSSPEC_RESPONSE.data, data.Length); _event_ADD_ACCESSSPEC_RESPONSE.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.DELETE_ACCESSSPEC: _event_DELETE_ACCESSSPEC.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_DELETE_ACCESSSPEC.data, data.Length); _event_DELETE_ACCESSSPEC.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.DELETE_ACCESSSPEC_RESPONSE: _event_DELETE_ACCESSSPEC_RESPONSE.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_DELETE_ACCESSSPEC_RESPONSE.data, data.Length); _event_DELETE_ACCESSSPEC_RESPONSE.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.ENABLE_ACCESSSPEC: _event_ENABLE_ACCESSSPEC.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_ENABLE_ACCESSSPEC.data, data.Length); _event_ENABLE_ACCESSSPEC.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.ENABLE_ACCESSSPEC_RESPONSE: _event_ENABLE_ACCESSSPEC_RESPONSE.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_ENABLE_ACCESSSPEC_RESPONSE.data, data.Length); _event_ENABLE_ACCESSSPEC_RESPONSE.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.DISABLE_ACCESSSPEC: _event_DISABLE_ACCESSSPEC.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_DISABLE_ACCESSSPEC.data, data.Length); _event_DISABLE_ACCESSSPEC.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.DISABLE_ACCESSSPEC_RESPONSE: _event_DISABLE_ACCESSSPEC_RESPONSE.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_DISABLE_ACCESSSPEC_RESPONSE.data, data.Length); _event_DISABLE_ACCESSSPEC_RESPONSE.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.GET_ACCESSSPECS: _event_GET_ACCESSSPECS.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_GET_ACCESSSPECS.data, data.Length); _event_GET_ACCESSSPECS.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.GET_ACCESSSPECS_RESPONSE: _event_GET_ACCESSSPECS_RESPONSE.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_GET_ACCESSSPECS_RESPONSE.data, data.Length); _event_GET_ACCESSSPECS_RESPONSE.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.GET_READER_CONFIG: _event_GET_READER_CONFIG.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_GET_READER_CONFIG.data, data.Length); _event_GET_READER_CONFIG.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.GET_READER_CONFIG_RESPONSE: _event_GET_READER_CONFIG_RESPONSE.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_GET_READER_CONFIG_RESPONSE.data, data.Length); _event_GET_READER_CONFIG_RESPONSE.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.SET_READER_CONFIG: _event_SET_READER_CONFIG.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_SET_READER_CONFIG.data, data.Length); _event_SET_READER_CONFIG.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.SET_READER_CONFIG_RESPONSE: _event_SET_READER_CONFIG_RESPONSE.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_SET_READER_CONFIG_RESPONSE.data, data.Length); _event_SET_READER_CONFIG_RESPONSE.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.CLOSE_CONNECTION: _event_CLOSE_CONNECTION.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_CLOSE_CONNECTION.data, data.Length); _event_CLOSE_CONNECTION.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.CLOSE_CONNECTION_RESPONSE: _event_CLOSE_CONNECTION_RESPONSE.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_CLOSE_CONNECTION_RESPONSE.data, data.Length); _event_CLOSE_CONNECTION_RESPONSE.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.GET_REPORT: _event_GET_REPORT.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_GET_REPORT.data, data.Length); _event_GET_REPORT.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.RO_ACCESS_REPORT: try { bArr = Util.ConvertByteArrayToBitArray(data); length = bArr.Count; MSG_RO_ACCESS_REPORT rpt = MSG_RO_ACCESS_REPORT.FromBitArray(ref bArr, ref cursor, length); delegateRoAccessReport roaccess = new delegateRoAccessReport(TriggerRoAccessReport); roaccess.BeginInvoke(rpt, null, null); } catch { } break; case ENUM_LLRP_MSG_TYPE.KEEPALIVE: try { bArr = Util.ConvertByteArrayToBitArray(data); length = bArr.Count; MSG_KEEPALIVE msg = MSG_KEEPALIVE.FromBitArray(ref bArr, ref cursor, length); delegateKeepAlive rMsg = new delegateKeepAlive(TriggerKeepAlive); rMsg.BeginInvoke(msg, null, null); } catch { } break; case ENUM_LLRP_MSG_TYPE.KEEPALIVE_ACK: _event_KEEPALIVE_ACK.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_KEEPALIVE_ACK.data, data.Length); _event_KEEPALIVE_ACK.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.READER_EVENT_NOTIFICATION: try { bArr = Util.ConvertByteArrayToBitArray(data); length = bArr.Count; MSG_READER_EVENT_NOTIFICATION ntf = MSG_READER_EVENT_NOTIFICATION.FromBitArray(ref bArr, ref cursor, length); if (conn_evt != null && ntf.ReaderEventNotificationData.ConnectionAttemptEvent != null) { conn_status_type = ntf.ReaderEventNotificationData.ConnectionAttemptEvent.Status; conn_evt.Set(); } else { delegateReaderEventNotification rEvent = new delegateReaderEventNotification(TriggerReaderEventNotification); rEvent.BeginInvoke(ntf, null, null); } } catch { } break; case ENUM_LLRP_MSG_TYPE.ENABLE_EVENTS_AND_REPORTS: _event_ENABLE_EVENTS_AND_REPORTS.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_ENABLE_EVENTS_AND_REPORTS.data, data.Length); _event_ENABLE_EVENTS_AND_REPORTS.evt.Set(); break; case ENUM_LLRP_MSG_TYPE.ERROR_MESSAGE: _event_ERROR_MESSAGE.data = new byte[data.Length]; if (data.Length > 0) Array.Copy(data, _event_ERROR_MESSAGE.data, data.Length); _event_ERROR_MESSAGE.evt.Set(); break; default: break; } }
void reader_OnRoAccessReportReceived(MSG_RO_ACCESS_REPORT msg) { delegateRoAccessReport del = new delegateRoAccessReport(UpdateROReport); this.Invoke(del, msg); }
void OnRoAccessReportReceived(MSG_RO_ACCESS_REPORT msg) { isRoAccessReportReceived = true; lock (isRoAccessReportsComingLock) { isRoAccessReportsComing = true; } delegateRoAccessReport del = new delegateRoAccessReport(UpdateROReport); del.Invoke(msg); }
//Thread myThread = new Thread(new ThreadStart(this.UpdateROReport)); public void reader_OnRoAccessReportReceived(MSG_RO_ACCESS_REPORT msg) { delegateRoAccessReport del = UpdateROReport; del.BeginInvoke(msg, OnAsyncCallBack, null); }
void TagOpOnRoAccessReportReceived(MSG_RO_ACCESS_REPORT msg) { BuildTransport(false, msg); delegateRoAccessReport del = new delegateRoAccessReport(ParseTagOpResponse); del.Invoke(msg); }