当前位置: 首页 > 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就行了。

相关文章:

Qt+TSC打印机调试

前言 最近被TSC打印机整的死去活来&#xff0c;记录一下使用方法。 一、环境 Qt5.15.2 mingw tsc TE244 二、使用步骤 1.引入库 从官网下载windows C SDK&#xff0c;引入库&#xff0c;以下是.pro文件 QT core gui printsupportgreaterThan(QT_MAJOR_VERSION, 4)…...

QT 添加程序图标

1. 使用免费网站将其他图片格式转化成ico格式 Ico转换器 &#xff1a; https://cn.free-converter.com/ico-converter 2.qmake项目添加程序图标 在.pro文件内添加语句,如下图 RC_ICONS favicon.ico2.1 程序图标文件添加到项目目录内 2.2 通过windeployqt xxx.exe构建生成的…...

数据结构与算法 - 贪心算法

一、贪心例子 贪心算法或贪婪算法的核心思想是&#xff1a; 1. 将寻找最优解的问题分为若干个步骤 2. 每一步骤都采用贪心原则&#xff0c;选取当前最优解 3. 因为没有考虑所有可能&#xff0c;局部最优的堆叠不一定让最终解最优 贪心算法是一种在每一步选择中都采取在当前…...

sed 一点点记忆

sed用法实例1&#xff08;我用的最多&#xff0c;超级无敌的用法&#xff09; 格式&#xff1a;/ # b 可以换成你想要的字符 sed -i //s/// 文本文件 sed -i ##s### 文本文件 sed -i bbsbbb 文本文件描述 通过正则表达式过滤你想要的行&#xff0c;替换该行的内容 1、s前面用…...

PyTorch--卷积神经网络(CNN)模型实现手写数字识别

文章目录 前言完整代码代码解析1. 导入必要的库2. 设备配置3. 超参数设置4. 加载MNIST数据集5. 创建数据加载器6. 定义卷积神经网络模型7. 实例化模型并移动到设备8. 定义损失函数和优化器9. 训练模型10. 测试模型11. 保存模型 常用函数解析小改进数据集部分可视化训练过程可视…...

前端程序员回忆工作第1年的记录总结(一)

更多详情&#xff1a;爱米的前端小笔记&#xff08;csdn~xitujuejin~zhiHu~Baidu~小红shu&#xff09;同步更新&#xff0c;等你来看&#xff01;都是利用下班时间整理的&#xff0c;整理不易&#xff0c;大家多多&#x1f44d;&#x1f49b;➕&#x1f914;哦&#xff01;你们…...

SQL Server端口设置完整详细步骤

​ 大家好&#xff0c;我是程序员小羊&#xff01; 前言&#xff1a; 前面是对SQLserver服务器一些介绍&#xff0c;不想了解的可直接点击目录跳入正题&#xff0c;谢谢&#xff01;&#xff01;&#xff01; SQL Server 是由微软公司开发的关系数据库管理系统 (RDBMS)。它主要…...

【2024】k8s集群 图文详细 部署安装使用(两万字)

目录&#x1f4bb; 一、前言二、下载依赖配置环境1、配置系统环境1.1、配置桥接网络1.1.1、parallels desktop配置1.1.2、VMware配置 1.2、配置root用户登陆 2、环境配置安装下载2.1、安装ipset和ipvsadm2.2、关闭SWAP分区 3、配置Containerd容器3.1、下载安装Containerd3.2、创…...

CSS 伪类和伪元素

也是选择器的一种&#xff0c;被称为伪类和伪元素。这一类选择器的数量众多&#xff0c;通常用于很明确的目的。 伪类 什么是伪类 伪类是选择器的一种&#xff0c;它用于选择处于特定状态的元素。 比如当它们是这一类型的第一个元素时&#xff08;:first-child&#xff09;&…...

某动一面——算法题

