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

📄 bsptsprnt.h

📁 基于ARM与μCOS-II的嵌入式操作系统实现针式和热敏微型打印程序.
💻 H
📖 第 1 页 / 共 2 页
字号:
/*
**************************************************************
*
* Copyright(C),1994-2006,Routon Electronic Co.,Ltd.
*
* 文件名: 	bspTSPrnt.h
*
* 内容描述: BSP模块热敏打印底层驱动内部头文件
*
* 文件历史:
*
* 版本号		日期			作者			说明
* 01a			2007-1-16		keyuhui			创建文件
*
***************************************************************
*/

#ifndef _BSPTSPRNT_H
#define _BSPTSPRNT_H

#ifdef __cplusplus
extern "C" {
#endif   /*__cplusplus */

/* 热敏打印机 */
#define		TS_PU_TIME				12			/* 电机稳定运行PU时间(us) */
#define		TS_PD_TIME				12			/* 电机稳定运行PD时间 */
#define 	TS_UPDOWN_STEP			14			/* 字车电机加减速步数 */
#define 	TS_PFSPEED_TIMER		5			/* 走纸电机匀速运动时间间隔 */
#define 	TS_PFSHORTLEN_TIMER		12			/* 走纸电机30步以内时运动的时间间隔 */
#define 	TS_LEED_LEN				120 * 8 * 4 /* 找黑标走纸最大长度(mm) */	
#define		TS_ONE_LINE_BYTE		48			/* 热敏单行打印字节 */
#define		DOTLINE_LIMIT   		193			/* 热敏打印192点行 */
#define     TS_DEFAULT_lINESPACE    32			/* 热敏默认行间距 */
#define		UP_DOWN_STEP			14			/* 热敏打印加减速14步 */
#define 	ASCII_LENGTH			12          /* 24点阵ASCII字符 */
#define 	ARABIA_PATTERN_LEN      48      	/* 24点阿拉伯语字模长度 */
#define 	CN_LENGTH				24          /* 24点阵汉字 */
#define		ASCII_PATTERN_LEN		48			/* ASCII字模长度 */
#define		CN_PATTERN_LEN			72			/* 汉字字模长度 */
#define		TS_BM_STEP				3*8*4		/* 黑标检测步数 */
#define		TS_PE_STEP				10*8*4		/* 黑标检测步数 */
#define		ONE_LINE_DOT			384         /* 打印一行点数 */
#define 	TS_DEAL_DATA			2           /* 不允许处理下一行数据 */
#define		ENABLE_DEAL_DATA		1			/* 剩余空间能处理打印数据*/
#define		DISABLE_DEAL_DATA		0			/* 剩余空间不够处理打印数据 */
#define		ENABLE_PRNT_DATA		1			/* 已处理空间能够打印数据 */
#define		DISABLE_PRNT_DATA   	0			/* 已处理空间不足以打印数据 */
#define		ASCII_PATTERN			0			/* 合法ASCII字符字模 */
#define		CHINESE_PATTERN			1			/* 合法汉字字模 */
#define		ERROR_CODE				-1			/* 非法区位码 */
#define		ENABLE_DEAL_LIMIT		3			/* 允许处理字模数据滑动窗口界定参数*/
#define		ENABLE_PRNT_LIMIT		1			/* 允许打印滑动窗口界定参数 */
#define 	TEMP_lIMIT_VALUE		800			/* 热敏温度检测临界值(65度对应电压值mv) */
#define 	BATTERY_LIMIT_VALUE		3000		/* 锂电池供电需要调整打印效果临界值(x * 2)mv */	
#define 	LINEASCIINUM			32   		/*一行中存最大ASCII字符数*/

#define  	TS_POWER_ON() 		{ IOSET2 = P225; }									 /* 机芯24v电源控制 */
#define     TS_POWER_OFF()  	{ IOCLR2 = P225; }									 /* 机芯24v电源下电*/
#define		CLEAR_CLK	 		{g_uiCpldReg[4] &= 0xF7;CPLD_REG4 = g_uiCpldReg[4];} /* 清时钟,发送一点行打印数据 */
#define		SET_CLK		 		{g_uiCpldReg[4] |= 0x08;CPLD_REG4 = g_uiCpldReg[4];} /* 设置时钟,发送一点行数据 */
#define 	SEND_DATA(x) 		{g_uiCpldReg[4] &= 0xFB;g_uiCpldReg[4] |= (x << 2);CPLD_REG4 = g_uiCpldReg[4];} /* 热敏打印机输入数据信号 */
#define 	OPERATE_LAT  		{g_uiCpldReg[4] &= 0xFD;CPLD_REG4 = g_uiCpldReg[4];g_uiCpldReg[4] |= 0x02;CPLD_REG4 = g_uiCpldReg[4];}/* 数据锁存信号 */
#define 	HEAT_ENABLE	 		{g_uiCpldReg[3] |= 0xFC; CPLD_REG3 = g_uiCpldReg[3];}/* 打开加热使能 */
#define 	HEAT_ENABLE1   		{g_uiCpldReg[3] |= 0xE0; CPLD_REG3 = g_uiCpldReg[3];}
#define 	HEAT_ENABLE2   		{g_uiCpldReg[3] |= 0x1C; CPLD_REG3 = g_uiCpldReg[3];}
#define		HEAT_DISABLE 		{g_uiCpldReg[3] &= 0x03; CPLD_REG3 = g_uiCpldReg[3];}/* 关闭加热使能 */
#define		HEAT_DISABLE1 		{g_uiCpldReg[3] &= 0x1F; CPLD_REG3 = g_uiCpldReg[3];}
#define		HEAT_DISABLE2 		{g_uiCpldReg[3] &= 0xE3; CPLD_REG3 = g_uiCpldReg[3];}

#define 	LF_MTB()            {g_uiCpldReg[1] ^= 0x40;CPLD_REG1 = g_uiCpldReg[1];} /* 进纸相序*/
#define 	LF_MTB_NON()		{g_uiCpldReg[1] ^= 0x80;CPLD_REG1 = g_uiCpldReg[1];} /* 进纸相序*/
#define 	LF_MTA()			{g_uiCpldReg[1] ^= 0x10;CPLD_REG1 = g_uiCpldReg[1];} /* 进纸相序*/
#define 	LF_MTA_NON()		{g_uiCpldReg[1] ^= 0x20;CPLD_REG1 = g_uiCpldReg[1];} /* 进纸相序*/

/*  A(-)--L A--H   B--H  B(-)--H */
//#define 	LF_MTB_INT()		{g_uiCpldReg[1] &= 0xBF;CPLD_REG1 = g_uiCpldReg[1];} /* 进纸电机相序初始化 */ 
#define 	LF_MTB_INT()		{g_uiCpldReg[1] |= 0x40;CPLD_REG1 = g_uiCpldReg[1];}
#define 	LF_MTB_NON_INT()	{g_uiCpldReg[1] |= 0x80;CPLD_REG1 = g_uiCpldReg[1];}
#define 	LF_MTA_INT()		{g_uiCpldReg[1] |= 0x10;CPLD_REG1 = g_uiCpldReg[1];} /* 进纸电机相序初始化 */
#define 	LF_MTA_NON_INT()	{g_uiCpldReg[1] &= 0xDF;CPLD_REG1 = g_uiCpldReg[1];} /* 进纸电机相序初始化 */
#define 	INC(x, y)    		{if(++x >= y) x = 0;}      
#define 	DEC(x, y)    		{if(x == 0) x = y - 1;  else x-- ;}

extern UINT2  g_usPrntBMCounter;
/*
********************************************************
*
* 函数名:bspTSTimerISTR
*
* 功  能:热敏打印机中断服务函数
*
* 输  入:s_ucprntTimerStepCnt
*         s_ucprntTimerHeatCnt
*
* 输  出:s_usprntPFStepCnt
*         s_usprntDotLineDealed
*
* 返  回:SUCCESS----处理成功
*
********************************************************
*/
INT1 bspTSTimerISTR(void);

/*
******************************************************
*
* 函数名:bspTSprntSetTimer
*
* 功  能:热敏机芯设置定时器定时时间
*
* 输  入:g_ucprntTimerStepCnt 定时统计时间最小单位倍数
*
* 输  出:g_ucprntTimerNeedStepCnt  定时基准最小单位倍数 
*
* 返  回:SUCCESS----处理成功
*
******************************************************
*/
INT1 bspTSprntSetTimer
(
	UINT1  _ucTime         /* 定时时间,100us倍数 */
);

/*
******************************************************
*
* 函数名:bspTSprntSetISRTimer
*
* 功  能:热敏机芯设置中断服务函数循环定时器定时时间
*
* 输  入:g_ucprntTimerStepCnt 
*
* 输  出:g_ucprntTimerNeedStepCnt  
*
* 返  回:SUCCESS----处理成功
*
******************************************************
*/
INT1 bspTSprntSetISRTimer
(
	UINT1  _ucTime         /* 定时时间,(100*ADJUST_TIME_GRANULARITY)us倍数 */
);

/*
******************************************************
*
* 函数名:bspTSPrntPFPhase
*
* 功  能:热敏打印机进纸电机正、反向驱动相序
*
* 输  入:无
*
* 输  出:g_ucprntPFphase
*
* 返  回:SUCCESS	  时序处理成功
*		  FAULT		  函数参数输入不合法
*
*******************************************************
*/
INT1 bspTSPrntPFPhase
(
	UINT1 _ucDirection,		/* 正反向进纸选择 1 正向 0 反向 */
	UINT1 _ucPaperType 		/* 纸类型 0 非黑标纸 1 黑标纸 */
);

/*
******************************************************
*
* 函数名:bspTSPrntStepTotal
*
* 功  能:热敏打印机统计走纸步数
*
* 输  入:无
*
* 输  出:g_uiprntPaperLen1,g_usprntPaperLen2,g_usprntPaperLen3
*
* 返  回:SUCCESS	  时序处理成功
*		  FAULT		  函数参数输入不合法
*
*******************************************************
*/
INT1 bspTSPrntStepTotal
(
	UINT1 _ucDirection,		/* 正反向进纸选择 1 正向 0 反向 */
	UINT1 _ucPaperType		/* 纸类型 0 非黑标纸 1 黑标纸 */
);

/*
*******************************************************
*
* 函数名:bspTSPrntGetPattern
*
* 功  能:热敏打印机取字模函数
*
* 输  入:无
*
* 输  出:无
*
* 返  回:ASCII_PATTERN----处理字符字模
*		  CHINESE_PATTERN----处理汉字字模
*		  ERROR_CODE----非法区位码 
*
*******************************************************
*/
INT1 bspTSPrntGetPattern
(
	const UINT1* _pStr,	   /* [in]待取字模国标码首地址 */
	UINT1* _pBuffer,  	   /* [out]存放显示字模数据缓存首地址 */
	UINT1  _ucLangFlag	   /* 语言种类选择标志(0中文 1阿拉伯语)*/
);

/*
*****************************************************
*
* 函数名:bspTSPrntDealWord
*
* 功  能:热敏打印机字模移位处理函数
*
* 输  入:g_ucprntCharPattern、s_ucprntBitInByte、s_uiprntDotLine
*
* 输  出:g_ucprntPrintLineBuffer
*
* 返  回:SUCCESS---处理成功
*
******************************************************
*/
INT1 bspTSPrntDealWord
(
	UINT1 _ucCNSign,		/* 0 ASCII字符   1 中文字符 */
	UINT1 _ucCharSpace,		/* 字符间距 */
	UINT1* _pBuffer 		/* [in]存放显示字模数据缓存首地址 */	
);

/*
*****************************************************
*
* 函数名:bspTSPrntPatternShift
*
* 功  能:热敏打印机处理字模移位操作
*
* 输  入:g_ucprntCharPattern
*         s_ucprntBitInByte
*         s_usprntDotLine
*
* 输  出:g_ucprntPrintLineBuffer
*
* 返  回:SUCCESS---处理成功
*
******************************************************
*/
INT1 bspTSPrntPatternShift
(
	UINT1 _ucShiftBit,   /* 处理移位数据位 */
	UINT1 _ucOrderMode   /* 字模存取对齐模式(0 左对齐,1右对齐)*/
);

/*
*****************************************************
*
* 函数名:bspTSPrntShiftArabia
*
* 功  能:热敏打印机处理阿拉伯语字模移位操作
*
* 输  入:g_ucprntCharPattern
*         s_ucprntBitInByte
*         s_usprntDotLine
*
* 输  出:g_ucprntPrintLineBuffer
*
* 返  回:SUCCESS---处理成功
*
******************************************************
*/
INT1 bspTSPrntShiftArabia
(
	UINT1 _ucShiftBit   /* 处理移位数据位 */
);

/*
*******************************************************
*
* 函数名:bspTSPrntFillBuffer
*
* 功  能:热敏打印机取字模填充缓冲区
*
* 输  入:s_uiprntHoriPosition
*
* 输  出:s_ucTSDealedLineCounter
*
* 返  回:SUCCESS----处理成功
*		  FAULT------非法字模
*         TS_DEAL_DATA-剩余空间不足以保存字模
*
*******************************************************
*/
INT1 bspTSPrntFillBuffer
(
	const UINT1* _pStr,	  /* [in]要打印的字符区位码 */
	UINT1 _ucCharSpace,	  /* 字符间距 */
	UINT1 _ucLineSpace,   /* 热敏打印行间距 */	
	UINT1 _ucStartPos 	  /* 热敏打印确定横向起始位置(精确mm) */
);

/*
******************************************************
*
* 函数名:bspTSPrntChangeLine
*
* 功  能:热敏打印换行处理
*
* 输  入:g_uiprntDotLineDealed
*
* 输  出:s_uiprntDotLine
*
* 返  回:无
*
******************************************************
*/
void bspTSPrntChangeLine
(
	UINT1 _ucLineSpace,   /* 热敏打印行间距 */	
	UINT1 _ucStartPos 	  /* 热敏打印确定横向起始位置(精确mm) */
);

/*
******************************************************
*
* 函数名:bspTSPrntChangeLine
*
* 功  能:热敏打印清空下一行缓存
*

⌨️ 快捷键说明

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