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

📄 prntmain.c

📁 基于ARM与μCOS-II的嵌入式操作系统实现针式和热敏微型打印程序.
💻 C
📖 第 1 页 / 共 3 页
字号:
	}
	else
	{
		if (g_ucPrinterLineSpace == 0)
		{
			g_ucPrinterLineSpace = 32;
		}
		/* 热敏打印点行数换算成已成功打印的行数 */
		g_ucMsgBuffer[0]= g_usTSPrintedLine/g_ucPrinterLineSpace;   
	} 
	g_ucprntState &= 0xEF;  /* 打印模块空闲 */
	g_ucMsgBuffer[1] = g_ucprntState;

	PrntResMsg.id = MSG_APP_STATE_PRNT;
	PrntResMsg.len = 2;             			
	PrntResMsg.p = g_ucMsgBuffer;
	PrntResMsg.sign = 1;
	if (_ucAppID == SYS_ID_APP1)
	{
		pQEvent = pApp1QEvent;
	}
	else if (_ucAppID == SYS_ID_APP2)
	{
		pQEvent = pApp2QEvent;
	}
	cRet = OSQPost(pQEvent,(void *)&PrntResMsg);	
	
	return cRet;
}

/*
**********************************************************
*
* 函数名:prntDotPrintTest
*
* 功  能:打印机测试
*
* 输  入:s_ucprntDataBuffDataIn
*		  s_ucprntTSDataBuffer
*
* 输  出:无
*
* 返  回:g_ucprntState
*
**********************************************************
*/
INT1 prntDotPrintTest
(
	UINT1 ucLanguage      /* 语言种类(0中文 1英文) */
)
{
	s_ucPrntTaskState = PRINTING;
	switch(ucLanguage)
	{
		case PRNT_CHINESE:
			prntDotPrintChineseTest();
			break;
			
		case PRNT_ENGLISH:
			prntDotPrintEnglishTest();
			break;
		case PRNT_ARABIC:
			prntDotArabiaPrintTest();
			break;
		default:
			break;
	}
	if (s_ucPrntRecPowoffMsg)
	{
		/* 发送消息给主控模块 安全退出 */
		OSQPost(pSyscQEvent, (void *)MSG_SYSC_QUIT_PRNT);
		s_ucPrntRecPowoffMsg = 0;
	}
	s_ucPrntTaskState = NOTASK;
	
	return (ET_prntGetState());
}

/*
********************************************************
*
* 函数名:prntDotPrintChineseTest
*
* 功  能:穿孔打印中文测试函数
*
* 输  入:g_ucPrntChoiceLang
*         g_ucPrntOrderMode
*
*
* 输  出:无
*
* 返  回:g_ucprntState
*
********************************************************
*/
INT1 prntDotPrintChineseTest(void)
{
	UINT1 i;
	UINT1 ucTemplen;

	g_ucPrntChoiceLang = PRNT_CHINESE;
	g_ucPrntOrderMode = 0;
	for (i = 0; i < 8; i ++)
	{
		ucTemplen = str_len (ChineseCardPrintChar[i]);
		bspDotprntPutDataToBuff ((UINT1 *)ChineseCardPrintChar[i], ucTemplen);
		bspDotprntAndNewline(1, 24);
		if (( i == 2)||(i == 3))
		{
			bspDotprntAndNewline(1, 24);
		}
	}
	bspDotPrntPFLineSpace(1, 250);
	
	return (ET_prntGetState());
}

/*
********************************************************
*
* 函数名:prntDotArabiaPrintTest
*
* 功  能:穿孔阿拉伯语测试函数
*
* 输  入:g_ucPrntChoiceLang
*         g_ucPrntOrderMode
*
*
* 输  出:无
*
* 返  回:g_ucprntState
*
********************************************************
*/
INT1 prntDotArabiaPrintTest(void)
{
	g_ucPrntChoiceLang = PRNT_ARABIC;	/* 打印语言种类(0 中文 1阿拉伯语、2英语) */
	g_ucPrntOrderMode = 1;	
 	prntArabiaOneLine(TXT_TRADE_NUM, 0);
	prntArabiaOneLine(TXT_TRADE_TITLE, 0);
	prntArabiaOneLine(TXT_DENOMINATION, 0);
	bspDotprntAndNewline(2, 24);
	prntArabiaOneLine(TXT_CARD_NUM, 0);
	prntArabiaOneLine(TXT_PWD, 0);
	bspDotprntAndNewline(2, 24);
	prntArabiaOneLine(TXT_VALID_DATE, 0);
	prntArabiaOneLine(TXT_TRADE_TIME, 0);
	prntArabiaOneLine(TXT_TERMINAL_NUM, 0);
	//prntTSArabiaOneLine(TXT_BATCH_MU, 0);
	prntArabiaOneLine(TXT_TYPE_NOTE, 0);;

	return (ET_prntGetState());
}

