Source code for FabLabKasse.libs.escpos.printer

#!/usr/bin/python
'''
@author: Manuel F Martinez <manpaz@bashlinux.com>
@organization: Bashlinux
@copyright: Copyright (c) 2012 Bashlinux
@license: GPL
'''

# import usb.core
# import usb.util
# import serial
import socket

from escpos import *
from constants import *
from exceptions import *

# class Usb(Escpos):
#    """ Define USB printer """
#
#    def __init__(self, idVendor, idProduct, interface=0, in_ep=0x82, out_ep=0x01):
#        """
#        @param idVendor  : Vendor ID
#        @param idProduct : Product ID
#        @param interface : USB device interface
#        @param in_ep     : Input end point
#        @param out_ep    : Output end point
#        """
#        self.idVendor  = idVendor
#        self.idProduct = idProduct
#        self.interface = interface
#        self.in_ep     = in_ep
#        self.out_ep    = out_ep
#	self.open()
#
#
#    def open(self):
#        """ Search device on USB tree and set is as escpos device """
#        self.device = usb.core.find(idVendor=self.idVendor, idProduct=self.idProduct)
#        if self.device is None:
#            print "Cable isn't plugged in"
#
#        if self.device.is_kernel_driver_active(0):
#            try:
#                self.device.detach_kernel_driver(0)
#            except usb.core.USBError as e:
#                print "Could not detatch kernel driver: %s" % str(e)
#
#        try:
#            self.device.set_configuration()
#            self.device.reset()
#        except usb.core.USBError as e:
#            print "Could not set configuration: %s" % str(e)
#
#
#    def _raw(self, msg):
#        """ Print any command sent in raw format """
#        self.device.write(self.out_ep, msg, self.interface)
#
#
#    def __del__(self):
#        """ Release USB interface """
#        if self.device:
#            usb.util.dispose_resources(self.device)
#        self.device = None
#


# class Serial(Escpos):
#    """ Define Serial printer """
#
#    def __init__(self, devfile="/dev/ttyS0", baudrate=9600, bytesize=8, timeout=1):
#        """
#        @param devfile  : Device file under dev filesystem
#        @param baudrate : Baud rate for serial transmission
#        @param bytesize : Serial buffer size
#        @param timeout  : Read/Write timeout
#        """
#        self.devfile  = devfile
#        self.baudrate = baudrate
#        self.bytesize = bytesize
#        self.timeout  = timeout
#        self.open()
#
#
#    def open(self):
#        """ Setup serial port and set is as escpos device """
#        self.device = serial.Serial(port=self.devfile, baudrate=self.baudrate, bytesize=self.bytesize, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, timeout=self.timeout, dsrdtr=True)
#
#        if self.device is not None:
#            print "Serial printer enabled"
#        else:
#            print "Unable to open serial printer on: %s" % self.devfile
#
#
#    def _raw(self, msg):
#        """ Print any command sent in raw format """
#        self.device.write(msg)
#
#
#    def __del__(self):
#        """ Close Serial interface """
#        if self.device is not None:
#            self.device.close()
#


[docs]class Network(Escpos): """ Define Network printer """ def __init__(self, host, port=9100): """ @param host : Printer's hostname or IP address @param port : Port to write to """ self.host = host self.port = port self.open()
[docs] def open(self): """ Open TCP socket and set it as escpos device """ self.device = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.device.connect((self.host, self.port)) if self.device is None: print "Could not open socket for %s" % self.host
def _raw(self, msg): """ Print any command sent in raw format """ self.device.send(msg) def __del__(self): """ Close TCP connection """ self.device.close()
[docs]class File(Escpos): """ Define Generic file printer """ def __init__(self, devfile="/dev/usb/lp0"): """ @param devfile : Device file under dev filesystem """ self.devfile = devfile self.open()
[docs] def open(self): """ Open system file """ self.device = open(self.devfile, "wb") if self.device is None: print "Could not open the specified file %s" % self.devfile
def _raw(self, msg): """ Print any command sent in raw format """ self.device.write(msg) def __del__(self): """ Close system file """ self.device.close()