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

📄 pr2driver.c

📁 hid类主机对打印机操作的应用例程
💻 C
📖 第 1 页 / 共 5 页
字号:
		for(;time(NULL)-ltime<PR2DRIVER(iIoTimeout);)
		{
			PR2DRIVER(WriteComm)(PR2DRIVER(ClearErr),strlen(PR2DRIVER(ClearErr)));
	 		if((status=PR2DRIVER(checkInputPaper)())) 
			{
				PR2DRIVER(WriteComm)(PR2DRIVER(ClosePrt),strlen(PR2DRIVER(ClosePrt)));
				PR2DRIVER(WriteComm)(PR2DRIVER(OpenPrt) ,strlen(PR2DRIVER(OpenPrt) ));
				PR2DRIVER(WriteComm)(PR2DRIVER(ClearErr)   ,strlen(PR2DRIVER(ClearErr)   ));
				usleep(100);					
				continue;
			}
			else if(status==0)	
				break;				
				
		}
		PR2DRIVER(WriteComm)(PR2DRIVER(ClearErr),strlen(PR2DRIVER(ClearErr)));
		if(strlen(pPageTopMargin)==0)
			PR2DRIVER(WriteComm)(PR2DRIVER(PageTopMargin),strlen(PR2DRIVER(PageTopMargin)));
		else
		{
			if(pPageTopMargin == NULL)
				return -2;
			for(i=0; i<strlen(pPageTopMargin); i++)
			{
				ch = *(pPageTopMargin+i);
				if(ch<'0'||ch>'9')
					return -3;
			}

			i= atoi(pPageTopMargin);
			if((i<0)||i>999)
				return -3;
			pPageTopMargin = (char*)malloc(6);
			memset (pPageTopMargin,0,6);
			sprintf(pPageTopMargin,"\x1bT%03d",i);
			PR2DRIVER(WriteComm)(pPageTopMargin,strlen(pPageTopMargin));
			if(PR2DRIVER(checkPrtAnswerState)()!=0)
				return -1;
				free(pPageTopMargin);
		}

		/********GBK	2001.12.07**************/
		PR2DRIVER(WriteComm)(PR2DRIVER(ToGBK),strlen(PR2DRIVER(ToGBK)));
		/***************************************/
		PR2DRIVER(WriteComm)(LinePI, strlen(LinePI));
		PR2DRIVER(WriteComm)(PR2DRIVER(LineLocation),strlen(PR2DRIVER(LineLocation)));//实际上进纸指令
		if(PR2DRIVER(checkPrtAnswerState)())
		{
			PR2DRIVER(WriteComm)(PR2DRIVER(Reset)    ,strlen(PR2DRIVER(Reset)));				
			PR2DRIVER(WriteComm)(PR2DRIVER(ClosePrt),strlen(PR2DRIVER(ClosePrt)));
			continue;
		}
		else
			break;
	}
	PR2DRIVER(WriteComm)(PR2DRIVER(PrtCmd)[5].Cmd,strlen(PR2DRIVER(PrtCmd)[5].Cmd));//正常字体
	PR2DRIVER(WriteComm)("\x1b#0",3);
	if(PR2DRIVER(vTPrtStateCheck)()!=0)
		return -2;
	PR2DRIVER(WriteComm)(PR2DRIVER(Cpi)    ,strlen(PR2DRIVER(Cpi)    ));		//_PR2DRIVER_CPI%03d _PR2DRIVER_ESC a 3

	PR2DRIVER(WriteComm)(PR2DRIVER(NewLine),strlen(PR2DRIVER(NewLine)));
	PR2DRIVER(WriteComm)(PR2DRIVER(ClearErr),strlen(PR2DRIVER(ClearErr)));
	PR2DRIVER(WriteComm)(PR2DRIVER(NewLine),strlen(PR2DRIVER(NewLine)));

	return 0;
}
int PR2DRIVER(inP)(char *LinePI){
	return PR2DRIVER(inPutPaper)("", LinePI);

}

