- 论坛徽章:
- 0
|
想通过向打印机发送ESC指令来控制打印机走纸,但是指令发出去后打印机毫无动静,哪位大虾帮忙看下~~
下面是代码:
-
- //创建打印机设备句柄
- hdcPrint = CreateDC(szPrinterDriver, szPrinterName, szPrinterPort, NULL);
- if(!hdcPrint)
- {
- s.Format("%s","创建打印机句柄失败");
- AfxMessageBox(s);
- return FALSE;
- }
- s.Format("创建打印机句柄%p成功",hdcPrint);
- AfxMessageBox(s);
-
- //判断是否支持
- int nEscapeCode;
- nEscapeCode = PASSTHROUGH;
- if( !ExtEscape( hdcPrint, QUERYESCSUPPORT, sizeof(int), (LPCSTR)&nEscapeCode, 0, NULL ))
- {
- s.Format("%s","您的驱动程序不支持 PASSTHROUGH");
- AfxMessageBox(s);
- return FALSE;
- }
-
- //发送打印机初始化命令
- char InitCmd[]={27,64,0};
-
-
- DWORD result=Escape(hdcPrint, PASSTHROUGH, 2, InitCmd, NULL);
- if(result<=0)
- {
- DWORD ErrorCode=GetLastError();
- s.Format("发送进纸指令函数返回值:%d,错误码:%ld",result,ErrorCode);
- AfxMessageBox(s);
-
- //获得信息
- LPVOID lpMsgBuf; //Windows will allocate
- ::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,0,ErrorCode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, 0, NULL );
- //显示
- ::MessageBox(0, (LPCTSTR)lpMsgBuf, _T("GetLastError"), MB_OK|MB_ICONINFORMATION );
- //释放内存
- ::LocalFree( lpMsgBuf );
- return FALSE;
- }
- char tecmd[]={27,78,'1',0};
- result=Escape(hdcPrint, PASSTHROUGH, 3, tecmd, NULL);
- if(result<=0)
- {
- DWORD ErrorCode=GetLastError();
- s.Format("发送进纸指令函数返回值:%d,错误码:%ld",result,ErrorCode);
- AfxMessageBox(s);
-
- //获得信息
- LPVOID lpMsgBuf; //Windows will allocate
- ::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,0,ErrorCode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, 0, NULL );
- //显示
- ::MessageBox(0, (LPCTSTR)lpMsgBuf, _T("GetLastError"), MB_OK|MB_ICONINFORMATION );
- //释放内存
- ::LocalFree( lpMsgBuf );
- return FALSE;
- }
- //删除设备句柄
- DeleteDC(hdcPrint);
复制代码 |
|