class Simatic::Sessions::Session
Parent of all communication sessions
Public Instance Methods
make_request(payload)
click to toggle source
# File lib/simatic/sessions/session.rb, line 25 def make_request payload [0x03, 0x00, payload.length + 4].pack('CCn') + payload end
packet_number()
click to toggle source
# File lib/simatic/sessions/session.rb, line 20 def packet_number @@pdu_num = 0 if @@pdu_num >= 0xffff @@pdu_num += 1 end
parse_response(raw_data)
click to toggle source
# File lib/simatic/sessions/session.rb, line 29 def parse_response raw_data # print "raw "; raw_data.bytes.each{|byte| printf "%02X ", byte}; puts '' @real_length = raw_data.length raise "empty response" if @real_length < 2 @protocol_version = raw_data[0,2].unpack('n').first raise "unknown response 0x#{@protocol_version.to_s(16)}" if @protocol_version != 0x0300 @lenght = raw_data[2,2].unpack('n').first raise "too short response" if @real_length < 4 raise "broken response length #{@real_length}, must be #{@lenght}" if @real_length != @lenght end