function restoreIpAddresses(s) {const result = [];function backtrack(start, path) {// 如果剩余的字符数不符合IP地址的要求,则剪枝if (s.length - start > (4 - path.length) * 3) return;if (s.length - start < (4 - path.length)) return;// 当找到了四段IP地址…...

kubernetes中共享内存和内存区别

计算机科学中的内存与共享内存 在计算机科学中&#xff0c;“内存”和“共享内存”是两个不同的概念&#xff0c;但它们之间有着密切的关系。为了更好地理解这两个概念及其相互关系&#xff0c;我们可以分别解释一下&#xff1a; 内存 (Memory) 内存通常指的是计算机系统的主…...

JavaWeb04-MyBatis与Spring结合

目录 前言 一、MyBatis入门&#xff08;MyBatis官网&#xff09; 1.1 创建mybatis项目&#xff08;使用spring项目整合式方法&#xff09; 1.2 JDBC 1.3 数据库连接池 1.4 实用工具&#xff1a;Lombok 二、MyBatis基础操作 2.1 准备工作 2.2 导入项目并实现操作 2.3 具…...

Mybatis-springBoot

MyBatis 是一个流行的 Java 持久层框架&#xff0c;它简化了与关系型数据库的交互。通过将 SQL 语句与 Java 代码进行映射&#xff0c;MyBatis 提供了一种方便、灵活的方式来执行数据库操作。它支持动态SQL、缓存机制和插件扩展&#xff0c;使得开发人员能够更高效地编写和管理…...

【中国数据库前世今生】数据存储管理的起源与现代数据库发展启蒙

记录开启本篇的目的: 作为1名练习时长2年半的DBA&#xff0c;工作大部分时间都在和数据库打交道&#xff0c;包括Oracle,Mysql,Postgresql,Opengauss等国内外数据库。但是对数据库的发展史却知之甚少。 正好腾讯云开发者社区正在热播:【纪录片】中国数据库前世今生,借此机会了解…...

拉卡拉上半年营收29.82亿元 外卡、数字化服务提升业绩增长空间

8月9日晚&#xff0c;拉卡拉(300773.SZ)发布2024年半年业绩报告。在国内经济延续恢复向好态势、国内消费市场规模持续增长的背景下&#xff0c;拉卡拉积极推进“推广数字支付、共享数字科技、兑现数据价值”的经营战略&#xff0c;上半年公司实现营业收入29.82亿元&#xff0c;…...

数学建模——启发式算法(蚁群算法)

算法原理 蚁群算法来自于蚂蚁寻找食物过程中发现路径的行为。蚂蚁并没有视觉却可以寻找到食物&#xff0c;这得益于蚂蚁分泌的信息素&#xff0c;蚂蚁之间相互独立&#xff0c;彼此之间通过信息素进行交流&#xff0c; 从而实现群体行为。 蚁群算法的基本原理就是蚂蚁觅食的过程…...

【Pytorch实用教程】在做模型融合时非常关键的代码:nn.Identity()详解

文章目录 nn.Identity()基础介绍主要用途示例代码以ResNet为例介绍 self.resnet.fc = nn.Identity() 的作用1. **背景:ResNet 模型结构**2. **代码 `self.resnet.fc = nn.Identity()` 的作用**3. **为什么使用 `nn.Identity()`**4. **示例代码**nn.Identity()基础介绍 nn.Ide…...

【开源力荐】一款基于web的可视化视频剪辑工具

嗨, 大家好, 我是徐小夕. 之前一直在社区分享零代码&低代码的技术实践&#xff0c;也陆陆续续设计并开发了多款可视化搭建产品&#xff0c;比如&#xff1a; H5-Dooring&#xff08;页面可视化搭建平台&#xff09;V6.Dooring&#xff08;可视化大屏搭建平台&#xff09;橙…...

鸿萌数据恢复服务: 如何修复 SQL Server 数据库错误 829?

天津鸿萌科贸发展有限公司从事数据安全服务二十余年&#xff0c;致力于为各领域客户提供专业的数据恢复、数据备份、网络及终端数据安全等解决方案与服务。 同时&#xff0c;鸿萌是众多国际主流数据恢复软件(Stellar、UFS、R-Studio、ReclaiMe Pro 等)的授权代理商&#xff0c…...

OpenCV图像处理——按最小外接矩形剪切图像

引言 在图像处理过程中&#xff0c;提取感兴趣区域&#xff08;ROI&#xff09;并在其上进行处理后&#xff0c;往往需要将处理后的结果映射回原图像。这一步通常涉及以下几个步骤&#xff1a; 找到最小外接矩形&#xff1a;使用 cv::boundingRect 或 cv::minAreaRect 提取感兴…...

《熬夜整理》保姆级系列教程-玩转Wireshark抓包神器教程(4)-再识Wireshark

1.简介 按照以前的讲解和分享路数&#xff0c;宏哥今天就应该从外观上来讲解WireShark的界面功能了。 2.软件界面 由上到下依次是标题栏、主菜单栏、主菜单工具栏、显示过滤文本框、打开区、最近捕获并保存的文件、捕获区、捕获过滤文本框、本机所有网络接口、学习区及用户指…...

调用yolov3模型进行目标检测

要调用已经训练好的YOLOv3模型对图片进行检测&#xff0c;需要完成以下几个步骤&#xff1a; 加载预训练模型&#xff1a;从预训练的权重文件中加载模型。准备输入图片&#xff1a;将图片转换为模型所需的格式。进行推理&#xff1a;使用模型对图片进行推理&#xff0c;得到检…...

linux文件——重定向原理——dup、重定向与execl、VFS

前言&#xff1a;本篇讲解linux下的重定向相关内容。 在本篇中&#xff0c; 博主将会带着友友们一边实验&#xff0c; 一边探索底层原理。 通过本篇的学习&#xff0c; 友友们将会了解到重定向是如何实现的&#xff0c; 重定向的本质是什么&#xff0c; 重定向和进程替换之间的…...

【STM32 FreeRTOS】任务

使用 RTOS 的实时应用程序可以被构建为一组独立的任务。每个任务在自己的上下文中执行&#xff0c;不依赖于系统内的其他任务或 RTOS 调度器本身。在任何时间点&#xff0c;应用程序中只能执行一个任务&#xff0c;实时 RTOS 调度器负责决定所要执行的任务。因此&#xff0c; R…...

Java面试--框架--Spring MVC

Spring MVC 目录 Spring MVC1.spring mvc简介2.spring mvc实现原理2.1核心组件2.2工作流程 3.RESTful 风格4.Cookie&#xff0c;Session4.1 会话4.2 保存会话的两种技术 5.拦截器5.1过滤器、监听器、拦截器的对比5.2 过滤器的实现5.3 拦截器基本概念5.4 拦截器的实现 1.spring …...

土壤水分监测系统的工作原理

TH-TS200土壤水分监测系统是一种在地球科学、农学等领域广泛应用的分析仪器&#xff0c;它主要用于监测土壤中的水分含量&#xff0c;为农业生产、水资源管理、环境保护等提供重要数据支持。通常包括数据采集器、土壤水分传感器、土壤温度传感器(部分系统配备)、计算机软件以及…...

k8s学习--如何控制pod调度的位置

文章目录 一、Pod 调度基础二、通过节点选择器 (Node Selector) 控制调度三、使用节点亲和性 (Node Affinity)四、使用污点和容忍 (Taints and Tolerations)五、Pod 反亲和性 (Pod Anti-Affinity) 总结 在 Kubernetes (K8s)中&#xff0c;Pod 是应用运行的最小单位&#xff0…...

基于mysqldump的MySQL数据库异地备份方案(含完整脚本和解释)

MySQL数据库异地备份方案 0 文档描述 本文描述了一个数据库异地备份方案&#xff0c;以下脚本代码都是在线上应用的本文以CentOS7为例&#xff0c;其他系统请自行查询安装命令如果评论有需求&#xff0c;我就对应系统做一下文档 1 基本原理 1.1 流程 原理本身很简单&#…...

C语言中10个字符串函数详解

目录 1.strlen 2.strcpy 3.strcat 4.strcmp 5.strncpy 6.strncat 7.strncmp 8.strstr 9.strtok 10.strerror 1.strlen 基本结构&#xff1a;size_t strlen(const char *str)&#xff1b;功能&#xff1a;用于计算字符串的长度&#xff1b;字符串已经 0作为结束标志…...

flume系列之:查询多个flume agent组是否有topic重复接入情况

flume系列之:查询多个flume agent组是否有topic重复接入情况 一、查询zk节点下的flume agent组二、获取采集的topic三、获取重复接入的topic,支持设置重复接入白名单四、执行流程五、完整代码一、查询zk节点下的flume agent组 def get_flumeAgent_zkPath(zkRootPaths):for z…...

微信开放平台是什么/常熟seo网站优化软件

1.请列举出在 JDK 中几个常用的设计模式&#xff1f; 单例模式&#xff08;Singleton pattern&#xff09;用于 Runtime&#xff0c;Calendar 和其他的一些类中。工厂模式&#xff08;Factory pattern&#xff09;被用于各种不可变的类如 Boolean&#xff0c;像 Boolean.value…...

wordpress安装404/全网营销推广

上篇文章给大家介绍了Notion的一些基本内容&#xff0c;但对于小白来说&#xff0c;上手还是有一定难度的。首先简单回顾一下上一篇文章的内容&#xff0c;Notion的中文直译&#xff0c;是「概念」的意思&#xff0c;这是一款将笔记、知识库和任务管理整合在一起的协作工具。它…...

个人工商注册查询网站/net的网站建设

SQL SERVER中变量的定义、赋值与使用 本文面向对SQL SERVER中变量操作不熟悉的用户&#xff0c;希望能使他们在看完本文后能对变量操作有具体和全面的认识。 在学习SQL SERVER的过程中&#xff0c;很多时候需要对某些单独的值进行调试&#xff0c;这时就需要在SQL SERVER中对变…...

自己做网站要买服务器吗/seo哪家强

编写帮助文档除了内容之外&#xff0c;如何呈现给用户也很重要&#xff0c;专业的形象有助于帮助用户更快的上手使用&#xff0c;并且建立专业形象&#xff0c;可能你的帮助文档内容来源各个地方&#xff0c;但最终&#xff0c;每个知识库都需要自己的样式指南&#xff0c;你可…...

wordpress新用户权限/关键词排名seo优化

随着智能家居技术发展越来越成熟&#xff0c;各种各样的智能家居系统也应运而生。从通信方式的角度去认识智能家居&#xff0c;供您在选购时选择最适合自己需求的技术系统&#xff0c;目前主流的智能家居系统通信方式有&#xff1a;总线、无线、电力载波和以太网。 一、基于总…...

企业免费网站建设哪个品牌好/站长统计性宝app

在VMWare主页中选取新建虚拟机选项卡 2.在新建虚拟机向导中设置安装来源取决于安装方式.如果是通过光盘安装,则选择第一项.这里我使用ISO映像安装,输入用户名密码和密钥一路下一步就可以安装成功.3.安装成功如下图4.下面开始安装VMWare Tools工具点击 VMWare客户端的 虚拟机…...