app/models/extface/driver/star_tsp200.rb in extface-0.1.4 vs app/models/extface/driver/star_tsp200.rb in extface-0.1.5

- old
+ new

@@ -10,7 +10,41 @@ 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