int PR2DRIVER(ParseMacro)(const char* macro){
	char seps[] = " ";

	#ifdef _DEBUG_PR2DRIVER
		PR2DRIVER(print)("macro is ",0);
		PR2DRIVER(print)((char*)macro,0);	
	#endif
	if(OLIVETTI_TO_OKI==0){
		if(strlen(macro)==0)
			return _PR2DRIVER_CMDNUM;
		   
		if(strcmp(macro,"CR"       )==0)  /************回车***************/
			return _PR2DRIVER_CR;
		else if(strcmp(macro,"LF"       )==0)  /************换行***************/
			return _PR2DRIVER_LF;
		else if(strcmp(macro,"FF"       )==0)  /************退纸***************/ 
			return _PR2DRIVER_FF;
		else if(strcmp(macro,"DUHEIGHT" )==0)  /************倍高***************/
			return _PR2DRIVER_DUHEIGHT;
		else if(strcmp(macro,"BOLDFONT" )==0)  /************黑体***************/  
			return _PR2DRIVER_BOLDFONT;
		else if(strcmp(macro,"NORMFONT" )==0)  /**********正常字体*************/
			return _PR2DRIVER_NORMFONT;
		else if(strcmp(macro,"CPI"      )==0)  /***********设置列距************/
			return _PR2DRIVER_CPI;
		else if(strcmp(macro,"LPI"      )==0)  /**********设置行距*************/
			return _PR2DRIVER_LPI;
		else if(strcmp(macro,"TOPMARGIN")==0)  /**********设置页顶距***********/
			return _PR2DRIVER_TOPMARGIN;
		else if(strcmp(macro,"PAGELEN"  )==0)  /***********设置页长************/
			return _PR2DRIVER_PAGELEN; 
		else if(strcmp(macro,"ABSROW"   )==0)  /**********设置绝对行***********/ 
			return _PR2DRIVER_ABSROW;
		else if(strcmp(macro,"RLTROW"   )==0)  /**********设置相对行***********/ 
			return _PR2DRIVER_RLTROW;
		else if(strcmp(macro,"ABSCOL"   )==0)  /*********设置绝对列************/ 
			return _PR2DRIVER_ABSCOL;
		else if(strcmp(macro,"RLTCOL"   )==0)  /*********设置相对列************/  
			return _PR2DRIVER_RLTCOL;
		else if(strcmp(macro,"PAUSE"    )==0)  /**********暂停打印*************/
			return _PR2DRIVER_PAUSE;
		else if(strcmp(macro,"NOPAUSE"  )==0)  /***********恢复打印*************/
			return _PR2DRIVER_NOPAUSE;
		else if(strcmp(macro,"PAGDETECT")==0)  /*******置检测纸边标志***********/
			return _PR2DRIVER_PAGDETECT;
		else if(strcmp(macro,"NOPAGDETECT")==0)/******取消置检测纸边标志********/
			return _PR2DRIVER_NOPAGDETECT;
		else if(strcmp(macro,"DUWIDTH"    )==0)/*************倍宽***************/
			return _PR2DRIVER_DUWIDTH;
		else if(strcmp(macro,"NODUWIDTH"  )==0)/***********取消倍宽*************/
			return _PR2DRIVER_NODUWIDTH;
		else if(strcmp(macro,"NODUHEIGHT" )==0)/***********取消倍高*************/
			return _PR2DRIVER_NODUHEIGHT;
		else if(strcmp(macro,"DUHEIGHTWIDTH")==0)/*******倍高倍宽*************/
			return _PR2DRIVER_DUHEIGHTWIDTH;
		else if(strcmp(macro,"NODUHEIGHTWIDTH")==0)/*******取消倍高倍宽*********/
			return _PR2DRIVER_NODUHEIGHTWIDTH;
		else if(strcmp(macro,"NOBOLDFONT")==0)/**************取消黑体***********/
			return _PR2DRIVER_NOBOLDFONT;
		else if(strcmp(macro,"RESET")==0)     /***************总清**************/
			return _PR2DRIVER_RESET;
	//		else if(strcmp(macro,"AUTOOPRT")==0)  /************赋予自动操作*********/
	//			return _PR2DRIVER_AUTOOPRT;
	//		else if(strcmp(macro,"OLIVETTI")==0)  /**********设置_PR2DRIVER_OLIVETTI方式*******/
	//			return _PR2DRIVER_OLIVETTI;
	//		else if(strcmp(macro,"OPRREQ")==0)  /**********设置操作员请求***********/
	//			return _PR2DRIVER_OPRREQ;
		else if(strcmp(macro,"TRIWIDTH")==0)/**********设置三倍宽打印***********/
			return _PR2DRIVER_TRIWIDTH;
		else if(strcmp(macro,"NOTRIWIDTH")==0)/********取消三倍宽打印***********/
			return _PR2DRIVER_NOTRIWIDTH;
		else if(strcmp(macro,"UNDERLINE")==0)/**********设置下划线**************/
			return _PR2DRIVER_UNDERLINE;
		else if(strcmp(macro,"NOUNDERLINE")==0)/********取消下划线***************/
			return _PR2DRIVER_NOUNDERLINE;
		else if(strcmp(macro,"INIT")==0)       /********初始化操作***************/
			return _PR2DRIVER_INIT;
		else if(strcmp(macro,"INP")==0)        /********进纸指令***************/
			return _PR2DRIVER_INP;
		else if(strcmp(macro,"COMPRESS")==0)   /********水平压缩***************/
			return _PR2DRIVER_COMPRESS;
		else if(strcmp(macro,"OLIVETTI_TO_OKI")==0)   /********转换成Oki仿真***************/
			return _PR2DRIVER_OLIVETTI_TO_OKI;
	}else{
		if(strlen(macro)==0)
			return _OKI_CMDNUM;
		if(     strcmp(macro,"CR"       )==0)  /************回车***************/
			return _OKI_CR;
		else if(strcmp(macro,"LF"       )==0)  /************换行***************/
			return _OKI_LF;
		else if(strcmp(macro,"FF"       )==0)  /************退纸***************/ 
		 return _OKI_FF;
		else if(strcmp(macro,"DUHEIGHT" )==0)  /************倍高***************/
			return _OKI_DUHEIGHT;
		else if(strcmp(macro,"BOLDFONT" )==0)  /************黑体***************/  
			return _OKI_BOLDFONT;
		else if(strcmp(macro,"NORMFONT" )==0)  /**********正常字体*************/
			return _OKI_NORMFONT;
		else if(strcmp(macro,"CPI"      )==0)  /***********设置列距************/
			return _OKI_CPI;		
		else if(strcmp(macro,"LPI"      )==0)  /**********设置行距*************/
			return _OKI_LPI;
		else if(strcmp(macro,"TOPMARGIN")==0)  /**********设置页顶距***********/
			return _OKI_TOPMARGIN;
		else if(strcmp(macro,"PAGELEN"  )==0)  /***********设置页长************/
			return _OKI_PAGELEN; 
		else if(strcmp(macro,"ABSROW"   )==0)  /**********设置绝对行***********/ 
			return _OKI_ABSROW;
		else if(strcmp(macro,"RLTROW"   )==0)  /**********设置相对行***********/ 
			return _OKI_RLTROW;
		else if(strcmp(macro,"ABSCOL"   )==0)  /*********设置绝对列************/ 
			return _OKI_ABSCOL;
		else if(strcmp(macro,"RLTCOL"   )==0)  /*********设置相对列************/  
			return _OKI_RLTCOL;
		else if(strcmp(macro,"PAUSE"    )==0)  /**********暂停打印*************/
			return _OKI_PAUSE;
		else if(strcmp(macro,"NOPAUSE"  )==0)  /***********恢复打印*************/
			return _OKI_NOPAUSE;
		else if(strcmp(macro,"PAGDETECT")==0)  /*******置检测纸边标志***********/
			return _OKI_PAGDETECT;
		else if(strcmp(macro,"NOPAGDETECT")==0)/******取消置检测纸边标志********/
			return _OKI_NOPAGDETECT;
		else if(strcmp(macro,"DUWIDTH"    )==0)/*************倍宽***************/
			return _OKI_DUWIDTH;
		else if(strcmp(macro,"NODUWIDTH"  )==0)/***********取消倍宽*************/
			return _OKI_NODUWIDTH;
		else if(strcmp(macro,"NODUHEIGHT" )==0)/***********取消倍高*************/
			return _OKI_NODUHEIGHT;
		else if(strcmp(macro,"DUHEIGHTWIDTH")==0)/*******倍高倍宽*************/
			return _OKI_DUHEIGHTWIDTH;
		else if(strcmp(macro,"NODUHEIGHTWIDTH")==0)/*******取消倍高倍宽*********/
			return _OKI_NODUHEIGHTWIDTH;
		else if(strcmp(macro,"NOBOLDFONT")==0)/**************取消黑体***********/
			return _OKI_NOBOLDFONT;
		else if(strcmp(macro,"RESET")==0)     /***************总清**************/
			return _OKI_RESET;
//		else if(strcmp(macro,"AUTOOPRT")==0)  /************赋予自动操作*********/
//			return _OKI_AUTOOPRT;
//		else if(strcmp(macro,"OLIVETTI")==0)  /**********设置_OKI_OLIVETTI方式*******/
//			return _OKI_OLIVETTI;
//		else if(strcmp(macro,"OPRREQ")==0)  /**********设置操作员请求***********/
//			return _OKI_OPRREQ;
		else if(strcmp(macro,"TRIWIDTH")==0)/**********设置三倍宽打印***********/
			return _OKI_TRIWIDTH;
		else if(strcmp(macro,"NOTRIWIDTH")==0)/********取消三倍宽打印***********/
			return _OKI_NOTRIWIDTH;
		else if(strcmp(macro,"UNDERLINE")==0)/**********设置下划线**************/
			return _OKI_UNDERLINE;
		else if(strcmp(macro,"NOUNDERLINE")==0)/********取消下划线***************/
			return _OKI_NOUNDERLINE;
		else if(strcmp(macro,"INIT")==0)       /********初始化操作***************/
			return _OKI_INIT;
		else if(strcmp(macro,"INP")==0)        /********进纸指令***************/
			return _OKI_INP;
		else if(strcmp(macro,"COMPRESS")==0)   /********水平压缩***************/
			return _OKI_COMPRESS;
		else if(strcmp(macro,"NOCOMPRESS")==0)   /********取消水平压缩***************/
			return _OKI_NOCOMPRESS;
	}

	return -1;
}

int PR2DRIVER(SetPropAndVal) (byte deviceType[],int length)
{
	int i;
	int status=0;
	int ret=-1;
	if(OLIVETTI_TO_OKI){
		return PR2DRIVER(OKI_SetPropAndVal)(deviceType,length);
	}


	if(PR2DRIVER(PrtCmd)[_PR2DRIVER_FF].OutCmdFlag)/*2  _PR2DRIVER_FF            退纸              */
	{
			
		PR2DRIVER(WriteComm)(PR2DRIVER(PrtCmd)[_PR2DRIVER_FF].Cmd,strlen(PR2DRIVER(PrtCmd)[_PR2DRIVER_FF].Cmd));
		PR2DRIVER(PrtCmd)[_PR2DRIVER_FF].OutCmdFlag=0;
		PR2DRIVER(prter).paper = 0;
		OLIVETTI_TO_OKI = 0 ;
		//PR2DRIVER(MsfRetBook)();
	}

	if(PR2DRIVER(PrtCmd)[_PR2DRIVER_INIT].OutCmdFlag)/*32  _PR2DRIVER_INIT        初始化操作        */
	{
		usleep(300);
		if((status=PR2DRIVER(inPutPaper)("", PR2DRIVER(PrtCmd)[_PR2DRIVER_INIT].Cmd))==0){
			PR2DRIVER(prter).paper = 1;
		}
		else if(status<0){
		#ifdef _DEBUG_PR2DRIVER
			PR2DRIVER(print)("status=PR2DRIVER(inPutPaper)("") =",status);	
		#endif
			return status;
		}
		else
			PR2DRIVER(prter).paper = 0;
			PR2DRIVER(PrtCmd)[_PR2DRIVER_INIT].Cmd[strlen(PR2DRIVER(PrtCmd)[_PR2DRIVER_INIT].Cmd) -2] = 0x00;
	}
		
	if(PR2DRIVER(PrtCmd)[_PR2DRIVER_INP].OutCmdFlag)/*33  _PR2DRIVER_INP        进纸指令           */
	{
		usleep(100);
		if((status=PR2DRIVER(inP)(PR2DRIVER(PrtCmd)[_PR2DRIVER_INP].Cmd))==0)
			PR2DRIVER(prter).paper = 1;
		else if(status<0)
			return status;
		else
			PR2DRIVER(prter).paper = 0;
		PR2DRIVER(PrtCmd)[_PR2DRIVER_INP].Cmd[strlen(PR2DRIVER(PrtCmd)[_PR2DRIVER_INP].Cmd) -2] = 0x00;
	}

	if(PR2DRIVER(PrtCmd)[_PR2DRIVER_RESET].OutCmdFlag)/*24  _PR2DRIVER_RESET        总清              */
	{
		PR2DRIVER(WriteComm)(PR2DRIVER(PrtCmd)[_PR2DRIVER_RESET].Cmd,strlen(PR2DRIVER(PrtCmd)[_PR2DRIVER_RESET].Cmd));
		PR2DRIVER(PrtCmd)[_PR2DRIVER_RESET].OutCmdFlag=0;
		PR2DRIVER(WriteComm)(PR2DRIVER(ClearErr) ,strlen(PR2DRIVER(ClearErr) ));
		PR2DRIVER(prter).paper = 0;
		usleep(300);
	}

	if(PR2DRIVER(PrtCmd)[_PR2DRIVER_OLIVETTI].OutCmdFlag)/*26  _PR2DRIVER_OLIVETTI   设置_PR2DRIVER_OLIVETTI操作   */
	{
		PR2DRIVER(WriteComm)(PR2DRIVER(PrtCmd)[_PR2DRIVER_OLIVETTI].Cmd,strlen(PR2DRIVER(PrtCmd)[_PR2DRIVER_OLIVETTI].Cmd));
		PR2DRIVER(PrtCmd)[_PR2DRIVER_OLIVETTI].OutCmdFlag=0;
		PR2DRIVER(WriteComm)(PR2DRIVER(ClearErr) ,strlen(PR2DRIVER(ClearErr) ));

⌨️ 快捷键说明

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