Sha256: 1872d4dc90ac19d98d407bbe4a8f4d350fc30a528168c764c00eb243c85aada1

Contents?: true

Size: 1.72 KB

Versions: 71

Compression:

Stored size: 1.72 KB

Contents

module Extface
  class Driver::StarTsp200 < Driver::GenericPos
    NAME = 'Star TSP200 (Base Receipt Protocol)'.freeze
    GROUP = Extface::PRINT_DRIVER
    
    DEVELOPMENT = true #driver is not ready for production (not passing all tests or has major bugs)
    
    # Select driver features
    RAW = true  #responds to #push(data) and #pull
    PRINT = true #POS, slip printers
    FISCAL = false #cash registers, fiscal printers
    REPORT = false #only transmit data that must be parsed by handler, CDR, report devices

    has_serial_config
    
    def handle(buffer)
      #expecting only 1 status byte, move it to receive_buffer
      rpush buffer
      return buffer.length # return number of bytes processed
    end
    
    def autocut(partial = true)
      # <ESC> “d” “0” - Full-cut command
      # <ESC> “d” “1” - Partial-cut command
      push "\r\n\r\n\r\n"
      push partial ? "\x1B\x64\x31" : "\x1B\x64\x30"
    end
    
    def check_status
      flush
      push "\x05" # <ENQ>   - Causes the printer to transmit a status byte
      if status = pull(3) #wait 3 sec for data
        human_status_errors(status)
        return errors.empty?
      else
        errors.add :base, "No data received from device"
        return false
      end
    end
    
    def human_status_errors(status_byte)
      errors.add :base, "Vertical parity error" unless (status_byte.ord & 0x01).zero?
      errors.add :base, "Framing error" unless (status_byte.ord & 0x02).zero?
      errors.add :base, "Mechanical error" unless (status_byte.ord & 0x04).zero?
      errors.add :base, "Receipt paper empty" unless (status_byte.ord & 0x08).zero?
      errors.add :base, "Buffer overflow" unless (status_byte.ord & 0x40).zero?
    end

  end
end

Version data entries

71 entries across 71 versions & 1 rubygems

Version Path
extface-0.5.4a app/models/extface/driver/star_tsp200.rb
extface-0.5.4 app/models/extface/driver/star_tsp200.rb
extface-0.5.3 app/models/extface/driver/star_tsp200.rb
extface-0.5.2 app/models/extface/driver/star_tsp200.rb
extface-0.5.1 app/models/extface/driver/star_tsp200.rb
extface-0.5.0 app/models/extface/driver/star_tsp200.rb
extface-0.4.9 app/models/extface/driver/star_tsp200.rb
extface-0.4.8 app/models/extface/driver/star_tsp200.rb
extface-0.4.7 app/models/extface/driver/star_tsp200.rb
extface-0.4.6k app/models/extface/driver/star_tsp200.rb
extface-0.4.6i app/models/extface/driver/star_tsp200.rb
extface-0.4.6h app/models/extface/driver/star_tsp200.rb
extface-0.4.6g app/models/extface/driver/star_tsp200.rb
extface-0.4.6f app/models/extface/driver/star_tsp200.rb
extface-0.4.6e app/models/extface/driver/star_tsp200.rb
extface-0.4.6d app/models/extface/driver/star_tsp200.rb
extface-0.4.6c app/models/extface/driver/star_tsp200.rb
extface-0.4.6b app/models/extface/driver/star_tsp200.rb
extface-0.4.6a app/models/extface/driver/star_tsp200.rb
extface-0.4.6 app/models/extface/driver/star_tsp200.rb