Class: NetworkedRFID::RemoteRFIDReader

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

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

#delegateObject

Returns the value of attribute delegate.



13
14
15
# File 'lib/networked_rfid/remote_rfid_reader.rb', line 13

def delegate
  @delegate
end

#ipObject (readonly)

Returns the value of attribute ip.



12
13
14
# File 'lib/networked_rfid/remote_rfid_reader.rb', line 12

def ip
  @ip
end

#portObject (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