免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5373 | 回复: 4
打印 上一主题 下一主题

向打印机发送ESC指令的问题! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-30 21:42 |只看该作者 |倒序浏览
想通过向打印机发送ESC指令来控制打印机走纸,但是指令发出去后打印机毫无动静,哪位大虾帮忙看下~~


下面是代码:


  1.        

  2.         //创建打印机设备句柄
  3.         hdcPrint = CreateDC(szPrinterDriver, szPrinterName, szPrinterPort, NULL);
  4.         if(!hdcPrint)
  5.         {
  6.                 s.Format("%s","创建打印机句柄失败");
  7.                 AfxMessageBox(s);
  8.                 return FALSE;
  9.         }
  10.         s.Format("创建打印机句柄%p成功",hdcPrint);
  11.         AfxMessageBox(s);

  12.        
  13.         //判断是否支持
  14.         int nEscapeCode;
  15.         nEscapeCode = PASSTHROUGH;
  16.         if( !ExtEscape( hdcPrint, QUERYESCSUPPORT, sizeof(int), (LPCSTR)&nEscapeCode, 0, NULL ))
  17.         {
  18.                 s.Format("%s","您的驱动程序不支持 PASSTHROUGH");
  19.                 AfxMessageBox(s);
  20.                 return FALSE;
  21.         }
  22.        
  23.         //发送打印机初始化命令

  24.         char InitCmd[]={27,64,0};
  25.        
  26.        
  27.         DWORD result=Escape(hdcPrint, PASSTHROUGH, 2, InitCmd, NULL);
  28.         if(result<=0)
  29.         {
  30.                 DWORD ErrorCode=GetLastError();
  31.                 s.Format("发送进纸指令函数返回值:%d,错误码:%ld",result,ErrorCode);
  32.                 AfxMessageBox(s);
  33.                
  34.                 //获得信息
  35.                 LPVOID lpMsgBuf; //Windows will allocate
  36.                 ::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,0,ErrorCode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, 0, NULL );

  37.                 //显示
  38.                 ::MessageBox(0, (LPCTSTR)lpMsgBuf, _T("GetLastError"), MB_OK|MB_ICONINFORMATION );

  39.                 //释放内存
  40.                 ::LocalFree( lpMsgBuf );
  41.                 return FALSE;
  42.         }

  43.         char tecmd[]={27,78,'1',0};
  44.         result=Escape(hdcPrint, PASSTHROUGH, 3, tecmd, NULL);
  45.         if(result<=0)
  46.         {
  47.                 DWORD ErrorCode=GetLastError();
  48.                 s.Format("发送进纸指令函数返回值:%d,错误码:%ld",result,ErrorCode);
  49.                 AfxMessageBox(s);
  50.                
  51.                 //获得信息
  52.                 LPVOID lpMsgBuf; //Windows will allocate
  53.                 ::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,0,ErrorCode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, 0, NULL );

  54.                 //显示
  55.                 ::MessageBox(0, (LPCTSTR)lpMsgBuf, _T("GetLastError"), MB_OK|MB_ICONINFORMATION );

  56.                 //释放内存
  57.                 ::LocalFree( lpMsgBuf );
  58.                 return FALSE;
  59.         }

  60.         //删除设备句柄
  61.         DeleteDC(hdcPrint);
复制代码

论坛徽章:
0
2 [报告]
发表于 2006-12-30 21:42 |只看该作者
顶一下~~~

论坛徽章:
0
3 [报告]
发表于 2006-12-30 21:46 |只看该作者
顶上去

论坛徽章:
0
4 [报告]
发表于 2006-12-31 10:47 |只看该作者
求救阿~~~~~~~~~~~~~~

论坛徽章:
0
5 [报告]
发表于 2006-12-31 10:51 |只看该作者
去CSDN问问
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP