tsc.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. var gpTSC = {
  2. createNew: function () {
  3. var jpPrinter = {};
  4. var data = "";
  5. var command = []
  6. jpPrinter.name = "标签模式";
  7. jpPrinter.init = function () { };
  8. jpPrinter.addCommand = function (content) { //将指令转成数组装起
  9. let printData = encodeToGb2312(content)
  10. let code = gpTool.hexStringToByteArray(printData)
  11. for (var i = 0; i < code.length; ++i) {
  12. command.push(code[i])
  13. }
  14. }
  15. /*
  16. * 设置标签大小
  17. * pageWidght 标签宽度(单位毫米)
  18. * pageHeight 标签高度(单位毫米)
  19. */
  20. jpPrinter.setSize = function (pageWidght, pageHeight) {
  21. data = "SIZE " + pageWidght.toString() + " mm" + "," + pageHeight.toString() + " mm" + "\r\n";
  22. jpPrinter.addCommand(data)
  23. };
  24. /*
  25. * 设置打印速度
  26. * printSpeed 速度值(范围1-6)
  27. */
  28. jpPrinter.setSpeed = function (printSpeed) {
  29. data = "SPEED " + printSpeed.toString() + "\r\n";
  30. jpPrinter.addCommand(data)
  31. };
  32. jpPrinter.setDensity = function (printDensity) { //设置打印机浓度
  33. data = "DENSITY " + printDensity.toString() + "\r\n";
  34. jpPrinter.addCommand(data)
  35. };
  36. jpPrinter.setGap = function (printGap) { //传感器
  37. data = "GAP " + printGap.toString() + " mm\r\n";
  38. jpPrinter.addCommand(data)
  39. };
  40. jpPrinter.setCountry = function (country) { //选择国际字符集
  41. /*
  42. 001:USA
  43. 002:French
  44. 003:Latin America
  45. 034:Spanish
  46. 039:Italian
  47. 044:United Kingdom
  48. 046:Swedish
  49. 047:Norwegian
  50. 049:German
  51. */
  52. data = "COUNTRY " + country + "\r\n";
  53. jpPrinter.addCommand(data)
  54. };
  55. jpPrinter.setCodepage = function (codepage) { //选择国际代码页
  56. /*
  57. 8-bit codepage 字符集代表
  58. 437:United States
  59. 850:Multilingual
  60. 852:Slavic
  61. 860:Portuguese
  62. 863:Canadian/French
  63. 865:Nordic
  64. Windows code page
  65. 1250:Central Europe
  66. 1252:Latin I
  67. 1253:Greek
  68. 1254:Turkish
  69. 以下代码页仅限于 12×24 dot 英数字体
  70. WestEurope:WestEurope
  71. Greek:Greek
  72. Hebrew:Hebrew
  73. EastEurope:EastEurope
  74. Iran:Iran
  75. IranII:IranII
  76. Latvian:Latvian
  77. Arabic:Arabic
  78. Vietnam:Vietnam
  79. Uygur:Uygur
  80. Thai:Thai
  81. 1252:Latin I
  82. 1257:WPC1257
  83. 1251:WPC1251
  84. 866:Cyrillic
  85. 858:PC858
  86. 747:PC747
  87. 864:PC864
  88. 1001:PC100
  89. */
  90. data = "CODEPAGE " + codepage + "\r\n";
  91. jpPrinter.addCommand(data)
  92. }
  93. jpPrinter.setCls = function () { //清除打印机缓存
  94. data = "CLS" + "\r\n";
  95. jpPrinter.addCommand(data)
  96. };
  97. jpPrinter.setFeed = function (feed) { //将纸向前推出n
  98. data = "FEED " + feed + "\r\n";
  99. jpPrinter.addCommand(data)
  100. };
  101. jpPrinter.setBackFeed = function (backup) { //将纸向后回拉n
  102. data = "BACKFEED " + backup + "\r\n";
  103. jpPrinter.addCommand(data)
  104. }
  105. jpPrinter.setDirection = function (direction) { //设置打印方向,参考编程手册
  106. data = "DIRECTION " + direction + "\r\n";
  107. jpPrinter.addCommand(data)
  108. };
  109. jpPrinter.setReference = function (x, y) { //设置坐标原点,与打印方向有关
  110. data = "REFERENCE " + x + "," + y + "\r\n";
  111. jpPrinter.addCommand(data)
  112. };
  113. jpPrinter.setFromfeed = function () { //根据Size进一张标签纸
  114. data = "FORMFEED \r\n";
  115. jpPrinter.addCommand(data)
  116. };
  117. jpPrinter.setHome = function () { //根据Size找到下一张标签纸的位置
  118. data = "HOME \r\n";
  119. jpPrinter.addCommand(data)
  120. };
  121. jpPrinter.setSound = function (level, interval) { //控制蜂鸣器
  122. data = "SOUND " + level + "," + interval + "\r\n";
  123. jpPrinter.addCommand(data)
  124. };
  125. jpPrinter.setLimitfeed = function (limit) { // 检测垂直间距
  126. data = "LIMITFEED " + limit + "\r\n";
  127. jpPrinter.addCommand(data)
  128. };
  129. jpPrinter.setBar = function (x, y, width, height) { //绘制线条
  130. data = "BAR " + x + "," + y + "," + width + "," + height + "\r\n"
  131. jpPrinter.addCommand(data)
  132. };
  133. jpPrinter.setBox = function (x_start, y_start, x_end, y_end, thickness) { //绘制方框
  134. data = "BOX " + x_start + "," + y_start + "," + x_end + "," + y_end + "," + thickness + "\r\n";
  135. jpPrinter.addCommand(data)
  136. };
  137. jpPrinter.setErase = function (x_start, y_start, x_width, y_height) { //清除指定区域的数据
  138. data = "ERASE " + x_start + "," + y_start + "," + x_width + "," + y_height + "\r\n";
  139. jpPrinter.addCommand(data)
  140. };
  141. jpPrinter.setReverse = function (x_start, y_start, x_width, y_height) { //将指定的区域反相打印
  142. data = "REVERSE " + x_start + "," + y_start + "," + x_width + "," + y_height + "\r\n";
  143. jpPrinter.addCommand(data)
  144. };
  145. jpPrinter.setText = function (x, y, font, x_, y_, str) { //打印文字
  146. data = "TEXT " + x + "," + y + ",\"" + font + "\"," + 0 + "," + x_ + "," + y_ + "," + "\"" + str + "\"\r\n"
  147. jpPrinter.addCommand(data)
  148. };
  149. jpPrinter.setQR = function (x, y, level, width, mode, content) { //打印二维码
  150. data = "QRCODE " + x + "," + y + "," + level + "," + width + "," + mode + "," + 0 + ",\"" + content + "\"\r\n"
  151. jpPrinter.addCommand(data)
  152. };
  153. jpPrinter.setBar = function (x, y, codetype, height, readable, narrow, wide, content) { //打印条形码
  154. data = "BARCODE " + x + "," + y + ",\"" + codetype + "\"," + height + "," + readable + "," + 0 + "," + narrow + "," + wide + ",\"" + content + "\"\r\n"
  155. jpPrinter.addCommand(data)
  156. };
  157. jpPrinter.setBitmap = function (x, y, mode, res) { //添加图片,res为画布参数
  158. console.log(res)
  159. var width = parseInt((res.width + 7) / 8 * 8 / 8)
  160. var height = res.height;
  161. var time = 1;
  162. var temp = res.data.length - width * 32;
  163. var pointList = []
  164. console.log(width + "--" + height)
  165. data = "BITMAP " + x + "," + y + "," + width + "," + height + "," + mode + ","
  166. jpPrinter.addCommand(data)
  167. for (var i = 0; i < height; ++i) {
  168. console.log(temp)
  169. for (var j = 0; j < width; ++j) {
  170. for (var k = 0; k < 32; k += 4) {
  171. if (res.data[temp] == 0 && res.data[temp + 1] == 0 && res.data[temp + 2] == 0 && res.data[temp + 3] == 0) {
  172. pointList.push(1)
  173. } else {
  174. pointList.push(0)
  175. }
  176. temp += 4
  177. }
  178. }
  179. time++
  180. temp = res.data.length - width * 32 * time
  181. }
  182. for (var i = 0; i < pointList.length; i += 8) {
  183. 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]
  184. command.push(p)
  185. }
  186. }
  187. jpPrinter.setPagePrint = function () { //打印页面
  188. data = "PRINT 1,1\r\n"
  189. jpPrinter.addCommand(data)
  190. };
  191. //获取打印数据
  192. jpPrinter.getData = function () {
  193. return command;
  194. };
  195. return jpPrinter;
  196. }
  197. };