Sha256: c627a9cfd279d4cc8f0fbc6de4a1597bf48498840049cad57e70ecec93df5818

Contents?: true

Size: 1.74 KB

Versions: 1

Compression:

Stored size: 1.74 KB

Contents

module Extface
  module Driver::Epson::Fiscal
    STX = 0x02
    ETX = 0x03
    SEP = 0x1c
    DC2 = 0x12
    DC4 = 0x14
    NAK = 0x15
    
    module Control
      STATUS_IF             = 0x38
      X_Z_REPORTS           = 0x39
      FISC_MEM_REPORT_DATE  = 0x3a
      FISC_MEM_REPORT       = 0x3b
    end
    module Vouchers
      OPEN_FISCAL_VOUCHER   = 0x40
      PRINT_FISCAL_TEXT     = 0x41
      PRINT_FISCAL_ARTICLE  = 0x42
      SUBTOTAL_FISCAL       = 0x43
      FISCAL_VOUCHER        = 0x44  # pay / cancel / discount in
      CLOSE_FISCAL_VOUCHER  = 0x45
    end
    module NonFiscal
      OPEN_NON_FISCAL_DOC   = 0x48
      PRINT_NON_FISCAL_TEXT = 0x49
      CLOSE_NON_FISCAL_DOC  = 0x4a
    end
    module Printer
      CUT_PAPER         = 0x4b
      ADVANCE_PAPER     = 0x50
      ACTIVATE_SLIP     = 0xa0 #TMU950, TMU675
      DISABLE_SLIP      = 0xa1
      FORMAT_CHECKS     = 0xaa
      FORMAT_ENDOSEMENT = 0xab
    end
    module General
      SET_DATE_HOUR   = 0x58
      GET_DATE_HOUR   = 0x59
      HEADED          = 0x5d
      FOOT_OF_PAGE    = 0x5e
      OPEN_DRAWER_1   = 0x7b
      OPEN_DRAWER_2   = 0x7c
    end

    def build_packet(cmd, fields = [])
      String.new.tap() do |frame|
        frame << STX
        frame << sequence_number
        frame << cmd
        fields.each do |field|
          frame << SEP
          frame << field
        end
        frame << ETX
        frame << bcc(frame)
      end
    end
    
    private
      def bcc(buffer)
        sum = 0
        buffer.each_byte do |b|
          sum += b
        end
        sum.to_s(16).rjust(4, '0')
      end
      
      def sequence_number(increment = true)
        @seq ||= 0x20
        @seq += 1 if increment
        @seq = 0x20 if @seq == 0x7f
        @seq
      end 
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
extface-0.1.8 app/models/extface/driver/epson/fiscal.rb