From f26f29d84e0a68831a6af14dab3eec5500496d2e Mon Sep 17 00:00:00 2001 From: spring <2396852758@qq.com> Date: 星期三, 28 五月 2025 16:48:52 +0800 Subject: [PATCH] 初始化项目 --- util/ble/tsc.js | 237 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 237 insertions(+), 0 deletions(-) diff --git a/util/ble/tsc.js b/util/ble/tsc.js new file mode 100644 index 0000000..eea3e67 --- /dev/null +++ b/util/ble/tsc.js @@ -0,0 +1,237 @@ +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) { //閫夋嫨鍥介檯瀛楃闆� + /* + 001:USA + 002:French + 003:Latin America + 034:Spanish + 039:Italian + 044:United Kingdom + 046:Swedish + 047:Norwegian + 049:German + */ + data = "COUNTRY " + country + "\r\n"; + jpPrinter.addCommand(data) + }; + + jpPrinter.setCodepage = function(codepage) { //閫夋嫨鍥介檯浠g爜椤� + /* + 8-bit codepage 瀛楃闆嗕唬琛� + 437:United States + 850:Multilingual + 852:Slavic + 860:Portuguese + 863:Canadian/French + 865:Nordic + Windows code page + 1250:Central Europe + 1252:Latin I + 1253:Greek + 1254:Turkish + 浠ヤ笅浠g爜椤典粎闄愪簬 12脳24 dot 鑻辨暟瀛椾綋 + WestEurope:WestEurope + Greek:Greek + Hebrew:Hebrew + EastEurope:EastEurope + Iran:Iran + IranII:IranII + Latvian:Latvian + Arabic:Arabic + Vietnam:Vietnam + Uygur:Uygur + Thai:Thai + 1252:Latin I + 1257:WPC1257 + 1251:WPC1251 + 866:Cyrillic + 858:PC858 + 747:PC747 + 864:PC864 + 1001:PC100 + */ + data = "CODEPAGE " + codepage + "\r\n"; + jpPrinter.addCommand(data) + } + + jpPrinter.setCls = function() { //娓呴櫎鎵撳嵃鏈虹紦瀛� + data = "CLS\r\n"; + jpPrinter.addCommand(data) + }; + + jpPrinter.setFeed = function(feed) { //灏嗙焊鍚戝墠鎺ㄥ嚭n + data = "FEED " + feed + "\r\n"; + jpPrinter.addCommand(data) + }; + + jpPrinter.setBackFeed = function(backup) { //灏嗙焊鍚戝悗鍥炴媺n + 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() { //鏍规嵁Size杩涗竴寮犳爣绛剧焊 + data = "FORMFEED\r\n"; + jpPrinter.addCommand(data) + }; + + jpPrinter.setHome = function() { //鏍规嵁Size鎵惧埌涓嬩竴寮犳爣绛剧焊鐨勪綅缃� + 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) { //娣诲姞鍥剧墖锛宺es涓虹敾甯冨弬鏁� + 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; \ No newline at end of file -- Gitblit v1.9.3