TPrinter操作手册

1.介绍

打印库 `tprinter` 目前支持斑马打印机和TSC打印机。

2.使用指南

2.1 TZplPrinter

2.1.1 ZT410 示例

  • 在C++中调用
    
      TZplPrinter printer;
      QVariantMap connParam {
          {"host", "192.168.2.104"},
          {"port", 4215},
          {"printer_type", "ZT410"}
      };
      printer.setConnectionParam(connParam);
    
      QVariantList pieces;
      pieces.append(QVariantMap{
          {"type", "BAR_CODE"},
          {"width", 30},
          {"height", 30},
          {"x", 5},
          {"y", 5},
          {"value", "ABC-abc-1234"}
      });
      QVariantMap data{
          {"count", 1},
          {"width", 80},
          {"height", 40},
          {"info", pieces}
      };
    
      TError err;
      bool ok = printer.print(data, &err);
      if (!ok) {
          qDebug() << err.text();
      }
    
    
  • 在Qt Script中调用
    
      importPackage("ikm.printer");
    
      var printer = new TZplPrinter;
      printer.setConnectionParam({
          "host": "192.168.2.104",
      "port": 4215,
      "printer_type": "ZT410"
      });
    
      var data = {
      "count": 1, // 打印张数
      "width": 80,
      "height": 40,
      "info": [
          {
          "type": "BAR_CODE",
              "width": 30,
          "height": 30,
          "x": 5,
          "y": 5,
          "value": "ABC-abc-1234"
          }
      ]
      };
    
      var err = new TError;
      var ok = printer.print(data, err);
      if (!ok) {
      print(err.text());
      }
    
    

2.1.2 GT800 示例

  • 在C++中调用
    
      TZplPrinter printer;
      QVariantMap connParam {
          {"lpt", "LPT1"},
          {"printer_type", "GT800"},
          {"connection_type", "LPT"}
      };
      printer.setConnectionParam(connParam);
    
      QVariantList pieces;
      pieces.append(QVariantMap{
          {"type", "BAR_CODE"},
          {"width", 30},
          {"height", 30},
          {"x", 5},
          {"y", 5},
          {"value", "ABC-abc-1234"}
      });
      QVariantMap data{
          {"count", 1},
          {"width", 80},
          {"height", 40},
          {"info", pieces}
      };
    
      TError err;
      bool ok = printer.print(data, &err);
      if (!ok) {
          qDebug() << err.text();
      }
    
    
  • 在Qt Script中调用
    
      importPackage("ikm.printer");
    
      var printer = new TZplPrinter;
      printer.setConnectionParam({
          "lpt": "LPT1",
          "printer_type": "GT800",
          "connection_type": "LPT",
      });
    
      var data = {
      "count": 1, // 打印张数
      "width": 80,
      "height": 40,
      "info": [
          {
          "type": "BAR_CODE",
              "width": 30,
          "height": 30,
          "x": 5,
          "y": 5,
          "value": "ABC-abc-1234"
          }
      ]
      };
    
      var err = new TError;
      var ok = printer.print(data, err);
      if (!ok) {
      print(err.text());
      }
    
    
  • USB打印机映射到LPT端口
    • 第一步:连接打印机并测试
      • 1.使用USB线连接打印机
      • 2.到官网下载GT800型号打印机的驱动并安装
      • 3.打开驱动程序,使用如下方式进行打印测试

        "Example 1"

    • 第二步:在系统中安装一个环路网卡
      • 1.Windows系统,打开运行(Windows + R),输入 hdwwiz 命令添加硬件
      • 2.选择"安装我手动从列表选择的硬件(高级)(M)",点下一步
      • 3.在硬件类型列表框中选择"网络适配器",下一步
      • 4.厂商选择Microsoft,网卡选择"Microsoft Loopback Adapter"(注意:win10上为"Microsoft KM-TEST 环回适配器")
      • 5.下一步完成安装。
    • 第三步:配置第一步中安装的网卡的IP地址
      • 1.修改IPv4的IP地址,例如:192.168.1.110
      • 2.修改子网掩码:255.255.255.0
    • 第四步:共享打印机
      • 1.找到打印机-属性-共享
      • 2.勾选"共享这台打印机",填写共享名,例如:GT800
    • 第五步:映射出刚才共享的打印机到LPT1端口,
      • 1.在命令行端口运行: net use LPT1 \192.168.1.110\GT800 /persistent:yes(注意:\192.168.1.110\GT800 根据前面配置的不同而不同)
      • 2.使用 net use 命令查看,显示如下表示配置成功:

        "Example 2"

2.2 TTscPrinter

2.2.1 示例

  • 在C++中调用
    
      TTscPrinter printer;
      QVariantMap connParam {
          {"host", "192.168.2.104"},
          {"printer_name", "TSC TTP-244 Pro"}
      };
      printer.setConnectionParam(connParam);
    
      QVariantList pieces;
      pieces.append(QVariantMap{
          {"type", "BAR_CODE"},
          {"width", 30},
          {"height", 30},
          {"x", 5},
          {"y", 5},
          {"value", "ABC-abc-1234"}
      });
      QVariantMap data{
          {"count", 1},
          {"width", 80},
          {"height", 40},
          {"info", pieces}
      };
    
      TError err;
      bool ok = printer.print(data, &err);
      if (!ok) {
          qDebug() << err.text();
      }
    
    
  • 在Qt Script中调用
    
      importPackage("ikm.printer");
    
      var printer = new TTscPrinter;
      printer.setConnectionParam({
          "host": "192.168.2.104",
      "printer_name": "TSC TTP-244 Pro"
      });
    
      var data = {
      "count": 1, // 打印张数
      "width": 80,
      "height": 40,
      "info": [
          {
          "type": "BAR_CODE",
              "width": 30,
          "height": 30,
          "x": 5,
          "y": 5,
          "value": "ABC-abc-1234"
          }
      ]
      };
    
      var err = new TError;
      var ok = printer.print(data, err);
      if (!ok) {
      print(err.text());
      }
    
    

2.3 info中的数据结构

目前支持BAR_CODE,QR_CODE,TEXT,PICTURE,LINE。

  • 条形码 BAR_CODE
    
      {
          "type": "BAR_CODE",
          "x": 0,
          "y": 0,
          "width": 60,
          "height": 40,
          "value": "ABC-abc-1234"
      }
    
    
  • 二维码 QR_CODE
    
      {
          "type": "QR_CODE",
          "x": 0,
          "y": 0,
          "width": 60,
          "height": 40,
          "value": "ABC-abc-1234"
      }
    
    
  • 文本 TEXT
    
      {
          "type": "TEXT",
          "x": 0,
          "y": 0,
          "value": "ABC-abc-1234",
          "font_size": 12
      }
    
    
  • 图片 PICTURE
    
      {
          "type": "PICTURE",
          "x": 0,
          "y": 0,
          "width": 60,
          "height": 40,
          "value": "图片的Base64字符串"
      }
    
    
  • 线段 LINE
    
      {
          "type": "LINE",
          "x1": 0,
          "y2": 0,
          "x2": 60,
          "y2": 40,
          "weight": 2
      }