/*
********************************************************
*
* 函数名:prntDotPrintEnglishTest
*
* 功  能:穿孔打印英文测试函数
*
* 输  入:g_ucPrntChoiceLang
*         g_ucPrntOrderMode
*
* 输  出:无
*
* 返  回:g_ucprntState
*
********************************************************
*/
INT1 prntDotPrintEnglishTest(void)
{
	UINT1 i;
	UINT1 ucTemplen;

	g_ucPrntChoiceLang = PRNT_ENGLISH;
	g_ucPrntOrderMode = 0;
	for (i = 0; i < 8; i ++)
	{
		ucTemplen = str_len (EnglishCardPrintChar[i]);
		bspDotprntPutDataToBuff ((UINT1 *)EnglishCardPrintChar[i], ucTemplen);
		bspDotprntAndNewline(1, 24);
		if (( i == 2)||(i == 3))
		{
			bspDotprntAndNewline(2, 24);
		}
	}
	bspDotPrntPFLineSpace(1, 250);
	
	return (ET_prntGetState());
}

/*
********************************************************
*
* 函数名:prntTSPrintTest
*
* 功  能:热敏打印测试函数
*
* 输  入:s_ucprntDataBuffDataIn
*		  s_ucprntTSDataBuffer
*
* 输  出:无
*
* 返  回:g_ucprntState
*
********************************************************
*/
INT1 prntTSPrintTest
(
	UINT1 ucLanguage      /* 语言种类(0 中文 1阿拉伯语、2英语) */
)
{
	
	s_ucPrntTaskState = PRINTING;
	switch(ucLanguage)
	{
		case PRNT_CHINESE:
			prntTSPrintChineseTest();
			break;
			
		case PRNT_ENGLISH:
			
			prntTSPrintEnglishTest();
			break;
			
		case PRNT_ARABIC:
			prntTSArabiaPrintTest();
			break;
			
		default:
			break;
	}
	if (s_ucPrntRecPowoffMsg)
	{
		/* 发送消息给主控模块 安全退出 */
		OSQPost(pSyscQEvent, (void *)MSG_SYSC_QUIT_PRNT);
		s_ucPrntRecPowoffMsg = 0;
	}
	s_ucPrntTaskState = NOTASK;
	
	return (ET_prntGetState());
}

/*
********************************************************
*
* 函数名:prntTSPrintChineseTest
*
* 功  能:热敏打印中文测试函数
*
* 输  入:g_ucPrntChoiceLang
*         g_ucPrntOrderMode
*		  s_ucprntDataBuffDataIn
*		  s_ucprntTSDataBuffer
*
* 输  出:无
*
* 返  回:g_ucprntState
*
********************************************************
*/
INT1 prntTSPrintChineseTest(void)
{
	UINT1 i;
	UINT1 ucTemplen;
	UINT1 uctemp[2] = {0x0a,0x0a};
	
	g_ucPaperType = 0;
	g_ucPrntChoiceLang = PRNT_CHINESE;
	g_ucPrntOrderMode = 0;
	s_ucprntDataBuffDataIn = 0;
	mem_set(s_ucprntTSDataBuffer, 0 , sizeof(s_ucprntTSDataBuffer));

	//ET_mntnReadParaValue(ID_ETRADE_THERM_PRNT_BM, &g_ucPaperType);
	//bspTSPrntGoToBeginPlace(g_ucPaperType); 
	for (i = 0; i < 8; i ++)
	{
		ucTemplen = str_len ( ChineseCardPrintChar[i] );
		prntTSPutDataToBuff ((UINT1 *)ChineseCardPrintChar[i], ucTemplen);
		prntTSPutDataToBuff (uctemp, 1);
		if ((i == 2)||(i == 3))
		{
			prntTSPutDataToBuff (uctemp, 1);
		}
	}
	prntTSPutDataToBuff (uctemp, 2);
	prntTSPutDataToBuff (uctemp, 2);
	bspTSPrntData(s_ucprntTSDataBuffer, s_ucprntDataBuffDataIn, 32, 0);

	return (ET_prntGetState());
}

