/// <summary></summary> public void Open() { if (this.IsConnected) { return; } this.llrpClient = new LLRPClient(port: this.port); ENUM_ConnectionAttemptStatusType status = ENUM_ConnectionAttemptStatusType.Success; bool isSuccessed = this.llrpClient.Open( llrp_reader_name: this.host, status: out status, timeout: this.timeout); if (!isSuccessed || status != ENUM_ConnectionAttemptStatusType.Success) { throw new Exception($"接続失敗. {status.ToString()}"); } this.ResetToFactoryDefault(); this.EnableImpinjExtetions(); this.GetReaderConfig(); this.GetReaderCapabilities(); }
private void ProcessFrame(short ver, short msg_type, int msg_id, byte[] data) { int cursor = 0; switch (msg_type) { case 61: try { BitArray bitArray = Util.ConvertByteArrayToBitArray(data); int count = bitArray.Count; this.notificationQueue.Enqueue((object)MSG_RO_ACCESS_REPORT.FromBitArray(ref bitArray, ref cursor, count)); break; } catch { break; } case 62: try { BitArray bitArray = Util.ConvertByteArrayToBitArray(data); int count = bitArray.Count; this.notificationQueue.Enqueue((object)MSG_KEEPALIVE.FromBitArray(ref bitArray, ref cursor, count)); break; } catch { break; } case 63: try { BitArray bitArray = Util.ConvertByteArrayToBitArray(data); int count = bitArray.Count; MSG_READER_EVENT_NOTIFICATION eventNotification = MSG_READER_EVENT_NOTIFICATION.FromBitArray(ref bitArray, ref cursor, count); if (this.conn_evt != null && eventNotification.ReaderEventNotificationData.ConnectionAttemptEvent != null) { this.conn_status_type = eventNotification.ReaderEventNotificationData.ConnectionAttemptEvent.Status; this.conn_evt.Set(); break; } this.notificationQueue.Enqueue((object)eventNotification); break; } catch { break; } } }
/// <summary></summary> public void Open() { if (this.IsConnected) { return; } this.BaseClient = new LLRPClient(port: this.Port); this.BaseClient.OnKeepAlive += this.OnLLRPClientKeepalive; this.BaseClient.OnRoAccessReportReceived += this.OnLLRPClientRoAccessReportReceived; this.BaseClient.OnReaderEventNotification += this.OnLLRPClientReaderEventNotification; ENUM_ConnectionAttemptStatusType status = ENUM_ConnectionAttemptStatusType.Success; bool isSuccessed = this.BaseClient.Open( llrp_reader_name: this.Host, status: out status, timeout: 5000, useTLS: false); if (!isSuccessed || status != ENUM_ConnectionAttemptStatusType.Success) { throw new Exception($"接続失敗({status}) {isSuccessed}"); } try { this.ResetToFactoryDefault(); this.EnableImpinjExtensions(); this.SetReaderConfig(); this.SetAntennaConfig(); this.AddROSpec(14150); this.EnableROSpec(14150); } catch (Exception except) { this.Dispose(); throw except; } }
public bool Open( string llrp_reader_name, int timeout, out ENUM_ConnectionAttemptStatusType status) { this.reader_name = llrp_reader_name; status = ~ENUM_ConnectionAttemptStatusType.Success; this.cI.OnFrameReceived += new delegateMessageReceived(this.ProcessFrame); try { this.cI.Open(llrp_reader_name, this.LLRP_TCP_PORT, timeout); } catch (Exception ex) { this.cI.OnFrameReceived -= new delegateMessageReceived(this.ProcessFrame); throw ex; } this.conn_evt = new ManualResetEvent(false); if (this.conn_evt.WaitOne(timeout, false)) { status = this.conn_status_type; if (status == ENUM_ConnectionAttemptStatusType.Success) { this.connected = true; return(this.connected); } } this.reader_name = llrp_reader_name; try { this.cI.Close(); this.cI.OnFrameReceived -= new delegateMessageReceived(this.ProcessFrame); } catch { } this.connected = false; return(this.connected); }
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; } }
public bool Open(string llrp_reader_name, int timeout, out ENUM_ConnectionAttemptStatusType status) { reader_name = llrp_reader_name; status = ENUM_ConnectionAttemptStatusType.Failed_Reason_Other_Than_A_Connection_Already_Exists; cI.OnMessageReceived += new delegateMessageReceived(ProcesssMessage); try { cI.Open(llrp_reader_name, LLRP_TCP_PORT); } catch { cI.OnMessageReceived -= new delegateMessageReceived(ProcesssMessage); return false; } conn_evt = new ManualResetEvent(false); if (conn_evt.WaitOne(timeout, false)) { status = conn_status_type; if (status == ENUM_ConnectionAttemptStatusType.Success) return true; } reader_name = llrp_reader_name; try { cI.Close(); cI.OnMessageReceived -= new delegateMessageReceived(ProcesssMessage); } catch { } return false; }