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