/*
********************************************************
*
* 函数名:prntTSPrintEnglishTest
*
* 功  能:热敏打印英文测试函数
*
* 输  入:g_ucPrntChoiceLang
*         g_ucPrntOrderMode
*		  s_ucprntDataBuffDataIn
*		  s_ucprntTSDataBuffer
*
* 输  出:无
*
* 返  回:g_ucprntState
*
********************************************************
*/
INT1 prntTSPrintEnglishTest(void)
{	
	UINT1 i;
	UINT1 ucTemplen;
	UINT1 uctemp[2] = {0x0a,0x0a};
	UINT1 uctemp1[3] = {0xff,0x00,0x12};
	UINT1 uctemp2[3] = {0xff,0x00,0x19};

	g_ucPaperType = 0;
	g_ucPrntChoiceLang = PRNT_ENGLISH;
	g_ucPrntOrderMode = 0;
	s_ucprntDataBuffDataIn = 0;
	mem_set(s_ucprntTSDataBuffer, 0 , sizeof(s_ucprntTSDataBuffer));
	g_usPrintLocatOffset = 4*8*(9 + 0);  /* 9mm机械距离对应的步数,0mm打印调整值 */
	bspTSPrntGoToBeginPlace(g_ucPaperType); 
	for (i = 0; i < 8; i ++)
	{
		ucTemplen = str_len ( EnglishCardPrintChar[i] );
		prntTSPutDataToBuff ((UINT1 *)EnglishCardPrintChar[i], ucTemplen);
		prntTSPutDataToBuff (uctemp, 1);
		if (i == 2)
		{
			prntTSPutDataToBuff (uctemp1, 3);/* 行间距6mm */
		}
		if (i == 3)
		{
			prntTSPutDataToBuff (uctemp2, 3);/* 行间距6mm */
		}
	}
	prntTSPutDataToBuff (uctemp, 2);
	bspTSPrntData(s_ucprntTSDataBuffer, s_ucprntDataBuffDataIn, 32, 0);

	return (ET_prntGetState());
}

/*
********************************************************
*
* 函数名:prntTSArabiaOneLine
*
* 功  能:热敏打印阿拉伯语单行测试函数
*
* 输  入:
*		  s_ucprntTSDataBuffer
*
* 输  出:无
*
* 返  回:g_ucprntState
*
********************************************************
*/
void prntArabiaOneLine
(
	GUI_TEXT_ID_E	_TextID	,	/* 待打印单行数据 */
	UINT1 _ucPrntChoise 		/* 机芯选择(0穿孔、1热敏) */
)
{
	UINT1 *pTemp;
	GUI_LANGUAGE_E ucTemp;
	UINT1 usdata[40]={0};
	UINT1 temptemp[2]={0x0a,0x00};
	
	prntGetTextAddrByID((UINT4 *)&pTemp,_TextID);
	guiUnicodeToLocCode(usdata,&ucTemp,pTemp);
	if (_ucPrntChoise)
	{
		str_cat(s_ucprntTSDataBuffer,usdata);
		str_cat(s_ucprntTSDataBuffer,temptemp);
	}
	else
	{
		bspDotprntPutDataToBuff (usdata, str_len(usdata));
		bspDotprntAndNewline(1, 24);
	}
	return;
}

/*****************************************************
*
* 函数名:prntGetTextAddrByID
*
* 功  能:根据文本ID取得打印数据的首地址
*
* 输  入:无
*
* 输  出:无
*
* 返  回:无
*
******************************************************
*/
void prntGetTextAddrByID
(
	UINT4	*_pTextAddr,	    /* [OUT]待打印字符串的首地址 */
	GUI_TEXT_ID_E	_TextID		/* 待打印的内容的ID */
)
{
	*_pTextAddr = (UINT4)(g_ArabicText[_TextID]);
	return ;
}

/*
********************************************************
*
* 函数名:prntTSArabiaPrintTest
*
* 功  能:热敏打印阿拉伯语测试函数
*
* 输  入:
*		  s_ucprntTSDataBuffer
*
* 输  出:无
*
* 返  回:g_ucprntState
*
********************************************************
*/
INT1 prntTSArabiaPrintTest(void)
{
	UINT1 temptemp[2]={0x0a,0x00};

	g_ucPrntChoiceLang = PRNT_ARABIC;	/* 打印语言种类(0 中文 1阿拉伯语 2 英语) */
	g_ucPrntOrderMode = 1;	
 	g_ucPaperType = 0;
	mem_set(s_ucprntTSDataBuffer, 0 , sizeof(s_ucprntTSDataBuffer));
	
	prntArabiaOneLine(TXT_TRADE_NUM, 1);
	prntArabiaOneLine(TXT_TRADE_TITLE, 1);
	prntArabiaOneLine(TXT_DENOMINATION, 1);
	str_cat(s_ucprntTSDataBuffer,temptemp);
	prntArabiaOneLine(TXT_CARD_NUM, 1);
	prntArabiaOneLine(TXT_PWD, 1);
	str_cat(s_ucprntTSDataBuffer,temptemp);
	prntArabiaOneLine(TXT_VALID_DATE, 1);
	prntArabiaOneLine(TXT_TRADE_TIME, 1);
	prntArabiaOneLine(TXT_TERMINAL_NUM, 1);
//	prntTSArabiaOneLine(TXT_BATCH_MU);

⌨️ 快捷键说明

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