fix printing of CODE128

The control sequence {A or {B or {C can't be part of the qr code.
For this the user has to supply this sequence.
This commit is contained in:
Patrick Kanzler 2016-08-01 12:24:07 +02:00
parent 7c732ee615
commit 38f9835931
No known key found for this signature in database
GPG Key ID: F07F07153306FCEF
3 changed files with 36 additions and 4 deletions

View File

@ -18,6 +18,7 @@ Content
user/raspi user/raspi
user/todo user/todo
user/usage user/usage
user/barcode
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 1

34
doc/user/barcode.rst Normal file
View File

@ -0,0 +1,34 @@
Printing Barcodes
-----------------
:Last Reviewed: 2016-07-31
Most ESC/POS-printers implement barcode-printing.
The barcode-commandset is implemented in the barcode-method.
For a list of compatible barcodes you should check the manual of your printer.
As a rule of thumb: even older Epson-models support most 1D-barcodes.
To be sure just try some implementations and have a look at the notices below.
barcode-method
~~~~~~~~~~~~~~
The barcode-method is rather low-level and orients itself on the implementation of ESC/POS.
In the future this class could be supplemented by a high-level class that helps the user generating the payload.
.. py:currentmodule:: escpos.escpos
.. automethod:: Escpos.barcode
:noindex:
CODE128
~~~~~~~
Code128 barcodes need a certain format.
For now the user has to make sure that the payload is correct.
For alphanumeric CODE128 you have to preface your payload with `{B`.
.. code-block:: Python
from escpos.printer import Dummy, Serial
p = Serial()
# print CODE128 012ABCDabcd
p.barcode("{B012ABCDabcd", "CODE128", function_type="B")
A very good description on CODE128 is also on `Wikipedia <https://en.wikipedia.org/wiki/Code_128>`_.

View File

@ -168,10 +168,7 @@ BARCODE_TYPE_B = {
'NW7': _SET_BARCODE_TYPE(71), 'NW7': _SET_BARCODE_TYPE(71),
'CODABAR': _SET_BARCODE_TYPE(71), # Same as NW7 'CODABAR': _SET_BARCODE_TYPE(71), # Same as NW7
'CODE93': _SET_BARCODE_TYPE(72), 'CODE93': _SET_BARCODE_TYPE(72),
# These are all the same barcode, but using different charcter sets 'CODE128': _SET_BARCODE_TYPE(73),
'CODE128A': _SET_BARCODE_TYPE(73) + b'{A', # CODE128 character set A
'CODE128B': _SET_BARCODE_TYPE(73) + b'{B', # CODE128 character set B
'CODE128C': _SET_BARCODE_TYPE(73) + b'{C', # CODE128 character set C
'GS1-128': _SET_BARCODE_TYPE(74), 'GS1-128': _SET_BARCODE_TYPE(74),
'GS1 DATABAR OMNIDIRECTIONAL': _SET_BARCODE_TYPE(75), 'GS1 DATABAR OMNIDIRECTIONAL': _SET_BARCODE_TYPE(75),
'GS1 DATABAR TRUNCATED': _SET_BARCODE_TYPE(76), 'GS1 DATABAR TRUNCATED': _SET_BARCODE_TYPE(76),