?? comprn.cpp
字號:
#include "stdafx.h"
#include "ComPrn.h"
#include "Pr2Comm.h"
extern int bOKI;
CommandStru PR2Comm[PRCOMM_NUM]={
{"\x1bw1",0}, //倍高
{"\x1bw0",0}, //取消倍高
{"\x1b(",0}, //設置黑體
{"\x1b)",0}, //取消黑體
{"\x1b\x61",1}, //設置字距
{"\x1b<",0}, //10CPI
{"\x1b=",0}, //12CPI
{"\x1bJ",3}, //設置左邊距
{"\x1b&",2}, //設定行距
{"\x1bT",3}, //設定頁頂距
{"\x1bQ",3}, //設定頁面長度
{"\x1bL",3}, //絕對行定位
{"\x1bI",3}, //相對列定位
{"\x1bH",3}, //絕對列定位
{"\x1b\x21\x20",3}, //相對列定位
{"\x1bn",0}, //olivetti打印方式
{"\x1bS5",0}, //存折打印方式
{"\x1bl",0}, //清除錯誤
{"\x1b\x30",0}, //總清
// {"\x1b.\x1bUn",0}, //進紙
{"\x1b.",0}, //自動操作請求
{"\x1bU",1}, //進紙
{"\x1bO",0}, //出紙
{"\x1bj",0}, //狀態查詢
{"\x1b#0",0}, //絕對行定位以頁首為基準
{"\x1b#1",0}, //絕對行定位以頁頂距為基準
{"\x1bZ",0}, //設定頁底
{"\x1b\x33",0}, //設置倍寬
{"\x1b\x34",0}, //取消倍寬
{"\x1b+"}, //清除上下劃線打印
{"\x1b*",1}, //上下劃線打印
{"\x1b[",3}, //選擇字符集
////////////////////////////////////////////////////////
{"\x1b^1",0}, //設置/取消OKI打印方式,設置時可完成進紙操作
{"\x1b\x25\x39\x30",1}, //OKI設置行距
{"\x1b\x5b",0}, //OKI設置倍高
{"\x1b\x5d",0}, //OKI取消倍高
{"\x1b\x3c",0}, //OKI水平壓縮
{"\x1b\x3e",0} //OKI取消水平壓縮
};
int (*Pr2Fun[])(void)={
Pr2SetDoubleHigh,
Pr2SetNormal,
Pr2SetBlack,
Pr2SetStandard,
Pr2SetWordSpace,
Pr2Set10CPI,
Pr2Set12CPI,
Pr2SetLeft,
Pr2SetLineSpace,
Pr2SetPageTop,
Pr2SetPageLen,
Pr2GotoRow,
Pr2LineIn,
// Pr2MultiSpace,
Pr2GotoCol,
Pr2MultiSpace,
Pr2SetOlivetti,
Pr2SetPassbook,
Pr2ClearError,
Pr2ClearAll,
Pr2AutoWork,
Pr2PaperIn,
Pr2PaperOut,
Pr2AskStatus,
Pr2SetTopOff,
Pr2SetTopOn,
Pr2SetPageTail,
Pr2SetDoubleWidth,
Pr2SetNormalWidth,
Pr2ClearLine,
Pr2SetLine,
Pr2SetCharset,
SetOKIPrinter,
SetOKILineSpace,
Pr2SetDoubleHigh,
Pr2SetNormal,
Pr2AutoWork,
Pr2AutoWork
};
int g_nCommNo=1;
extern int gPr2Para;
pPR2Node pPr2CurrNode;
extern pPR2Node pPR2Head;
extern char Pr2CurrComm[128];
int AddPR2Comm(pPR2Node pHead,CommandStru Pr2Comm)
{
unsigned int i;
pPR2Node pParent,pSon,pNew;
pParent=pHead;
for (i=0;i<strlen(Pr2Comm.CommandLine );i++)
{
if (pParent->pLeft==NULL) //無子節點
{
//
pNew=(pPR2Node)malloc(sizeof(PR2Node));
pNew->pLeft=NULL;
pNew->pRight=NULL;
pNew->Value=Pr2Comm.CommandLine[i];
pNew->Type=0;
pNew->ParaLen =Pr2Comm.ParaLen ;
//根據判斷得CommNo
if (i==strlen(Pr2Comm.CommandLine)-1)
{
pNew->CommNo=g_nCommNo;
g_nCommNo++;
}
else
pNew->CommNo=0;
pParent->pLeft =pNew;
pParent=pNew;
}
else //有節點
{
pSon=pParent->pLeft;
while(pSon->pRight !=NULL && pSon->Value !=Pr2Comm.CommandLine[i])
pSon=pSon->pRight;
if (pSon->Value !=Pr2Comm.CommandLine[i])
{
pNew=(pPR2Node)malloc(sizeof(PR2Node));
pNew->pLeft=NULL;
pNew->pRight=NULL;
pNew->Value=Pr2Comm.CommandLine[i];
pNew->Type=0;
pNew->ParaLen =Pr2Comm.ParaLen ;
//根據判斷得CommNo
if (i==strlen(Pr2Comm.CommandLine)-1)
{
pNew->CommNo=g_nCommNo;
g_nCommNo++;
}
else
pNew->CommNo=0;
pSon->pRight =pNew;
pParent=pNew;
}
else
pParent=pSon;
}
}
return 0;
}
int CreatePR2Tree(pPR2Node pHead)
{
int i;
for (i=0; i<PRCOMM_NUM; i++)
AddPR2Comm( pHead, PR2Comm[i]);
return 0;
}
int TranPR2Comm(pPR2Node pHead, char * szCommand, int * CommLen)
{
pPR2Node pParent=NULL;
// int ParaLen,i;
char szParaBuf[10];
if (szCommand[0]==0x00)
{
pPr2CurrNode=pHead;
return 0;
}
if (pHead==NULL)
{
pPr2CurrNode=pPR2Head;
return 1;
}
pParent=pHead->pLeft ;
(*CommLen)++;
Pr2CurrComm[strlen(Pr2CurrComm)]=szCommand[0];
while (pParent->Value != szCommand[0] && pParent->pRight != NULL)
pParent=pParent->pRight ;
if (pParent->Value != szCommand[0] )
{
pPr2CurrNode=pPR2Head;
return 1;
}
else
{
if (pParent->CommNo ==0)
return TranPR2Comm(pParent,szCommand+1,CommLen);
else
{
if (pParent->ParaLen !=0)
{
// char ParaBuf[5];
memset(szParaBuf,0x00,sizeof(szParaBuf));
memcpy(szParaBuf,szCommand+1,pParent->ParaLen );
if (bOKI==0)
gPr2Para=atoi(szParaBuf);
else
gPr2Para=(unsigned char)szParaBuf[0];
(*CommLen)+=pParent->ParaLen ;
}
Pr2Fun[pParent->CommNo -1]();
pPr2CurrNode=pPR2Head;
return 0;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -