⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 byprinter.cpp

📁 各种打印机通用程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// BYPrinter.cpp: implementation of the BYPrinter class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "BYPrinter.h"
#include "Comm.h"

//////////////////////////////////////////////////////////////////////
// DefineConstValue
//////////////////////////////////////////////////////////////////////

CCommDevice obj_ComCtrl;

#define   ESC_DANWEI     "\x1d\x50\xb4\xb4"
#define   ESC_DUANQIE    "\x1b\x69"
#define   ESC_LIANQIE    "\x1b\x69"
#define   ESC_HUANHANG   "\x0a"
#define   ESC_CHUSHIHUA  "\x1b\x40"
#define   ESC_JIANCE1    "\x10\x04\x01"
#define   ESC_JIANCE2    "\x10\x04\x02"
#define   ESC_JIANCE3    "\x10\x04\x03"
#define   ESC_JIANCE4    "\x10\x04\x04"
#define   ESC_MOHANGAO   "\x1b\x32"
#define   ESC_MOSHI1     "\x1d\x21\x00"
#define   ESC_MOSHI2     "\x1d\x21\x11"
#define   ESC_MOSHI3     "\x1d\x21\x22"
#define   ESC_MOSHI4     "\x1d\x21\x33"
#define   ESC_MOSHI5     "\x1d\x21\x44"
#define   ESC_MOSHI6     "\x1d\x21\x55"
#define   ESC_SELFONT  "\x1b\x4d\x01"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

BYPrinter::BYPrinter()
{
     
	memset(m_sz_wbuff,0,sizeof(m_sz_wbuff));
	memset(m_sz_rbuff,0,sizeof(m_sz_rbuff));
    m_b_comflag=false;

}

BYPrinter::~BYPrinter()
{

}

void BYPrinter::MYTRACE(char *fmt, ... )
{
        va_list ap;
		FILE *fp;

		CString fileName;
		//fileName.Format("%s\\log\\NTIE.log",devcfg.LocalPath);



		fileName.Format("c:\\MT532.log");

		fp = fopen(fileName,"a");
		if ( fp == NULL )
			return;


		//记录系统升级时间
		struct	tm	*ptm;
		long		clck;

		clck = time((long *)0);
		ptm=localtime(&clck);

		fprintf(fp,"[%d-%d-%d %02d:%02d:%02d] ",
			 ptm->tm_year+1900,
			 ptm->tm_mon+1,
			 ptm->tm_mday,
			 ptm->tm_hour,
			 ptm->tm_min,
			 ptm->tm_sec);


        va_start ( ap, fmt );

        vfprintf(fp, fmt, ap );
       
        va_end ( ap );
		fclose(fp);
}


/*********************************************************************
function:联结打印机
input:   portname-->通信端口 
         Baud-->通信速率
return:  0-->成功
         1-->开串口失败
		 2-->写串口失败
*********************************************************************/
int BYPrinter::byprinter_opn(char *portname, int Baud )
{
    
	obj_ComCtrl.PutTraceFile("byp_comm",1) ;
	memset(m_sz_wbuff,0,sizeof(m_sz_wbuff));
	memset(m_sz_rbuff,0,sizeof(m_sz_rbuff));
	DCB dcb;
	if(!m_b_comflag)
    {
	   dcb.DCBlength = sizeof( DCB );
	   //GetCommState( hCom, &dcb );

	   dcb.BaudRate = Baud;
	   dcb.ByteSize = 8;
	   dcb.Parity = NOPARITY;
	   dcb.StopBits = ONESTOPBIT;

	   dcb.fOutxDsrFlow = false;				// true or false
	   dcb.fDtrControl = DTR_CONTROL_ENABLE;	// DTR_CONTROL_HANDSHAKE
	   dcb.fOutxCtsFlow = false;				// true or false
	   dcb.fRtsControl = RTS_CONTROL_ENABLE;	// RTS_CONTROL_HANDSHAKE

	   dcb.fInX = dcb.fOutX =false;
	   dcb.XonChar = 0x11;		//ASCII_XON ;
	   dcb.XoffChar = 0x13;	//ASCII_XOFF ;
	   dcb.XonLim = 100;
	   dcb.XoffLim = 100;
	
	// other various settings
	   dcb.fBinary = TRUE;
	   dcb.fParity = TRUE;
       if(!obj_ComCtrl.Open(portname,&dcb))  
	   {
		   m_b_comflag=false;
		   return 1;
	   }
	   m_b_comflag=true;
	}
	if(!obj_ComCtrl.Write(ESC_CHUSHIHUA,2))
	{
		obj_ComCtrl.Close();
		m_b_comflag=false;
		return 2;
	}
/*del by zrz
	MYTRACE("set font");
	if(!obj_ComCtrl.Write(ESC_SELFONT,3))
	{
		obj_ComCtrl.Close();
		m_b_comflag=false;
		return 2;
	}
*/
	return 0;
}
/*********************************************************************
function:关闭打印机
*********************************************************************/
void BYPrinter::byprinter_cls(void)
{
	 if(m_b_comflag)
	 {
        obj_ComCtrl.Close();
	    m_b_comflag=false;
	 }
}


/*********************************************************************
function:检查打印机状态
input:   RetVal-->用于存放检查结果的BYTE型数组或指针
return:  0-->成功
         1-->出错
*********************************************************************/
int BYPrinter::byprinter_chk(BYTE *RetVal)
{
	int rlen=0;
    memset(m_sz_wbuff,0,sizeof(m_sz_wbuff));
	memset(m_sz_rbuff,0,sizeof(m_sz_rbuff));
	if(!m_b_comflag)
        return 1;
/////////////////////////////

	MYTRACE("now write\n");

	if(!obj_ComCtrl.Write(ESC_JIANCE1,3))
	{
        obj_ComCtrl.Close();
		m_b_comflag=false;
		return 1;
	}




    rlen=obj_ComCtrl.ReadComm(m_sz_rbuff,1024,3000,300);

	MYTRACE("rlen = [%d]   m_sz_rbuff = [%d]\n",rlen,m_sz_rbuff[0]);

	if(rlen!=0)
	{
	   RetVal[0]=m_sz_rbuff[0];
	   memset(m_sz_rbuff,0,sizeof(m_sz_rbuff)); 
       rlen=0;
	}
	else
	   return 1;
/////////////////////////////
	if(!obj_ComCtrl.Write(ESC_JIANCE2,3))
	{
        obj_ComCtrl.Close();
		m_b_comflag=false;
		return 1;
	}
    rlen=obj_ComCtrl.ReadComm(m_sz_rbuff,1024,3000,300);
	
	MYTRACE("rlen = [%d]   m_sz_rbuff = [%d]\n",rlen,m_sz_rbuff[0]);


	if(rlen!=0)
	{
	   RetVal[1]=m_sz_rbuff[0];
	   memset(m_sz_rbuff,0,sizeof(m_sz_rbuff)); 
       rlen=0;
	}
	else
	   return 1;
/////////////////////////////
	if(!obj_ComCtrl.Write(ESC_JIANCE3,3))
	{
        obj_ComCtrl.Close();
		m_b_comflag=false;
		return 1;
	}
    rlen=obj_ComCtrl.ReadComm(m_sz_rbuff,1024,3000,300);
	
	MYTRACE("rlen = [%d]   m_sz_rbuff = [%d]\n",rlen,m_sz_rbuff[0]);

	if(rlen!=0)
	{
	   RetVal[2]=m_sz_rbuff[0];
	   memset(m_sz_rbuff,0,sizeof(m_sz_rbuff)); 
       rlen=0;
	}
	else
	   return 1;
/////////////////////////////
	if(!obj_ComCtrl.Write(ESC_JIANCE4,3))
	{
        obj_ComCtrl.Close();
		m_b_comflag=false;
		return 1;
	}
    rlen=obj_ComCtrl.ReadComm(m_sz_rbuff,1024,3000,300);
	if(rlen!=0)
	{
	   RetVal[3]=m_sz_rbuff[0];
	   memset(m_sz_rbuff,0,sizeof(m_sz_rbuff)); 
       rlen=0;
	}
	else
	   return 1;

	return 0;
}
/*********************************************************************
function:初始化打印机
return:  0-->成功
         1-->失败
*********************************************************************/
int BYPrinter::byprinter_int(void)
{
	memset(m_sz_wbuff,0,1024);
	if(!m_b_comflag) return 1;
    if(!obj_ComCtrl.Write(ESC_CHUSHIHUA,2))
	{
        obj_ComCtrl.Close();
		m_b_comflag=false;
		return 1;
	}
/*del by zrz    if(!obj_ComCtrl.Write(ESC_DANWEI,4))
	{
        obj_ComCtrl.Close();
		m_b_comflag=false;
		return 1;
	}
	*/
	return 0;
}
/*********************************************************************
function:设置横向和纵向移动单位
input:   x-->横向位置单位
         y-->纵向位置单位
return:  0-->成功
         1-->失败
*********************************************************************/
int BYPrinter::byprinter_pdw(int x,int y)
{
	memset(m_sz_wbuff,0,1024);
	if(!m_b_comflag) return 1;
	m_sz_wbuff[0]=0x1d;
	m_sz_wbuff[1]=0x50;
	m_sz_wbuff[2]=x;
	m_sz_wbuff[3]=y;
/*del by zrz
    if(!obj_ComCtrl.Write(m_sz_wbuff,4))
	{
        obj_ComCtrl.Close();
		m_b_comflag=false;
		return 1;
	}
*/
    return 0;
}
//////////////////////////////////////////////////////////////////////
//驱动函数
//////////////////////////////////////////////////////////////////////
/*********************************************************************
function:以指定的切纸方式切纸
input:   cutmod=0-->全切
               =1-->半切
return:  0-->成功
         1-->失败
*********************************************************************/
int BYPrinter::byprinter_cut(int cutmod)
{
	int i=0;
    memset(m_sz_wbuff,0,sizeof(m_sz_wbuff));
	if(!m_b_comflag)
		return 1;
	Sleep(500);
/*zrz del	while(i<=5)
	{
        if(!obj_ComCtrl.Write(ESC_HUANHANG,1))
		{
	        obj_ComCtrl.Close();
		    m_b_comflag=false;
	        return 1;
		}
		i++;
	}
*/	switch(cutmod)
	{
        case 0:
		     if(!obj_ComCtrl.Write(ESC_DUANQIE,2))
			 {
			     obj_ComCtrl.Close();
			     m_b_comflag=false;
				 MYTRACE("全切ERR");
			     return 1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -