当前位置: 首页 > news >正文

Qt+TSC打印机调试

前言

最近被TSC打印机整的死去活来,记录一下使用方法。


一、环境

Qt5.15.2 + mingw + tsc TE244

二、使用步骤

1.引入库

从官网下载windows C++ SDK,引入库,以下是.pro文件

QT       += core gui printsupportgreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFIG += c++17# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0SOURCES += \main.cpp \mainwindow.cppHEADERS += \mainwindow.hFORMS += \mainwindow.ui# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += targetwin32: LIBS += -L$$PWD/TSCDLL_20240124/x64/ -lTSCLIBINCLUDEPATH += $$PWD/TSCDLL_20240124/x64
DEPENDPATH += $$PWD/TSCDLL_20240124/x64

在这里插入图片描述

在这里插入图片描述

2.demo使用

代码如下(示例):

头文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QLibrary>
#include <QMainWindow>typedef int (*TSCabout)();
typedef int (*TSCopenport)(const char *);
typedef int (*TSCsendcommand)(const char *);
typedef int (*TSCcloseport)();
typedef int (*TSCwindowsfont)(int a, int b, int c, int d, int e, int f,unsigned char *g, unsigned char *h);
typedef int (*Downloadpcx)(char *a, char *b);QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACEclass MainWindow : public QMainWindow {Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void on_btn_barcode_clicked();void on_btn_qrcode_clicked();void on_btn_font_clicked();private:Ui::MainWindow *ui;QLibrary tscdll;TSCabout about;TSCopenport openport;TSCcloseport closeport;TSCsendcommand sendcommand;TSCwindowsfont tscwindowsfont;Downloadpcx downloadpcx;
};
#endif // MAINWINDOW_H

cpp文件

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow), tscdll("TSCLIB.dll") {ui->setupUi(this);about = (TSCabout)tscdll.resolve("about");openport = (TSCopenport)tscdll.resolve("openport");closeport = (TSCcloseport)tscdll.resolve("closeport");sendcommand = (TSCsendcommand)tscdll.resolve("sendcommand");tscwindowsfont = (TSCwindowsfont)tscdll.resolve("windowsfont");downloadpcx = (Downloadpcx)tscdll.resolve("downloadpcx");
}MainWindow::~MainWindow() { delete ui; }void MainWindow::on_btn_barcode_clicked() {if (!tscdll.load()) {qDebug() << "加载DLL失败!";}QString text = ui->lE_barcode->text();/*barcode(a,b,c,d,e,f,g,h,i)说明:使用条码机内部条码打印。参数:a:字符串类型,条码X方向起始点,以点(point)表示。200dpi-1点=1/8mm,300dpi-1点=1/12mm,600dpi-1点=1/24mm。b:字符串类型,条码Y方向起始点,以点(point)表示。200dpi-1点=1/8mm,300dpi-1点=1/12mm,600dpi-1点=1/24mm。c:字符串类型,128:Code128,字符集A/B/C自动转换;128M,Code128,字符集A/B/C手动转换;EAN128,字符集A/B/C自动转换;25:交叉25码;25C:带校验位的交叉25码;39:Code39;39C:带校验位的Code39码;93:Code93;EAN13:EAN13;EAN13+2:带2个增位的EAN13;EAN13+5:带5个增位的EAN-13;EAN8:EAN8;EAN8+2:带2个增位的EAN8;EAN8+5:带5个增位的EAN8;CODA:库德巴码;POST:Postnet;UPCA:UPC-A;UPCA+2:带2个增位的UPC-A;UPCA+5:带5个增位的UPC-A;UPCE:UPC-E;UPCE+2:带2个增位的UPC-E;UPCE+5:带5个增位的UPC-E。d:字符串类型,设定条码高度,高度以点来表示。e:字符串类型,设定是否打印条码下面的文字,0-不打印文字,1-打印文字。f:字符串类型,设定条码旋转角度。0-旋转0°,90-旋转90°,180-旋转180°,270-旋转270°。g:字符串类型,设定条码窄Bar比例因子。h:字符串类型,设定条码宽Bar比例因子。i:字符串类型,条码内容。*/QString barCodeCMD =QString("BARCODE %1,%2,\"128\",30,0,0,1,1,\"%3\"").arg(QString::number(100), QString::number(100), text);// 设置打印机型号openport("TSC TE244");// 设置标签纸大小sendcommand("SIZE 65 mm, 120 mm");// 设置打印方向sendcommand("DIRECTION 1");// 清空打印机缓存sendcommand("CLS");// 打印条形码sendcommand(barCodeCMD.toLocal8Bit().data());sendcommand("PRINT 1");closeport();
}void MainWindow::on_btn_qrcode_clicked() {if (!tscdll.load()) {qDebug() << "加载DLL失败!";}QString text = ui->lE_qrcode->text();/*qrcode(a,b,c,d,e,f,g,h,i)说明:使用条码机内部条码打印。参数:a:字符串类型,条码X方向起始点,以点(point)表示。200dpi-1点=1/8mm,300dpi-1点=1/12mm,600dpi-1点=1/24mm。b:字符串类型,条码Y方向起始点,以点(point)表示。200dpi-1点=1/8mm,300dpi-1点=1/12mm,600dpi-1点=1/24mm。c:字符串类型,错误纠正能力等级。 L-7%,M-15%,Q-25%,H-30%d:字符串类型,设定条码高度,高度以点来表示。1~10(单位dot)e:字符串类型,自动生成编码/手动生成编码。A-自动(建议使用),M-手动f:字符串类型,设定条码顺时针旋转角度。0-旋转0°,90-顺时针旋转90°,180-顺时针旋转180°,270-顺时针旋转270°。g:字符串类型,条码内容。*/QString qrCodeCMD =QString("QRCODE %1,%2,H,6,A,270,\"%3\"").arg(QString::number(200), QString::number(200), text);// 设置打印机型号openport("TSC TE244");// 设置标签纸大小sendcommand("SIZE 65 mm, 120 mm");// 设置打印方向sendcommand("DIRECTION 1");// 清空打印机缓存sendcommand("CLS");// 打印条形码sendcommand(qrCodeCMD.toLocal8Bit().data());sendcommand("PRINT 1");closeport();
}void MainWindow::on_btn_font_clicked() {if (!tscdll.load()) {qDebug() << "加载DLL失败!";}QString text = ui->lE_font->text();// 设置打印机型号openport("TSC TE244");// 设置标签纸大小sendcommand("SIZE 65 mm, 120 mm");// 设置打印方向sendcommand("DIRECTION 1");// 清空打印机缓存sendcommand("CLS");// 打印条形码/*windowsfont(a,b,c,d,e,f,g,h)说明:使用Windows TTF字体打印文字。参数:a:整数类型,文字X方向起始点,以点表示。b:整数类型,文字Y方向起始点,以点表示。c:整数类型,字体高度,以点表示。d:整数类型,旋转角度,逆时针方向旋转。0-旋转0°,90-旋转90°,180-旋转180°,270-旋转270°。e:整数类型,字体外形。0:标签;1:斜体;2:粗体;3:粗斜体。f:整数类型,下划线,0:无下划线;1:加下划线。g:字符串类型,字体名称。如:Arial,Times new Roman。h:字符串类型,打印文字内容。*/tscwindowsfont(16, 64, 20, 0, 2, 0, (unsigned char *)"Arial",(unsigned char *)text.toLocal8Bit().data());sendcommand("PRINT 1");closeport();
}

