123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- /**
- * 修改自https://github.com/song940/node-escpos/blob/master/commands.js
- * ESC/POS _ (Constants)
- */
- const encode = require('./encoding');
- var _ = {
- LF: [0x0a],
- FS: [0x1c],
- FF: [0x0c],
- GS: [0x1d],
- DLE: [0x10],
- EOT: [0x04],
- NUL: [0x00],
- ESC: [0x1b],
- EOL: '\n',
- };
- /**
- * [FEED_CONTROL_SEQUENCES Feed control sequences]
- * @type {Object}
- */
- _.FEED_CONTROL_SEQUENCES = {
- CTL_LF: [0x0a], // Print and line feed
- CTL_GLF: [0x4a, 0x00], // Print and feed paper (without spaces between lines)
- CTL_FF: [0x0c], // Form feed
- CTL_CR: [0x0d], // Carriage return
- CTL_HT: [0x09], // Horizontal tab
- CTL_VT: [0x0b], // Vertical tab
- };
- _.CHARACTER_SPACING = {
- CS_DEFAULT: [0x1b, 0x20, 0x00],
- CS_SET: [0x1b, 0x20]
- };
- _.LINE_SPACING = {
- LS_DEFAULT: [0x1b, 0x32],
- LS_SET: [0x1b, 0x33],
- LS_ZERO: [0x1b, 0x00]
- };
- /**
- * [HARDWARE Printer hardware]
- * @type {Object}
- */
- _.HARDWARE = {
- HW_INIT: [0x1b, 0x40], // Clear data in buffer and reset modes
- HW_SELECT: [0x1b, 0x3d, 0x01], // Printer select
- HW_RESET: [0x1b, 0x3f, 0x0a, 0x00], // Reset printer hardware
- };
- /**
- * [CASH_DRAWER Cash Drawer]
- * @type {Object}
- */
- _.CASH_DRAWER = {
- CD_KICK_2: [0x1b, 0x70, 0x00], // Sends a pulse to pin 2 []
- CD_KICK_5: [0x1b, 0x70, 0x01], // Sends a pulse to pin 5 []
- };
- /**
- * [MARGINS Margins sizes]
- * @type {Object}
- */
- _.MARGINS = {
- BOTTOM: [0x1b, 0x4f], // Fix bottom size
- LEFT: [0x1b, 0x6c], // Fix left size
- RIGHT: [0x1b, 0x51], // Fix right size
- };
- /**
- * [PAPER Paper]
- * @type {Object}
- */
- _.PAPER = {
- PAPER_FULL_CUT: [0x1d, 0x56, 0x00], // Full cut paper
- PAPER_PART_CUT: [0x1d, 0x56, 0x01], // Partial cut paper
- PAPER_CUT_A: [0x1d, 0x56, 0x41], // Partial cut paper
- PAPER_CUT_B: [0x1d, 0x56, 0x42], // Partial cut paper
- };
- /**
- * [TEXT_FORMAT Text format]
- * @type {Object}
- */
- _.TEXT_FORMAT = {
- TXT_NORMAL: [0x1b, 0x21, 0x00], // Normal text
- TXT_2HEIGHT: [0x1b, 0x21, 0x10], // Double height text
- TXT_2WIDTH: [0x1b, 0x21, 0x20], // Double width text
- TXT_4SQUARE: [0x1b, 0x21, 0x30], // Double width & height text
- TXT_UNDERL_OFF: [0x1b, 0x2d, 0x00], // Underline font OFF
- TXT_UNDERL_ON: [0x1b, 0x2d, 0x01], // Underline font 1-dot ON
- TXT_UNDERL2_ON: [0x1b, 0x2d, 0x02], // Underline font 2-dot ON
- TXT_BOLD_OFF: [0x1b, 0x45, 0x00], // Bold font OFF
- TXT_BOLD_ON: [0x1b, 0x45, 0x01], // Bold font ON
- TXT_ITALIC_OFF: [0x1b, 0x35], // Italic font ON
- TXT_ITALIC_ON: [0x1b, 0x34], // Italic font ON
- TXT_FONT_A: [0x1b, 0x4d, 0x00], // Font type A
- TXT_FONT_B: [0x1b, 0x4d, 0x01], // Font type B
- TXT_FONT_C: [0x1b, 0x4d, 0x02], // Font type C
- TXT_ALIGN_LT: [0x1b, 0x61, 0x00], // Left justification
- TXT_ALIGN_CT: [0x1b, 0x61, 0x01], // Centering
- TXT_ALIGN_RT: [0x1b, 0x61, 0x02], // Right justification
- };
- /**
- * [BARCODE_FORMAT Barcode format]
- * @type {Object}
- */
- _.BARCODE_FORMAT = {
- BARCODE_TXT_OFF: [0x1d, 0x48, 0x00], // HRI barcode chars OFF
- BARCODE_TXT_ABV: [0x1d, 0x48, 0x01], // HRI barcode chars above
- BARCODE_TXT_BLW: [0x1d, 0x48, 0x02], // HRI barcode chars below
- BARCODE_TXT_BTH: [0x1d, 0x48, 0x03], // HRI barcode chars both above and below
- BARCODE_FONT_A: [0x1d, 0x66, 0x00], // Font type A for HRI barcode chars
- BARCODE_FONT_B: [0x1d, 0x66, 0x01], // Font type B for HRI barcode chars
- BARCODE_HEIGHT: function(height) { // Barcode Height [1-255]
- return [0x1d, 0x68, height];
- },
- BARCODE_WIDTH: function(width) { // Barcode Width [2-6]
- return [0x1d, 0x77, width];
- },
- BARCODE_HEIGHT_DEFAULT: [0x1d, 0x68, 0x64], // Barcode height default:100
- BARCODE_WIDTH_DEFAULT: [0x1d, 0x77, 0x01], // Barcode width default:1
- BARCODE_UPC_A: [0x1d, 0x6b, 0x00], // Barcode type UPC-A
- BARCODE_UPC_E: [0x1d, 0x6b, 0x01], // Barcode type UPC-E
- BARCODE_EAN13: [0x1d, 0x6b, 0x02], // Barcode type EAN13
- BARCODE_EAN8: [0x1d, 0x6b, 0x03], // Barcode type EAN8
- BARCODE_CODE39: [0x1d, 0x6b, 0x04], // Barcode type CODE39
- BARCODE_ITF: [0x1d, 0x6b, 0x05], // Barcode type ITF
- BARCODE_NW7: [0x1d, 0x6b, 0x06], // Barcode type NW7
- BARCODE_CODE93: [0x1d, 0x6b, 0x48], // Barcode type CODE93
- BARCODE_CODE128: [0x1d, 0x6b, 0x49], // Barcode type CODE128
- };
- /**
- * [QRCODE_FORMAT qrcode format二维码]
- * @type {Object}
- */
- _.QRCODE_FORMAT = {
- QRCODE_SIZE: function(n) { // 设置二维码大小
- let data = [29, 40, 107, 3, 0, 49, 67]
- if (n > 15) {
- n = 15
- }
- if (n < 1) {
- n = 1
- }
- data.push(n)
- return data;
- },
- QRCODE_ERROR: function(n) { // 设置纠错等级
- /*
- n 功能 纠错能力
- 48 选择纠错等级 L 7
- 49 选择纠错等级 M 15
- 50 选择纠错等级 Q 25
- 51 选择纠错等级 H 30
- */
- let data = [29, 40, 107, 3, 0, 49, 69]
- data.push(n)
- return data;
- },
- QRCODE_DATA: function(content) { // 设置二维码内容
- let data = [29, 40, 107]
- var code = new encode.TextEncoder(
- 'gb18030', {
- NONSTANDARD_allowLegacyEncoding: true
- }).encode(content)
- data.push(parseInt((code.length + 3) % 256))
- data.push(parseInt((code.length + 3) / 256))
- data.push(49)
- data.push(80)
- data.push(48)
- for (var i = 0; i < code.length; ++i) {
- data.push(code[i])
- }
- return data;
- },
- QRCODE_PRINT: [29, 40, 107, 3, 0, 49, 81, 48], // 打印二维码
- };
- /**
- * [IMAGE_FORMAT Image format]
- * @type {Object}
- */
- _.IMAGE_FORMAT = {
- S_RASTER_N: [0x1d, 0x76, 0x30, 0x00], // Set raster image normal size
- S_RASTER_2W: [0x1d, 0x76, 0x30, 0x01], // Set raster image double width
- S_RASTER_2H: [0x1d, 0x76, 0x30, 0x02], // Set raster image double height
- S_RASTER_Q: [0x1d, 0x76, 0x30, 0x03], // Set raster image quadruple
- };
- /**
- * [BITMAP_FORMAT description]
- * @type {Object}
- */
- _.BITMAP_FORMAT = {
- BITMAP_S8: [0x1b, 0x2a, 0x00],
- BITMAP_D8: [0x1b, 0x2a, 0x01],
- BITMAP_S24: [0x1b, 0x2a, 0x20],
- BITMAP_D24: [0x1b, 0x2a, 0x21]
- };
- /**
- * [GSV0_FORMAT description]
- * @type {Object}
- */
- _.GSV0_FORMAT = {
- GSV0_NORMAL: [0x1d, 0x76, 0x30, 0x00],
- GSV0_DW: [0x1d, 0x76, 0x30, 0x01],
- GSV0_DH: [0x1d, 0x76, 0x30, 0x02],
- GSV0_DWDH: [0x1d, 0x76, 0x30, 0x03]
- };
- /**
- * [BEEP description]
- * @type {string}
- */
- _.BEEP = [0x1b, 0x42]; // Printer Buzzer pre hex
- /**
- * [COLOR description]
- * @type {Object}
- */
- _.COLOR = {
- 0: [0x1b, 0x72, 0x00], // black
- 1: [0x1b, 0x72, 0x01] // red
- };
- /**
- * [exports description]
- * @type {[type]}
- */
- module.exports = _;
|