项目场景

过年刚上来,领导分配了工厂项目需求过来。MFC框架,语言C++,通过串口读出设备的MAC地址,然后通过调用斑马打印机打印出对应的二维码标签,经过一些了解比原想的简单,很快就实现了,下面分享下过程。

问题描述

本人也是个老程序员了,C++多年未接触,但这问题不大。首先安装打印机驱动,打印测试,确保直接能够打印出来,打印功能正常。按照以往的经验需要到下载对应的SDK,然后调用相关的API,奈何度娘了一圈,信息很少,大都是C#的,会用到一些库。继续筛选信息,看到一篇用C++实现斑马打印机打印的文章,其中并没有说用到SDK和库的信息,是调用win32 API实现驱动,那就试试吧。抄过来简单改改,尝试发现能够正常驱动打印机,并且标签有跳动,只是标签纸没有东西打印出来,好现象。继续研究,发现打印内容设置是通过ZPL语言设置,网上找一个打印二维码的指令,把MAC地址塞进去,即可。搞定,万事大吉!


代码实现

代码实现如下

int Zebra::printrjtlabel(const char* mac)
{LPTSTR szPrinterName;LPBYTE lpData;DWORD dwCount;HANDLE     hPrinter;DOC_INFO_1 DocInfo;DWORD      dwJob;DWORD      dwBytesWritten;/*^XA 开始^XZ 结束^LL 设置标签长度(我用的打印机是TSC TE344,这好像没有效果)^PW 设置标签宽度^FS 换行^FS 注释^LH0,0 纸张的边距,左边距和上边距^FO0,0 设置打印内容坐标*///lpData = (LPBYTE)("^XA ^LH5,0,^FO20,20 ^BQ,2,3 ^FDLA,0123456789ABCD ^XZ");//dwCount = strlen("^XA ^LH5,0,^FO20,20 ^BQ,2,3 ^FDLA,0123456789ABCD ^XZ");std::string printcontents = "^XA ^LH5,0,^FO20,20 ^BQ,2,3 ^FDLA,";printcontents = printcontents + std::string(mac);printcontents = printcontents + " ^XZ";lpData = (LPBYTE)printcontents.c_str();dwCount = strlen(printcontents.c_str());// Need a handle to the printer. szPrinterName = _T("ZDesigner ZT230-200dpi ZPL");//打印机名称if (!OpenPrinter(szPrinterName, &hPrinter, NULL)){return -1;}// Fill in the structure with info about this "document."  DocInfo.pDocName = TEXT("My Document");DocInfo.pOutputFile = NULL;DocInfo.pDatatype = TEXT("RAW");// Inform the spooler the document is beginning.  if ((dwJob = StartDocPrinter(hPrinter, 1, (LPBYTE)&DocInfo)) == 0){ClosePrinter(hPrinter);return -2;}// Start a page.  if (!StartPagePrinter(hPrinter)){EndDocPrinter(hPrinter);ClosePrinter(hPrinter);return -3;}// Send the data to the printer.  if (!WritePrinter(hPrinter, lpData, dwCount, &dwBytesWritten)){EndPagePrinter(hPrinter);EndDocPrinter(hPrinter);ClosePrinter(hPrinter);return -4;}// End the page.  if (!EndPagePrinter(hPrinter)){EndDocPrinter(hPrinter);ClosePrinter(hPrinter);return -5;}// Inform the spooler that the document is ending.  if (!EndDocPrinter(hPrinter)){ClosePrinter(hPrinter);return -6;}// Tidy up the printer handle.  ClosePrinter(hPrinter);// Check to see if correct number of bytes were written.  if (dwBytesWritten != dwCount){return -7;}return 0;
}

代码调用如下

int result = Zebra::printrjtlabel(macFromCsv);//sprintf(logbuf, "打印返回 result = %d", result);
//SaveLog(hWnd, index, WP_PRINT_LOG_STR, logbuf, strlen(logbuf));if (result < 0) {AfxMessageBox(_T("打印机打开失败!"));//goto ERR_HANDLE;
}

总结

许多事情就是这样,看似比登天还难的事情,有时候轻而易举就能做到。我们要坦然接受突如其来的变化,珍惜不期而遇的惊喜。加油,各位老铁!

