MFC做斑马打印机二次开发,直接写了个函数给dlg.cpp调用了,有个能在线查看ZPL命令的网站挺不错的:http://labelary.com/viewer.html
#include "stdafx.h"
#include"ZBprinter.h"
void do_print(printdata data)
{
HANDLE hPrinter;
DOC_INFO_1 DocInfo;
DWORD dwJob;
DWORD dwBytesWritten;
//^PO+N正常,I旋转 ^LH0,0,定位
//CString str = L"^XA,^PON,^LH10,10,^FO250,20,^A030,30,^FDFile-name:" + data.filename + L"^FS,^FO250,50,^A030,30,^FDNumber:" + data.number + L"^FS,^FO250,80,^A030,30,^FDBom:" + data.bom + L"^FS,^FO250,110,^A030,30,^FDOrder:" + data.order + L"^FS,^FO250,140,^A030,30,^FDTotal num of errs:" + data.err + L"^FS,^FO250,170,^A030,30,^FD1,2,3,4,5,6,7,8,9,10,11^FS,^XZ ";
CString str = L"^XA,^PON,^LH10,10,^FO250,20,^A030,30,^FDFile-name:" + data.filename + L"^FS,^FO250,50,^A030,30,^FDNumber:" + data.number + L"^FS,^FO250,80,^A030,30,^FDBom:" + data.bom + L"^FS,^FO250,110,^A030,30,^FDOrder:" + data.order + L"^FS,^FO250,140,^A030,30,^FDTotal num of errs:" + data.err + L"^FS,^FO250,170,^A030,30,"+data.errlist+"^FS,^XZ ";
CStringA strA(str.GetBuffer(0));
str.ReleaseBuffer();
std::string s = strA.GetBuffer(0);
const char* pc = s.c_str();//这块是个数据格式转换,我弄得可能比较麻烦
LPBYTE lpData = (LPBYTE)pc;
DWORD dwCount = strlen(pc);
LPTSTR szPrinterName = _T("ZDesigner GK888t (EPL)");//打印机名称,在打印设备属性里能找到,便于下面查找目标打印机
if (!OpenPrinter(szPrinterName, &hPrinter, NULL))//MSDN里有说明,查找斑马打印机,找到了就返回指向它的句柄,以便调用
{
ClosePrinter(hPrinter);
}
// 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)//该StartDocPrinter函数通知后台打印程序,MSDN
{
ClosePrinter(hPrinter);
}
//下面就是关闭文档关闭打印机的一些判断操作了
if (!StartPagePrinter(hPrinter))
{
EndDocPrinter(hPrinter);
ClosePrinter(hPrinter);
}
if (!WritePrinter(hPrinter, lpData, dwCount, &dwBytesWritten))
{
EndPagePrinter(hPrinter);
EndDocPrinter(hPrinter);
ClosePrinter(hPrinter);
}
if (!EndPagePrinter(hPrinter))
{
EndDocPrinter(hPrinter);
ClosePrinter(hPrinter);
}
if (!EndDocPrinter(hPrinter))
{
ClosePrinter(hPrinter);
}
ClosePrinter(hPrinter);
}
还有不使用ZPL的,那就更简单了,不过那个函数现在记不得了。。。
其实还是得多查查百度和Google,自己写写demo,写这个也是做个备份,距离当初写也有挺长时间了,自己都快忘了。。。