class Simatic::Types::S7String

Public Class Methods

new(value, size = nil) click to toggle source
# File lib/simatic/types/s7_string.rb, line 6
def initialize value, size = nil
  @size = size
  @value = value
end
parse_one(raw_value) click to toggle source
# File lib/simatic/types/s7_string.rb, line 25
def self.parse_one raw_value
  res = raw_value.unpack('CCa*')

  buf_size = res[0]
  string_size = res[1]
  string = res[2]

  raise "S7String is broken, cant parse" if buf_size.nil? || string_size.nil? || string.nil? || buf_size < string_size

  string[0, string_size]
end
serialize(value, size) click to toggle source
# File lib/simatic/types/s7_string.rb, line 11
def self.serialize value, size
  raise "Value must be String class" unless value.kind_of? String
  size = size || value.length
  [size, value.length, value].pack("CCa#{size}x")
end

Public Instance Methods

serialize() click to toggle source
# File lib/simatic/types/s7_string.rb, line 17
def serialize
  if @value.kind_of? Array
    @value.map { |single_val| self.class.serialize single_val, @size }
  else
    self.class.serialize @value, @size
  end
end