Merge remote-tracking branch 'faulab/fix-pc1252'

This commit is contained in:
Christoph Heuel 2015-12-12 16:43:27 +01:00
commit 577de10cb4
6 changed files with 25 additions and 67 deletions

View File

@ -26,12 +26,18 @@ CHANGELOG
* 2015-04-21 - Version 1.0.5 * 2015-04-21 - Version 1.0.5
- Merge pull request #45 from Krispy2009/master - Merge pull request #45 from Krispy2009/master
. Raising the right error when wrong charcode is used . Raising the right error when wrong charcode is used
. Sent by Krispy2009@gmail.com . Sent by Kristi <Krispy2009@gmail.com>
* 2015-07-06 - Version 1.0.6 * 2015-07-06 - Version 1.0.6
- Merge pull request #53 from ldos/master - Merge pull request #53 from ldos/master
. Extended params for serial printers . Extended params for serial printers
. Sent by cafeteria.ldosalzira@gmail.com . Sent by ldos <cafeteria.ldosalzira@gmail.com>
* 2015-08-22 - Version 1.0.7 * 2015-08-22 - Version 1.0.7
- Issue #57: Fixed transparent images - Issue #57: Fixed transparent images
* 2015-10-27 - Version 1.0.8
- Merge pull request #59 from zouppen/master
. Support for images vertically longer than 256 pixels
. Sent by Joel Lehtonen <joel.lehtonen@koodilehto.fi>
- Updated README

62
README
View File

@ -4,16 +4,7 @@ ESCPOS
Python library to manipulate ESC/POS Printers. Python library to manipulate ESC/POS Printers.
------------------------------------------------------------------ ------------------------------------------------------------------
1. Dependencies 1. Description
In order to start getting access to your printer, you must ensure
you have previously installed the following python modules:
* pyusb (python-usb)
* PIL (Python Image Library)
------------------------------------------------------------------
2. Description
Python ESC/POS is a library which lets the user have access to all Python ESC/POS is a library which lets the user have access to all
those printers handled by ESC/POS commands, as defined by Epson, those printers handled by ESC/POS commands, as defined by Epson,
@ -33,60 +24,13 @@ paper, carrier return, printer reset and others concerned to the
carriage alignment. carriage alignment.
------------------------------------------------------------------ ------------------------------------------------------------------
3. Define your printer 2. Documentation
Before start create your Python ESC/POS printer instance, you must
see at your system for the printer parameters. This is done with
the 'lsusb' command.
First run the command to look for the "Vendor ID" and "Product ID",
then write down the values, these values are displayed just before
the name of the device with the following format:
xxxx:xxxx
Example:
Bus 002 Device 001: ID 1a2b:1a2b Device name
Write down the the values in question, then issue the following
command so you can get the "Interface" number and "End Point"
lsusb -vvv -d xxxx:xxxx | grep iInterface
lsusb -vvv -d xxxx:xxxx | grep bEndpointAddress | grep OUT
The first command will yields the "Interface" number that must
be handy to have and the second yields the "Output Endpoint"
address.
By default the "Interface" number is "0" and the "Output Endpoint"
address is "0x82", if you have other values then you can define
with your instance.
------------------------------------------------------------------
4. Define your instance
The following example shows how to initialize the Epson TM-TI88IV
*** NOTE: Always finish the sequence with Epson.cut() otherwise
you will endup with weird chars being printed.
from escpos import *
""" Seiko Epson Corp. Receipt Printer M129 Definitions (EPSON TM-T88IV) """
Epson = escpos.Escpos(0x04b8,0x0202)
Epson.text("Hello World")
Epson.image("logo.gif")
Epson.barcode
Epson.barcode('1324354657687','EAN13',64,2,'','')
Epson.cut()
------------------------------------------------------------------
5. Links
Please visit project documentation at: Please visit project documentation at:
https://github.com/manpaz/python-escpos/wiki https://github.com/manpaz/python-escpos/wiki
------------------------------------------------------------------ ------------------------------------------------------------------
6. Donations 3. Donations
There are some different prints I'd like to acquire, but unfortunately There are some different prints I'd like to acquire, but unfortunately
not all, even used, are cheaper and easy to get. not all, even used, are cheaper and easy to get.

