QT + TSC条码打印机 打印相应的产品条码标签
来源:互联网 发布:日本人相互的称呼知乎 编辑:程序博客网 时间:2024/05/20 01:34
QT + TSC条码打印机 打印相应的产品条码标签
- QT TSC条码打印机 打印相应的产品条码标签
- 前言
- QT调用TSCLIBDLL库操作技巧与步骤
- 调用库时出现出现运行应用程序奔溃的解决办法
- 前言
前言
TSC条码打印机Windows DLL函数库是TSC官方提供的动态链接库,里面包含了TSC条码打印机的一些基本函数供我们调用。在使用TSC Windows DLL(TSCLIB.DLL)前,安装该TSC条码打印机驱动程序(TSC驱动程序下载地址
:http://www.chongshang.com.cn/news/view.asp?id=199)。
TSC动态库中的函数说明可以参考一下资料:
http://www.chongshang.com.cn/news/view.asp?id=542
https://wenku.baidu.com/view/095ad90c25c52cc58bd6be88.html
1. QT调用TSCLIB.DLL库操作技巧与步骤
1)将TSCLIB.dll文件放到QT工程文件所在的目录下,由于官方只提供了.DLL文件,所以QT调用时需要采用显示调用的方法。
在app.pro配置文件中添加包含库文件的路径
unix|win32: LIBS += -L$$PWD/ -lTSCLIBINCLUDEPATH += $$PWD/DEPENDPATH += $$PWD/
由于没有头文件,QT显示调用外部库中的函数接口需要用到QLibrary类,调用方法如下:
/*自己定义一个tsclib.h文件,在头文件中声明定义一个函数指针*/#ifndef TSCLIB_H#define TSCLIB_Htypedef _stdcall int (*About)(); //显示DLL版本号码typedef _stdcall void (*Openport)(unsigned char*); //指定电脑端的输出口typedef _stdcall void (*Closeport)(); //关闭指定的电脑端输出口/*说明:设定标签的宽度、高度、打印速度、打印浓度、感应器类别、Gap/Black mark垂直间距、Gap/Black mark偏移距离参数:a:字符串类型,设定标签宽度,单位mm。b:字符串类型,设定标签高度,单位mm。c:字符串类型,设定打印速度(打印速度随机型不同而有不同的选项),1.0-每秒1.0英寸打印速度,1.5-每秒1.5英寸打印速度, 2.0-每秒2.0英寸打印速度,3.0-每秒3.0英寸打印速度,4.0-每秒4.0英寸打印速度,6.0-每秒6.0英寸打印速度, 8.0-每秒8.0英寸打印速度,10.0-每秒10.0英寸打印速度。d:字符串类型,设定打印浓度,0-15,数字越大打印结果越黑。e:字符串类型,设定使用感应器类别,0-表示垂直间距感测器(Gap),1-表示使用黑标感测器。f:字符串类型,设定Gap/Black mark垂直间距高度,单位mm。g:字符串类型,设定Gap/Black mark偏移距离,单位mm,此参数若使用一般标签时均设为0。*/typedef _stdcall int (*Setup)(unsigned char *a,unsigned char *b,unsigned char *c,unsigned char *d,unsigned char *e,unsigned char *f,unsigned char *g); ///*说明:清除*/typedef _stdcall void (*ClearBuffer)();/*5、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:字符串类型,条码内容。*/typedef _stdcall void (*Barcode)(QString, QString, QString, QString, QString, QString, QString, QString, QString); ///*6、printerfont(a,b,c,d,e,f,g)说明:使用条码机内部字体打印。参数:a:字符串类型,文字X方向起始点,以点表示200dpi-1点=1/8mm,300dpi-1点=1/12mm,600dpi-1点=1/24mm。b:字符串类型,文字Y方向起始点,以点表示200dpi-1点=1/8mm,300dpi-1点=1/12mm,600dpi-1点=1/24mm。c:字符串类型,内建字体名称,共12种。1:8*12dots;2:12*20dots;3:16*24dots;4:24*32dots;5:32*48dots;TST24.BF2:繁体中文24*24;TST16.BF2:繁体中文16*16;TTT24.BF2:繁体中文24*24;TSS24.BF2:简体中文24*24;TSS16.BF2:简体中文16*16;K:韩文24*24;L:韩文16*16。d:字符串类型,设定文字旋转角度。0-旋转0°,90-旋转90°,180-旋转180°,270-旋转270°。e:字符串类型,设定文字X方向放大倍率,1-8。f:字符串类型,设定文字Y方向放大倍率,1-8。g:字符串类型,打印文字内容。*/typedef _stdcall int (*Printerfont)(unsigned char *a,unsigned char *b,unsigned char *c,unsigned char *d,unsigned char *e,unsigned char *f,unsigned char *g); ///*7、sendcommand(command)说明:送内建指令到条码打印机。参数:详细指令参见TSPL。*/typedef _stdcall int (*Sendcommand)(unsigned char *);/*8、printlabel(a,b)说明:打印标签内容参数:a:字符串类型,设定打印标签式数。(set)b:字符串类型,设定打印标签份数(copy)*/typedef _stdcall int (*Printlabel)(unsigned char *,unsigned char *);/*9、downloadpcx(a,b)说明:下载单色PCX格式图档到打印机。参数:a:字符串类型,图档名(可包含路径)。b:字符串类型,下载至打印机记忆体内的名称。*/typedef _stdcall int (*Downloadpcx)(unsigned char *,unsigned char *);/*10、formfeed()说明:跳页,该函数需在setup后使用。参数:无*/typedef _stdcall void (*Formfeed)();/*11、nobackfeed()说明:设定纸张不回吐。参数:无*/typedef _stdcall void (*Nobackfeed)();/*12、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:字符串类型,打印文字内容。*/typedef _stdcall int (*Windowsfont)(int a,int b,int c,int d,int e,int f,unsigned char *g,unsigned char *h); //#endif // TSCLIB_H----------//声明函数About about=(About)mytsclib.resolve("about");Openport openport = (Openport)mytsclib.resolve("openport");Setup setup = (Setup)mytsclib.resolve("setup");ClearBuffer clearbuffer = (ClearBuffer)mytsclib.resolve("clearbuffer");Downloadpcx downloadpcx = (Downloadpcx)mytsclib.resolve("downloadpcx");Sendcommand sendcommand = (Sendcommand)mytsclib.resolve("sendcommand");Windowsfont windowsfont = (Windowsfont)mytsclib.resolve("windowsfont");Printlabel printlabel = (Printlabel)mytsclib.resolve("printlabel");Closeport closeport = (Closeport)mytsclib.resolve("closeport");/*在调用的地方使用以下代码调用*/QLibrary mytsclib("TSCLIB.dll");if (mytsclib.load()) //判断是否正确加载{ qDebug() << "printer";// about(); QString portstr = ui->comboBox_Printer->currentText(); //QString转char * QByteArray portStr = portstr.toLatin1(); openport((unsigned char*)(portStr.data()));//"TSC TTP-244 Pro" setup((unsigned char*)"60",(unsigned char*)"40",(unsigned char*)"3", (unsigned char*)"15",(unsigned char*)"0",(unsigned char*)"0",(unsigned char*)"0"); clearbuffer();// downloadpcx((unsigned char*)"C:UL.PCX",(unsigned char*)"UL.PCX");// windowsfont(10, 250, 80, 0, 0,0, (unsigned char*)"标楷体", (unsigned char*)"标楷体字型"); char mybarCodeCMD[128] = {0}; QString barCodeStr =/*"0FFF5135"; //*/ui->label_deviceNum->text(); //QString转char * toUpper() QByteArray resultBarCodeStr = barCodeStr.toUpper().toLatin1(); sprintf(mybarCodeCMD,"BARCODE 236,140,\"128\",50,1,0,2,4,\"%s\"",resultBarCodeStr.data()); sendcommand((unsigned char *)mybarCodeCMD); /* 2.固定文字打印指令 中文 */ sendcommand((unsigned char *)"PUTBMP 320,72,CCC.BMP"); windowsfont(16, 16, 40, 0, 2, 1, (unsigned char*)"微软雅黑", (unsigned char *)myLogoGBK); //产品logo windowsfont(16, 64, 20, 0, 2, 0, (unsigned char*)"微软雅黑", (unsigned char *)myText1GBK);//产品型号// sendcommand((unsigned char *)"PUTPCX 320,72,\"CCC.PCX\""); printlabel((unsigned char*)"1", (unsigned char*)"1"); closeport(); mytsclib.unload();}
在定义函数指针时用到了_stdcall 修饰符,之前没有用这个修饰,应用程序运行时老崩溃,加了这个后就没有问题了。如果想深入了解_stdcall 的用法,可以自行百度。应用中调用库函数绘制pcx图片时没打印出效果,我研究了好久,依然没找到解决办法,bmp格式的图片也试过,没打印出来,所以暂时不支持图片打印。
2.调用库时出现出现运行应用程序奔溃的解决办法
除了在函数定义时要加_stdcall,而且TSCLIB.DLL在Windows下运行需要依赖系统带的库文件,如果缺少相应的库文件,也会导致执行库中函数时程序崩溃。一般的我们查看一个库文件的依赖关系需要用到一些工具,这里我用的是 :Depends,
https://pan.baidu.com/s/1geWLGif 可以在这里下载使用,打开界面如图:
如果在库依赖查看器中看到有缺少的依赖库文件,可以在网上下载缺少的.dll文件,并将文件添加到电脑的C:\Windows\System32目录下,同时也添加到QT的工程文件所在的目录下即可,便于以后脱机运行时好找到需要的库文件。
动态链接库的调用还可以参考http://blog.csdn.net/roman1232008/article/details/17074371 希望对后来者有一定的启发,也请有同学解决了TSC成功打印图片问题的能多多交流,谢谢!第一次写博文,格式不怎么漂亮,敬请谅解。
打印效果如图:
- QT + TSC条码打印机 打印相应的产品条码标签
- Java调用TSC条码打印机接口打印条码和二维码
- TSC条码打印机
- TSC打印条码
- TSC条码打印机函数使用
- 分享 tsc 条码打印机 打印控件 调用方法 , c# silverlight
- 如何使用条码打印机?打印标签?
- TSC条码打印机常见故障及解决方法
- TSC条码打印机常见故障及解决方法
- TSC条码打印机亮红灯解决办法!
- TSC条码打印机亮红灯解决办法!
- c#通过txt文档利用打印机命令打印条码标签
- 条码标签打印
- Android打印机--TSC 标签打印
- lodop 调用打印机打印条码
- 条码打印机的接口类型
- Java调用Zebra条码打印机打印条码、中英文数字条码混合标签,可自由控制格式和排版
- Java调用Zebra条码打印机打印条码、中英文数字条码混合标签,可自由控制格式和排版(2)
- 三星笔记本 重装系统
- Notepad++英文版背景色设置
- cocos quick lua 输入框点击穿透的问题处理方案。
- Js的语法特性
- 分享一波怎么利用github挂载自己的代码
- QT + TSC条码打印机 打印相应的产品条码标签
- Python爬虫笔记之模拟登录
- 1.Maven pom.xml 配置详解
- [编程题]计算糖果
- c++初级 之 运算符重载
- 第5章 排序 —— 5.1 插入排序
- 前端开发【第2篇:CSS】
- iOS-VLCKit实现仿网易云音乐播放音乐
- hibernate笔记