Class: NetworkedRFID::RemoteRFIDReader
- Inherits:
-
Object
- Object
- NetworkedRFID::RemoteRFIDReader
- Defined in:
- lib/networked_rfid/remote_rfid_reader.rb
Overview
Класс отдельного TCP/IP-ридера, отвечающий за его опрос и передачу событий делегату delegate
.
У делегата должны быть определены методы-обработчики низкоуровневых событий кард-ридера вроде poll_reply
и rfid_read
.
Constant Summary collapse
- POLL_PACKET =
[ 0x02, 0xe0, 0x00, 0x98, 0x02, 0x00, 0x01, 0x7b, 0x03 ].pack('C*')
Instance Attribute Summary collapse
-
#delegate ⇒ Object
Returns the value of attribute delegate.
-
#ip ⇒ Object
readonly
Returns the value of attribute ip.
-
#port ⇒ Object
readonly
Returns the value of attribute port.
Instance Method Summary collapse
-
#initialize(ip, port) ⇒ RemoteRFIDReader
constructor
Инициализирует ридер, делая его доступным по ip на порту port.
-
#poll(socket) ⇒ Object
Отправлять запрос на опрос состояния ридера через socket.
-
#process_response(response) ⇒ Object
Обрабатывает двоичный ответ response от ридера и отправяет его делегату.
Constructor Details
#initialize(ip, port) ⇒ RemoteRFIDReader
Инициализирует ридер, делая его доступным по ip на порту port.
16 17 18 19 20 |
# File 'lib/networked_rfid/remote_rfid_reader.rb', line 16 def initialize(ip, port) @ip = ip @port = port @delegate = delegate end |
Instance Attribute Details
#delegate ⇒ Object
Returns the value of attribute delegate.
13 14 15 |
# File 'lib/networked_rfid/remote_rfid_reader.rb', line 13 def delegate @delegate end |
#ip ⇒ Object (readonly)
Returns the value of attribute ip.
12 13 14 |
# File 'lib/networked_rfid/remote_rfid_reader.rb', line 12 def ip @ip end |
#port ⇒ Object (readonly)
Returns the value of attribute port.
12 13 14 |
# File 'lib/networked_rfid/remote_rfid_reader.rb', line 12 def port @port end |
Instance Method Details
#poll(socket) ⇒ Object
Отправлять запрос на опрос состояния ридера через socket.
23 24 25 |
# File 'lib/networked_rfid/remote_rfid_reader.rb', line 23 def poll(socket) socket.send POLL_PACKET, 0, ip, port end |
#process_response(response) ⇒ Object
Обрабатывает двоичный ответ response от ридера и отправяет его делегату.
29 30 31 32 33 34 |
# File 'lib/networked_rfid/remote_rfid_reader.rb', line 29 def process_response(response) response = RFIDReply.read(response) if delegate.respond_to?(response.type) delegate.send(response.type, response.payload) end end |