123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 |
- var app = getApp();
- var encode = require("./encoding.js");
- var jpPrinter = {
- createNew: function() {
- var jpPrinter = {};
- var data = "";
- var command = []
- jpPrinter.name = "蓝牙打印机";
- jpPrinter.init = function() {};
- jpPrinter.addCommand = function(content) {
- var code = new encode.TextEncoder(
- 'gb18030', {
- NONSTANDARD_allowLegacyEncoding: true
- }).encode(content)
- for (var i = 0; i < code.length; ++i) {
- command.push(code[i])
- }
- }
- jpPrinter.setSize = function(pageWidght, pageHeight) {
- data = "SIZE " + pageWidght.toString() + " mm" + "," + pageHeight.toString() + " mm" + "\r\n";
- jpPrinter.addCommand(data)
- };
- jpPrinter.setSpeed = function(printSpeed) {
- data = "SPEED " + printSpeed.toString() + "\r\n";
- jpPrinter.addCommand(data)
- };
- jpPrinter.setDensity = function(printDensity) {
- data = "DENSITY " + printDensity.toString() + "\r\n";
- jpPrinter.addCommand(data)
- };
- jpPrinter.setGap = function(printGap) {
- data = "GAP " + printGap.toString() + " mm,0 mm\r\n";
- jpPrinter.addCommand(data)
- };
- jpPrinter.setBline = function(printBline) {
- data = "BLINE " + printBline.toString() + " mm,0 mm\r\n";
- jpPrinter.addCommand(data)
- };
- jpPrinter.setCountry = function(country) {
-
- data = "COUNTRY " + country + "\r\n";
- jpPrinter.addCommand(data)
- };
- jpPrinter.setCodepage = function(codepage) {
-
- data = "CODEPAGE " + codepage + "\r\n";
- jpPrinter.addCommand(data)
- }
- jpPrinter.setCls = function() {
- data = "CLS\r\n";
- jpPrinter.addCommand(data)
- };
- jpPrinter.setFeed = function(feed) {
- data = "FEED " + feed + "\r\n";
- jpPrinter.addCommand(data)
- };
- jpPrinter.setBackFeed = function(backup) {
- data = "BACKFEED " + backup + "\r\n";
- jpPrinter.addCommand(data)
- }
- jpPrinter.setDirection = function(direction) {
- data = "DIRECTION " + direction + "\r\n";
- jpPrinter.addCommand(data)
- };
- jpPrinter.setReference = function(x, y) {
- data = "REFERENCE " + x + "," + y + "\r\n";
- jpPrinter.addCommand(data)
- };
- jpPrinter.setFromfeed = function() {
- data = "FORMFEED\r\n";
- jpPrinter.addCommand(data)
- };
- jpPrinter.setHome = function() {
- data = "HOME\r\n";
- jpPrinter.addCommand(data)
- };
- jpPrinter.setSound = function(level, interval) {
- data = "SOUND " + level + "," + interval + "\r\n";
- jpPrinter.addCommand(data)
- };
- jpPrinter.setLimitfeed = function(limit) {
- data = "LIMITFEED " + limit + "\r\n";
- jpPrinter.addCommand(data)
- };
- jpPrinter.setBar = function(x, y, width, height) {
- data = "BAR " + x + "," + y + "," + width + "," + height + "\r\n"
- jpPrinter.addCommand(data)
- };
- jpPrinter.setBox = function(x_start, y_start, x_end, y_end, thickness) {
- data = "BOX " + x_start + "," + y_start + "," + x_end + "," + y_end + "," + thickness + "\r\n";
- jpPrinter.addCommand(data)
- };
- jpPrinter.setErase = function(x_start, y_start, x_width, y_height) {
- data = "ERASE " + x_start + "," + y_start + "," + x_width + "," + y_height + "\r\n";
- jpPrinter.addCommand(data)
- };
- jpPrinter.setReverse = function(x_start, y_start, x_width, y_height) {
- data = "REVERSE " + x_start + "," + y_start + "," + x_width + "," + y_height + "\r\n";
- jpPrinter.addCommand(data)
- };
- jpPrinter.setText = function(x, y, font, x_, y_, str) {
- data = "TEXT " + x + "," + y + ",\"" + font + "\"," + 0 + "," + x_ + "," + y_ + "," + "\"" + str + "\"\r\n"
- jpPrinter.addCommand(data)
- };
- jpPrinter.setQR = function(x, y, level, width, mode, content) {
- data = "QRCODE " + x + "," + y + "," + level + "," + width + "," + mode + "," + 0 + ",\"" + content + "\"\r\n"
- jpPrinter.addCommand(data)
- };
- jpPrinter.setBarCode = function(x, y, codetype, height, readable, narrow, wide, content) {
- data = "BARCODE " + x + "," + y + ",\"" + codetype + "\"," + height + "," + readable + "," + 0 + "," + narrow + "," + wide + ",\"" + content + "\"\r\n"
- jpPrinter.addCommand(data)
- };
- jpPrinter.setBitmap = function(x, y, mode, res) {
- console.log(res)
- var width = parseInt((res.width + 7) / 8 * 8 / 8)
- var height = res.height;
- var time = 1;
- var temp = res.data.length - width * 32;
- var pointList = []
- var inverted_Data = []
- var correct_Data = []
- console.log(width + "--" + height)
- data = "BITMAP " + x + "," + y + "," + width + "," + height + "," + mode + ","
- jpPrinter.addCommand(data)
- for (var i = 0; i < height; ++i) {
- console.log(temp)
- for (var j = 0; j < width; ++j) {
- for (var k = 0; k < 32; k += 4) {
- if (res.data[temp] == 0 && res.data[temp + 1] == 0 && res.data[temp + 2] == 0 && res.data[temp + 3] == 0) {
- pointList.push(1)
- } else {
- pointList.push(0)
- }
- temp += 4
- }
- }
- time++
- temp = res.data.length - width * 32 * time
- }
- for (var i = 0; i < pointList.length; i += 8) {
- var p = pointList[i] * 128 + pointList[i + 1] * 64 + pointList[i + 2] * 32 + pointList[i + 3] * 16 + pointList[i + 4] * 8 + pointList[i + 5] * 4 + pointList[i + 6] * 2 + pointList[i + 7]
- inverted_Data.push(p)
- correct_Data.push(p)
- }
- for (var i = height; i > 0; i--) {
- for (var j = 0; j < width; ++j) {
- correct_Data[(height - i - 1) * width + j] = inverted_Data[i * width + j]
- }
- }
- for (var i = 0; i < correct_Data.length; ++i) {
- command.push(correct_Data[i])
- }
- }
- jpPrinter.setPagePrint = function() {
- data = "PRINT 1,1\r\n"
- jpPrinter.addCommand(data)
- };
-
- jpPrinter.getData = function() {
- return command;
- };
- return jpPrinter;
- }
- };
- module.exports.jpPrinter = jpPrinter;
|