最大的问题就是乱码了,使用windowsfont 方式,不要使用 TEXT 指令的方式。


Demo链接:https://download.csdn.net/download/yonug1107716573/89626802

总结

以上就是今天要讲的内容,本文仅仅简单介绍了TSC的主要的使用,而TSC提供了大量能使我们快速便捷地处理数据的函数和方法。打印BMP图片的方式还没有测试。另外旋转条码打印出来可能有点模糊,调整打印机的浓度为1就行了。

http://www.lryc.cn/news/424500.html

相关文章:

  • QT 添加程序图标
  • 数据结构与算法 - 贪心算法
  • sed 一点点记忆
  • PyTorch--卷积神经网络(CNN)模型实现手写数字识别
  • 前端程序员回忆工作第1年的记录总结(一)
  • SQL Server端口设置完整详细步骤
  • 【2024】k8s集群 图文详细 部署安装使用(两万字)
  • CSS 伪类和伪元素
  • 某动一面——算法题
  • kubernetes中共享内存和内存区别
  • JavaWeb04-MyBatis与Spring结合
  • Mybatis-springBoot
  • 【中国数据库前世今生】数据存储管理的起源与现代数据库发展启蒙
  • 拉卡拉上半年营收29.82亿元 外卡、数字化服务提升业绩增长空间
  • 数学建模——启发式算法(蚁群算法)
  • 【Pytorch实用教程】在做模型融合时非常关键的代码:nn.Identity()详解
  • 【开源力荐】一款基于web的可视化视频剪辑工具
  • 鸿萌数据恢复服务: 如何修复 SQL Server 数据库错误 829?
  • OpenCV图像处理——按最小外接矩形剪切图像
  • 《熬夜整理》保姆级系列教程-玩转Wireshark抓包神器教程(4)-再识Wireshark
  • 调用yolov3模型进行目标检测
  • linux文件——重定向原理——dup、重定向与execl、VFS
  • 【STM32 FreeRTOS】任务
  • Java面试--框架--Spring MVC
  • 土壤水分监测系统的工作原理
  • k8s学习--如何控制pod调度的位置
  • 基于mysqldump的MySQL数据库异地备份方案(含完整脚本和解释)
  • C语言中10个字符串函数详解
  • flume系列之:查询多个flume agent组是否有topic重复接入情况
  • Windows自动化1️⃣环境搭建WinAppDriver