Class: McProtocolE::Frame3e::Request
- Inherits:
-
Object
- Object
- McProtocolE::Frame3e::Request
- Defined in:
- lib/mc_protocol_e/frame_3e/request.rb
Overview
This class shows a request of MC protocol.
Constant Summary collapse
- DEFAULT_READ_TIMEOUT =
3- SUB_HEADER =
"\x50\x00".b
Class Method Summary collapse
-
.batch_read_in_multiple(access_route:, wait_sec:, device_ranges:) ⇒ Object
Returns a request to batch read in multiple.
-
.batch_read_in_word(access_route:, wait_sec:, device_range:) ⇒ Object
Returns a request to batch read in word.
-
.batch_write_in_word(access_route:, wait_sec:, device_range:, values:) ⇒ Object
Returns a request to batch write in word.
Instance Method Summary collapse
-
#exec(socket, read_timeout = DEFAULT_READ_TIMEOUT) ⇒ Object
Writes and returns a response.
-
#initialize(access_route:, wait_sec:, command:) ⇒ Request
constructor
Constructor.
-
#to_b ⇒ String
Returns binary string.
Constructor Details
#initialize(access_route:, wait_sec:, command:) ⇒ Request
Constructor.
20 21 22 23 24 25 |
# File 'lib/mc_protocol_e/frame_3e/request.rb', line 20 def initialize(access_route:, wait_sec:, command:) @sub_header = SUB_HEADER @access_route = access_route @wait_sec = WaitSec.new(wait_sec) @command = command end |
Class Method Details
.batch_read_in_multiple(access_route:, wait_sec:, device_ranges:) ⇒ Object
Returns a request to batch read in multiple.
31 32 33 |
# File 'lib/mc_protocol_e/frame_3e/request.rb', line 31 def self.batch_read_in_multiple(access_route:, wait_sec:, device_ranges:) new(access_route: access_route, wait_sec: wait_sec, command: BatchReadInMultiple.new(device_ranges: device_ranges)) end |
.batch_read_in_word(access_route:, wait_sec:, device_range:) ⇒ Object
Returns a request to batch read in word.
39 40 41 |
# File 'lib/mc_protocol_e/frame_3e/request.rb', line 39 def self.batch_read_in_word(access_route:, wait_sec:, device_range:) new(access_route: access_route, wait_sec: wait_sec, command: BatchReadInWord.new(device_range: device_range)) end |
.batch_write_in_word(access_route:, wait_sec:, device_range:, values:) ⇒ Object
Returns a request to batch write in word.
48 49 50 |
# File 'lib/mc_protocol_e/frame_3e/request.rb', line 48 def self.batch_write_in_word(access_route:, wait_sec:, device_range:, values:) new(access_route: access_route, wait_sec: wait_sec, command: BatchWriteInWord.new(device_range: device_range, values: values)) end |
Instance Method Details
#exec(socket, read_timeout = DEFAULT_READ_TIMEOUT) ⇒ Object
Writes and returns a response.
56 57 58 59 60 |
# File 'lib/mc_protocol_e/frame_3e/request.rb', line 56 def exec(socket, read_timeout = DEFAULT_READ_TIMEOUT) socket.write(to_b) res = Response.recv(socket, read_timeout) command.parse(res) end |
#to_b ⇒ String
Returns binary string.
64 65 66 |
# File 'lib/mc_protocol_e/frame_3e/request.rb', line 64 def to_b sub_header + access_route.to_b + request_len_to_b + wait_sec.to_b + command.to_b end |