View File

@ -42,7 +42,7 @@ CHARCODE_PC865 = '\x1b\x74\x05' # Nordic
CHARCODE_WEU = '\x1b\x74\x06' # Simplified Kanji, Hirakana CHARCODE_WEU = '\x1b\x74\x06' # Simplified Kanji, Hirakana
CHARCODE_GREEK = '\x1b\x74\x07' # Simplified Kanji CHARCODE_GREEK = '\x1b\x74\x07' # Simplified Kanji
CHARCODE_HEBREW = '\x1b\x74\x08' # Simplified Kanji CHARCODE_HEBREW = '\x1b\x74\x08' # Simplified Kanji
CHARCODE_PC1252 = '\x1b\x74\x11' # Western European Windows Code Set CHARCODE_PC1252 = '\x1b\x74\x10' # Western European Windows Code Set
CHARCODE_PC866 = '\x1b\x74\x12' # Cirillic #2 CHARCODE_PC866 = '\x1b\x74\x12' # Cirillic #2
CHARCODE_PC852 = '\x1b\x74\x13' # Latin 2 CHARCODE_PC852 = '\x1b\x74\x13' # Latin 2
CHARCODE_PC858 = '\x1b\x74\x14' # Euro CHARCODE_PC858 = '\x1b\x74\x14' # Euro

View File

@ -45,7 +45,7 @@ class Escpos:
buffer = "" buffer = ""
self._raw(S_RASTER_N) self._raw(S_RASTER_N)
buffer = "%02X%02X%02X%02X" % (((size[0]/size[1])/8), 0, size[1], 0) buffer = "%02X%02X%02X%02X" % (((size[0]/size[1])/8), 0, size[1]&0xff, size[1]>>8)
self._raw(binascii.unhexlify(buffer)) self._raw(binascii.unhexlify(buffer))
buffer = "" buffer = ""
@ -72,7 +72,7 @@ class Escpos:
if im.size[0] > 512: if im.size[0] > 512:
print ("WARNING: Image is wider than 512 and could be truncated at print time ") print ("WARNING: Image is wider than 512 and could be truncated at print time ")
if im.size[1] > 255: if im.size[1] > 0xffff:
raise ImageSizeError() raise ImageSizeError()
im_border = self._check_image_size(im.size[0]) im_border = self._check_image_size(im.size[0])

View File

@ -41,11 +41,19 @@ class Usb(Escpos):
if self.device is None: if self.device is None:
print("Cable isn't plugged in") print("Cable isn't plugged in")
if self.device.is_kernel_driver_active(0): check_driver = None
try:
check_driver = self.device.is_kernel_driver_active(0)
except NotImplementedError:
pass
if check_driver is None or check_driver:
try: try:
self.device.detach_kernel_driver(0) self.device.detach_kernel_driver(0)
except usb.core.USBError as e: except usb.core.USBError as e:
print("Could not detatch kernel driver: %s" % str(e)) if check_driver is not None:
print("Could not detatch kernel driver: %s" % str(e))
try: try:
self.device.set_configuration() self.device.set_configuration()

View File

@ -4,7 +4,7 @@ from distutils.core import setup
setup( setup(
name='escpos', name='escpos',
version='1.0.7', version='1.0.8',
url='https://github.com/manpaz/python-escpos', url='https://github.com/manpaz/python-escpos',
download_url='https://github.com/manpaz/python-escpos.git', download_url='https://github.com/manpaz/python-escpos.git',
description='Python library to manipulate ESC/POS Printers', description='Python library to manipulate ESC/POS Printers',