module SiemensDimensionExlModule
Constants
- FS
Public Class Methods
included(base)
click to toggle source
# File lib/ruby_astm/custom/siemens_dimension_exl_module.rb, line 5 def self.included base base.extend ClassMethods end
Public Instance Methods
acknowledge()
click to toggle source
# File lib/ruby_astm/custom/siemens_dimension_exl_module.rb, line 75 def acknowledge resp = ACK send_data(ACK) end
enq?()
click to toggle source
# File lib/ruby_astm/custom/siemens_dimension_exl_module.rb, line 71 def enq? self.data_bytes.flatten[-1] == 5 end
message_ends?()
click to toggle source
# File lib/ruby_astm/custom/siemens_dimension_exl_module.rb, line 62 def message_ends? x = self.data_bytes.flatten[-1] == 3 if x == true puts "message ends #{self.data_bytes.flatten}" self.data_bytes = [] end x end
no_request()
click to toggle source
# File lib/ruby_astm/custom/siemens_dimension_exl_module.rb, line 80 def no_request resp = STX + "N" + FS + "6A" + ETX + "\n" send_data(resp.bytes.to_a.pack('c*')) end
pre_process_bytes(byte_arr,concat)
click to toggle source
# File lib/ruby_astm/custom/siemens_dimension_exl_module.rb, line 11 def pre_process_bytes(byte_arr,concat) puts "this is the overridden method" puts byte_arr.to_s indices_to_delete = is_mid_frame_end?(byte_arr) #puts "indices to delete" #puts indices_to_delete.to_s if self.mid_frame_end_detected == true #puts "deletected mid fram is true, so deleting first byte before delete" #puts byte_arr.to_s byte_arr = byte_arr[1..-1] #puts "after deleteing" #puts byte_arr.to_s self.mid_frame_end_detected = false end unless indices_to_delete.blank? if byte_arr[(indices_to_delete[-1] + 1)] #puts "before deleting frame number " #puts byte_arr.to_s byte_arr.delete_at((indices_to_delete[-1] + 1)) #puts "after deleting" #puts byte_arr.to_s else self.mid_frame_end_detected = true end end #puts "byte arr before reject" byte_arr = byte_arr.reject.with_index{|c,i| indices_to_delete.include? i} byte_arr.each do |byte| x = [byte].pack('c*').force_encoding('UTF-8') if x == "\r" concat+="\n" elsif x == "\n" #puts "new line found --- " concat+=x #puts "last thing in concat." #puts concat[-1].to_s else concat+=x end end concat end
receive_data(data)
click to toggle source
# File lib/ruby_astm/custom/siemens_dimension_exl_module.rb, line 87 def receive_data(data) begin self.data_buffer ||= '' #puts "incoming data bytes." concat = "" byte_arr = data.bytes.to_a self.test_data_bytes ||= [] self.data_bytes ||= [] self.test_data_bytes.push(byte_arr) self.data_bytes.push(byte_arr) concat = pre_process_bytes(byte_arr,concat) self.data_buffer << concat if message_ends? acknowledge no_request end rescue => e #self.headers = [] AstmServer.log("data was: " + self.data_buffer + "error is:" + e.backtrace.to_s) #send_data(EOT) end end