📄 prntmain.c
字号:
prntArabiaOneLine(TXT_TYPE_NOTE, 1);
str_cat(s_ucprntTSDataBuffer,temptemp);
str_cat(s_ucprntTSDataBuffer,temptemp);
bspTSPrntData(&s_ucprntTSDataBuffer[0], str_len(s_ucprntTSDataBuffer), 32, 0);
return (ET_prntGetState());
}
/*
**********************************************************
*
* 函数名:prntTSPutDataToBuff
*
* 功 能:热敏打印数据存放打印缓存
*
* 输 入:无
*
* 输 出:s_ucprntTSDataBuffer
* s_ucprntDataBuffDataIn
*
* 返 回:无
*
***********************************************************
*/
void prntTSPutDataToBuff
(
UINT1 * _pAdrress, /* [in]数据起始地址 */
UINT1 _Lenth /* 数据长度 */
)
{
mem_cpy((UINT1 *)(s_ucprntTSDataBuffer + s_ucprntDataBuffDataIn), _pAdrress, _Lenth);
s_ucprntDataBuffDataIn += _Lenth;
return;
}
/*
**********************************************************
*
* 函数名:prntDotPrintHZlib
*
* 功 能:针式打印打印汉字库,实现一组数据的打印操作
*
* 输 入:g_ucprinterState
*
* 输 出:无
*
* 返 回:FAULT 处理失败
* SUCCESS 处理成功
*
***********************************************************
*/
INT1 prntDotPrintHZlib
(
UINT1 *_pData, /* [in]待打印数据 */
UINT1 _ucLength /* 数据包长度 */
)
{
UINT1 i;
if (_ucLength == 0)
{
return FAULT;
}
if (g_ucprntState&0x0f)
{
g_ucMsgBuffer[0] = 0;
g_ucMsgBuffer[1] = g_ucprntState;
return FAULT;
}
g_ucprntLinePrinted = 0;
for (i = 0; i < _ucLength; i ++)
{
if (_pData[i] == PRINTCOM)
{
bspDotprntAndNewline(1, 24);
}
else
{
bspDotprntPutDataToBuff (&_pData[i], 1);
}
}
/* 穿孔进纸50步,确保打印纸顺利送出 */
bspDotPrntPFLineSpace (1, 50);
g_ucMsgBuffer[0] = g_ucprntLinePrinted;
g_ucMsgBuffer[1] = g_ucprntState;
return SUCCESS;
}
/*
***********************************************************
*
* 函数名:prntTSPrintHZlib
*
* 功 能:热敏打印打印汉字库,实现一组数据的打印操作
*
* 输 入:g_ucPrinterLineSpace
*
* 输 出:无
*
* 返 回:FAULT 处理失败
* SUCCESS 处理成功
*
************************************************************
*/
INT1 prntTSPrintHZlib
(
UINT1 *_pData, /* [in]待打印数据 */
UINT1 _ucLength /* 数据包长度 */
)
{
if (_ucLength == 0)
{
return FAULT;
}
ET_prntGetState();
if (g_ucprntState &0x0f)
{
g_ucMsgBuffer[0] = 0;
g_ucMsgBuffer[1] = g_ucprntState;
return FAULT;
}
g_usTSPrintedLine = 0;
/* 调用热敏打印函数完成数据打印 */
bspTSPrntData(_pData, _ucLength, g_ucPrinterLineSpace, 0);
/* 向维护模块返回打印结果 */
g_ucMsgBuffer[0] = g_usTSPrintedLine/g_ucPrinterLineSpace;
g_ucMsgBuffer[1] = g_ucprntState;
return SUCCESS;
}
INT1 prntTSHZTest(void)
{
UINT1 temp[198];
UINT1 i,m;
UINT1 j,k,line;
m = 0;
line = '0';
j = 0;
mem_set(temp, 0 , 198);
for (k = 0x20; k < 0x7F; k++ )
{
temp[j++] = k;
}
prntTest(temp,(0x7F-0x20),1);
while (1)
{
mem_set(temp, 0 , 198);
j = 0;
for (k = 0; k < 5; k++ )
{
for (i = 0; i < 16; i ++)
{
temp[j] = 0xb0 + m;
temp[j+1] = 0xa1 + 16*k + i;
if (i == 15)
{
temp[j] = line++;temp[j+1] =0x20;
if (line >= 0x3a)
line = 0x30;
}
if (temp[j+1]==0xfe)
{
m ++;
}
j = j + 2;
if ((0xb0 + m) > 0xf7)
return SUCCESS;
}
}
prntTest(temp,161,1);
}
}
/*
**************************************************
*
* 函数名:prntTest
*
* 功 能:维护模块打印测试函数
*
* 输 入:无
*
* 输 出:无
*
* 返 回:FAULT 打印失败
* SUCCESS 打印成功
**************************************************
*/
INT1 prntTest
(
UINT1 *_pData, /* [in]待打印数据 */
UINT1 _ucLength, /* 数据包长度 */
UINT1 _ucPrinterType /* 打印机类型(0穿孔、1热敏)*/
)
{
UINT1 i;
INT1 ucState;
ET_prntGetState();
if (g_ucprntState & 0x0f)
{
return g_ucprntState;
}
if(PRINTER_TYPE) /* 穿孔机芯 */
{
for (i = 0; i < _ucLength; i ++)
{
if (_pData[i] == PRINTCOM)
{
bspDotprntAndNewline(1, 24);
}
else
{
bspDotprntPutDataToBuff (&_pData[i], 1);
}
}
}
else
{
bspTSPrntData(_pData, _ucLength, 32, 0);
}
ucState = ET_prntGetState();
if (0 == (ucState & 0x0f))
{
return SUCCESS;
}
else
{
return FAULT;
}
}
/*
**********************************************************
*
* 函数名:prntSendMsgToMntn
*
* 功 能:向维护模块发送打印状态消息
*
* 输 入:g_ucMsgBuffer
*
* 输 出:无
*
* 返 回:ucRet
*
***********************************************************
*/
UINT1 prntSendMsgToMntn(void)
{
UINT1 ucRet;
PrntResMsg.id = MSG_MNTN_PRINT_STATE_PRNT;
PrntResMsg.len = 2;
PrntResMsg.p = g_ucMsgBuffer;
PrntResMsg.sign = 1;
ucRet = OSQPost(pMntnQEvent,(void *)&PrntResMsg);
return ucRet;
}
/*
**************************************************
*
* 函数名:prntAdjustPrintMode
*
* 功 能:穿孔打印效果调节模式
*
* 输 入:g_ucprntAdjustLevel
*
* 输 出:无
*
* 返 回:0 打印机正常
* -1 打印机缺纸
* -2 打印机机械故障
*
**************************************************
*/
INT1 prntAdjustPrintMode (void)
{
UINT1 ucTemplen, i;
UINT1 temp;
UINT1 ucTempbuff[5];
const char *PhaseItemChar[] =
{
"多业务电子交易终端针式打印机打印效果补偿,请选择设定最佳效果的调节等级", /*0*/
"调节等级:", /*1*/
"欢迎您使用打印效果调节功能", /*2*/
"0", /*3*/
"1", /*4*/
"2", /*5*/
"3", /*6*/
"4", /*7*/
"5", /*8*/
"6", /*9*/
"7", /*10*/
"8", /*11*/
"当前的调节等级是:" /*12*/
};
ET_prntGetState();
g_ucPrinterLineSpace = 24;
temp = g_ucprntAdjustLevel;
ucTemplen = str_len ((UINT1 *)PhaseItemChar[2]);
bspDotprntPutDataToBuff(( UINT1 *)PhaseItemChar[2], ucTemplen);
bspDotprntAndNewline(1, 24);
ET_prntGetState();
ucTemplen = str_len ((UINT1 *)PhaseItemChar[12]);
bspDotprntPutDataToBuff(( UINT1 *)PhaseItemChar[12], ucTemplen);
ucTemplen = s_printf ((UINT1 *)ucTempbuff, (UINT1 *)"%u", ( UINT2 )temp );
bspDotprntPutDataToBuff ( ucTempbuff,ucTemplen);
bspDotprntAndNewline(1, 24);
ET_prntGetState();
for ( i = 0; i < 8; i ++ )
{
/* 打印调整步数 */
g_ucprntAdjustLevel = i;
g_ucPrinterLineSpace = 24;
ucTemplen = str_len ((UINT1 *)PhaseItemChar[1]);
bspDotprntPutDataToBuff ((UINT1 *)PhaseItemChar[1], ucTemplen);
ucTemplen = str_len ((UINT1 *)PhaseItemChar[3 + i]);
bspDotprntPutDataToBuff ((UINT1 *)PhaseItemChar[3 + i], ucTemplen);
bspDotprntAndNewline(1, 24);
ET_prntGetState();
/* 打印中文 */
ucTemplen = str_len ((UINT1 *)PhaseItemChar[0]);
bspDotprntPutDataToBuff ((UINT1 *)PhaseItemChar[0], ucTemplen);
bspDotprntAndNewline(1, 24);
ET_prntGetState();
}
g_ucprntAdjustLevel = temp;
bspDotprntAndNewline(1, 100);
return g_ucprntState;
}
/*
**********************************************************
*
* 函数名:prntFeedPaper
*
* 功 能:按键进纸函数
*
* 输 入:无
*
* 输 出:无
*
* 返 回:无
*
**********************************************************
*/
void prntFeedPaper (void)
{
if (bspTimer1GetSta() == 1)
{
return; /* 定时器1资源被占用 */
}
else
{
if (!PRINTER_TYPE)
{
if (bspTsResponseKey()==0)
{
/* 热敏单步进纸距离为4mm */
bspTSPrntPFLineSpace (1, 32*4);
}
}
else
{
/* 穿孔打印单步进纸距离4.23mm */
bspDotPrntPFLineSpace (1, 24);
}
bspTimer1NotUse();/* 清除定时器1占用标志 */
}
}
/*
**********************************************************
*
* 函数名:prntFeedBackPaper
*
* 功 能:按键退纸函数
*
* 输 入:无
*
* 输 出:无
*
* 返 回:无
*
***********************************************************
*/
void prntFeedBackPaper (void)
{
if (bspTimer1GetSta() == 1)
{
return;/* 定时器1资源被占用 */
}
else
{
/* 占用定时器1资源 */
if (!PRINTER_TYPE)
{
if (bspTsResponseKey()==0)
{
bspTSPrntPFLineSpace (0, 32*4);
}
}
else
{
bspDotPrntPFLineSpace (0, 24);
}
bspTimer1NotUse(); /* 清除定时器1占用标志 */
}
}
/*
***********************************************************
*
* 函数名: prntDealPowerOff
*
* 功能: 处理关机和掉电
*
* 输入: 无
*
* 输出: 无
*
* 返回: SUCCESS 成功
*
***********************************************************
*/
INT1 prntDealPowerOff(void)
{
/* 发送消息给主控模块 安全退出 */
OSQPost(pSyscQEvent, (void *)MSG_SYSC_QUIT_PRNT);
/* 挂起本任务 */
OSTaskSuspend(TASK_PRNT_PRIO);
return SUCCESS;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -