📄 pr2driver.c
字号:
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 + -