MFC(C++)实现斑马标签打印机打印相关推荐

  1. 斑马标签打印机蛋疼的打印错误处理方法

    斑马标签打印机蛋疼的打印错误处理方法 默认自动检测的纸张,打印预览的时候没有问题,但是打印出来的效果,就一小块,打印不全.这个蛋疼的问题,可能和操作系统有关系,win10打印的时候没有问题,win7就 ...

  2. android标签打印,Android TSC热敏标签打印机打印

    不知道大家有没有遇到这种情况,有些东西想整理但却不知道怎么去整理.在做之前一头雾水,百度上也找不到答案,然后搞出来又发现没什么内容,所以好像也没什么可整理. 但是更多,我想说的是,我们还是要学会去总结 ...

  3. 斑马打印机打印不出来字怎么解决

    在条码打印软件中制作标签的时候,有的时候标签内容比较多,可能不注意就在标签上或者数据源中添加了一个空对象,也没预览,就直接连接斑马打印机进行打印了.最后发现,点击打印之后,斑马打印机没反应,咨询是怎么 ...

  4. 斑马打印机打印中文乱码的问题

    斑马打印机打印中文乱码的问题 前些天公司有需求需要使用web打印,咱也没弄过也没接触过呀,这种情况只能上官网看看了,因为我是用的是java环境,所以以下只介绍在java环境下解决的办法.这需要下载开发 ...

  5. 斑马ZT510打印设置

    这里写自定义目录标题 斑马ZT510打印设置 语言设置 IP设置 驱动安装 添加打印机 其他资源 斑马ZT510打印设置 语言设置 打开主菜单 选择语言,简体中文 IP设置 打开主菜单,选择网络 找到 ...

  6. 苹果电脑怎么设置佳博标签打印机_热销斑马标签打印机恢复出厂设置的方法

    斑马条码打印机有工业的和商业的之分,在选择的时候,客户根据实际情况选择相应的打印机.使用时,有时需要恢复出厂设置,有什么设置步骤呢,下面艾韦迅来介绍一下: 一.斑马GK888T恢复出厂设置方法: 开机 ...

  7. PHP调用ZPL斑马指令 打印二维码标签

    ZPL是斑马条码打印机的编程指令.恰巧有个项目要用到,打印机是得实DP-230 无线便携打印机, 虽然不是斑马的,但支持ZPL II指令,首先设置好打印机,设置IP地址及端口,仿真模式选ZPLII. ...

  8. C#调用斑马打印机打印条码标签(支持COM/LPT/USB/ZPL/EPL/Bitmap)

    利用标签设计软件做好模板,打印至本地文件,把其中的ZPL.EPL指令拷贝出来,替换其中动态变化的内容为变量名,做成一个模板文本,在代码中动态替换变量,再把指令输出至打印机. ZebraPrintHel ...

  9. C#调用斑马打印机打印条码标签(支持COM、LPT、USB、TCP连接方式和ZPL、EPL、CPCL指令)

    在批量打印商品标签时一般都要加上条码或图片,而这类应用大多是使用斑马打印机,所以我也遇到了怎么打印的问题. 一种办法是用标签设计软件做好模板,在标签设计软件中打印,这种办法不用写代码,但对我来说觉得不 ...

最新文章

  1. 【完结】 12篇文章带你完全进入NLP领域,掌握核心技术
  2. nowcoder 清楚姐姐的翅膀们 F 一般图的最大匹配
  3. Oracle dataguard一主两备环境搭建
  4. webstorm快捷键收集
  5. 如何更改iPhone备份和iTunes MobileSync备份文件夹的位置
  6. [MSSQL]如何获取日期月份的英文缩写
  7. eclipse windows 窗口背景颜色 保护视力
  8. python中批量将矩形图片转化为正方形图片,并且缩放
  9. NSIS 头文件介绍_TextFunc.nsh(2)
  10. Python:1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。
  11. 一般人看不透!沉默的大多数用户才是产品发展的关键!
  12. SAS学习笔记5:删除字符串空格-left/right/trim/strip/compress/compbl等函数的比较
  13. 【计算机专业毕设之基于python猫咪网爬虫大数据可视化分析系统-哔哩哔哩】 https://b23.tv/jRN6MVh
  14. 彻底卸载Websphere
  15. 利用OpenMP加速拉伸图像操作
  16. 参加《互联网技术创新和产业发展论坛》有感
  17. macOS 误删除 /private/var/folders 导致无法启动的解决方案
  18. python随机抽样_掌握python中的随机抽样
  19. 映泰Hi-Fi B150S5 主板来电后电脑自动开机问题
  20. 不可不说的Java“锁”事 - 美团技术团队

热门文章

  1. 芯片TOPS的真实性 - 解释 ( 标量 ,矢量, 张量)
  2. NAS存储的定义和优势介绍
  3. 省市县数十万数据集PM2.5面板数据(1998-2020年)
  4. APS系统如何让企业实现“多赢”?看高博通信是怎么做的
  5. linux中什么是资源管理器,什么叫资源管理器
  6. 文件用手机拍照片打印时,打印出来总是有黑阴影,如何去掉黑色阴影打印清晰的图片
  7. 红米note9 android10,红米note9pro和红米note10pro区别
  8. JavaScript学习过程
  9. 台湾大学神经网络架构设计
  10. 第11章 菜单及其它资源