亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bspdotprnt.c

?? 基于ARM與μCOS-II的嵌入式操作系統實現針式和熱敏微型打印程序.
?? C
?? 第 1 頁 / 共 5 頁
字號:
				break;

			case 2: /* 減速步 */					
				bspDotPrntCRPhase(1);
				ucCRRunSteps ++;
				DelayXus(prntCRSpeeddown[16 - ucCRRunSteps ]);	
									
				if (ucCRRunSteps == 16)
				{
					/* 若應該觸發HP而沒有觸發或者不應該觸發確觸發了HP則叛未機械故障 */
					if (1 == bspDotPrntCheckHP())
					{
						g_ucprntState = g_ucprntState|MALFUNCTION;/* 故障 */
					}
					ucCRRunMode = 3;
					ucCRRunSteps = 0;
				}
				break;
				
			case 3: /* CR電機停機 */
				if (ucCRRunSteps == 0 )
				{
					DelayXus(PD);
					ucCRRunSteps ++;
				}
				else
				{
					bspDotPrntCRStop();
					ucCRRunFlag = 0;
					/* 啟動任務切換 */
					OSSchedUnlock();
					return;
				}
				break;		

			default:
				break;
		}
	}	
	/* 啟動任務切換 */
	OSSchedUnlock();
}

/*
***************************************************
*
* 函數名:bspDotPrntDrive
*
* 功  能:穿孔打印倍高打印時單向打印一行
*
* 輸  入:g_ucprntPattern3
*
* 輸  出:無
*
* 返  回:N/A
*
***************************************************
*/
void bspDotPrntDrive
(
	UINT1 _ucDirection	/* 正反向打印驅動選擇 */
)
{
	UINT1 ucCRRunFlag = 1;
	UINT2 ucCRRunSteps = 0;
	UINT1 ucCRRunMode = 0;
	
	bspDotPrntSetCurrentLevel(LOW_CURRENT);
	/* 設置PU時間,讓出CPU執行 */
	OSTimeDly(1);
	/*禁止任務切換  */
	OSSchedLock();
	bspDotPrntSetCurrentLevel(HIGH_CURRENT);
	
	while (ucCRRunFlag)
	{
		switch (ucCRRunMode)
		{
			case 0:	/* 設置驅動電流為滿電流 */
				bspDotPrntCRPhase(_ucDirection);
				DelayXus(prntCRSpeedUp[ucCRRunSteps]);
				ucCRRunSteps ++;
				if (ucCRRunSteps == 16)
				{
					ucCRRunMode = 1;
					ucCRRunSteps = 0;
					bspDotPrntSetCurrentLevel(MIDDLE_CURRENT);
				}
				break;

			case 1: /*正向勻速運動并打印*/
				bspDotPrntCRPhase(_ucDirection);
				ucCRRunSteps ++;
				PRT_TRIG_ON();
				if (_ucDirection)
				{
					PSOLENIO(~g_ucprntPattern3[ucCRRunSteps * 2 - 2]);
				}
				Delay350us();
				PSOLENIO(0xff);		/* 收針操作 */
				PRT_TRIG_OFF();
				Delay135us();
				PRT_TRIG_ON();
				if (_ucDirection)
				{
					PSOLENIO(~g_ucprntPattern3[ucCRRunSteps * 2 - 1]);
				}
				Delay350us();
				PSOLENIO(0xff);		/* 收針操作 */
				PRT_TRIG_OFF();
				Delay115us();
				/* 打印完畢,準備減速 */
				if (ucCRRunSteps == (PRNT_WIDTH / 2))
				{
					ucCRRunMode = 2;
					ucCRRunSteps = 0;
				}
				break;

			case 2: /* 減速步 */					
				bspDotPrntCRPhase(_ucDirection);
				ucCRRunSteps ++;
				DelayXus(prntCRSpeeddown[16 - ucCRRunSteps ]);	
									
				if (ucCRRunSteps == 16)
				{
					/* 若應該觸發HP而沒有觸發或者不應該觸發確觸發了HP則叛未機械故障 */
					if((1 == bspDotPrntCheckHP()) && (_ucDirection))
					{
						g_ucprntState = g_ucprntState|MALFUNCTION;/* 故障 */
					}
					ucCRRunMode = 3;
					ucCRRunSteps = 0;
				}
				break;
				
			case 3: /* CR電機停機 */
				if (ucCRRunSteps == 0 )
				{
					DelayXus(PD);
					ucCRRunSteps ++;
				}
				else
				{
					bspDotPrntCRStop();
					ucCRRunFlag = 0;
					/* 啟動任務切換 */
					OSSchedUnlock();
					return;
				}
				break;		

			default:
				break;
		}
	}	
	/* 啟動任務切換 */
	OSSchedUnlock();
}

/*
***************************************************
*
* 函數名:bspDotCRRight2LeftDrive
*
* 功  能:穿孔打印機反向打印一行數據
*
* 輸  入:g_ucprntPattern2
*		  g_ucprntAdjustLevel
*
* 輸  出:無
*
* 返  回:N/A
*
***************************************************
*/
void bspDotCRRight2LeftDrive(void)
{
	UINT1 i;
	UINT2 uiPattenCount;
	UINT1 ucCRRunFlag = 1;
	UINT2 ucCRRunSteps = 0;
	UINT1 ucCRRunMode = 0;

	
	uiPattenCount = PRNT_WIDTH - 1;
	bspDotPrntSetCurrentLevel(LOW_CURRENT);
	OSTimeDly(1);
	/*禁止任務切換  */
	OSSchedLock();
	bspDotPrntSetCurrentLevel(HIGH_CURRENT);
	
	while (ucCRRunFlag)
	{
		switch (ucCRRunMode)
		{
			case 0:	/* 設置驅動電流為滿電流 */
				bspDotPrntCRPhase(0);
				DelayXus(prntCRSpeedUp[ucCRRunSteps]);
				ucCRRunSteps ++;
				if (ucCRRunSteps == 16)
				{
					ucCRRunMode = 1;
					ucCRRunSteps = 0;
					bspDotPrntSetCurrentLevel(MIDDLE_CURRENT);
				}
				break;

			case 1: /*正向勻速運動并打印*/
				
				if ((g_ucprntAdjustLevel % 4)== 0)
				{
					/* 當打印效果調節參數是4整數倍時,直接通過移位相應步數達到
					調節打印效果目的 */
					for(i = 0; i < g_ucprntAdjustLevel / 4; i++)
					{
						bspDotPrntCRPhase(0);
						DelayXus(1000);
					}
					while (ucCRRunSteps < (PRNT_WIDTH / 2))
					{
						bspDotPrntCRPhase(0);
						ucCRRunSteps ++;
						PRT_TRIG_ON();
						PSOLENIO(~g_ucprntPattern2[uiPattenCount--]);	
						Delay350us();
						PSOLENIO(0xff);	
						PRT_TRIG_OFF();
						Delay135us();
						PRT_TRIG_ON();
						PSOLENIO(~g_ucprntPattern2[uiPattenCount--]);
						Delay350us();
						PSOLENIO(0xff);
						PRT_TRIG_OFF();
						Delay115us();
					}
					/* 由于勻速區調節效果可能多運行一定步數,相應減速區應該補償
					回來,以確保橫向打印起始位置準確性 */
					ucCRRunSteps = g_ucprntAdjustLevel / 4;
				}
				else if ((g_ucprntAdjustLevel % 4) == 1)
				{
					for(i = 0; i < g_ucprntAdjustLevel / 4; i++)
					{
						bspDotPrntCRPhase(0);
						DelayXus(1000);
					}
					while (ucCRRunSteps < (PRNT_WIDTH / 2))
					{
						if (ucCRRunSteps == 0)
						{
							bspDotPrntCRPhase(0);
						}
						/* 切換相位走步后,延時250us開始打印出針操作 */
						DelayXus(100);
						PSOLENIO(0xff);		
						PRT_TRIG_OFF();
						Delay135us();
						PRT_TRIG_ON();
						PSOLENIO(~g_ucprntPattern2[uiPattenCount--]);
						Delay350us();
						PSOLENIO(0xff);	
						PRT_TRIG_OFF();
						Delay135us();
						PRT_TRIG_ON();
						PSOLENIO(~g_ucprntPattern2[uiPattenCount--]);
						DelayXus(240);
						ucCRRunSteps ++;
						bspDotPrntCRPhase(0);
					}
					/* 補齊時序,繼續走完一步 */
					DelayXus(100);
					PSOLENIO(0xff);	
					PRT_TRIG_OFF();
					DelayXus(900);
					/* 由于存在補齊時序操作,勻速區運動步數相應會增加,需要占用
					減速區運動步數確保橫向定位的準確性 */
					ucCRRunSteps = 1 + g_ucprntAdjustLevel / 4;
				}
				else if ((g_ucprntAdjustLevel % 4) == 2)
				{
					for(i = 0; i < g_ucprntAdjustLevel / 4; i++)
					{
						bspDotPrntCRPhase(0);
						DelayXus(1000);
					}
					while (ucCRRunSteps < (PRNT_WIDTH / 2))
					{
						/* 切換相位走步后,延時500us開始打印出針操作 */
						if (ucCRRunSteps == 0)
						{
							bspDotPrntCRPhase(0);
							DelayXus(350);
						}
						Delay115us();
						PRT_TRIG_ON();		
						PSOLENIO(~g_ucprntPattern2[uiPattenCount--]);
						Delay350us();		
						PSOLENIO(0xff);	
						PRT_TRIG_OFF();
						Delay115us();
						ucCRRunSteps ++;
						/* 切換相序點,每步時間1ms */
						bspDotPrntCRPhase(0);
						PRT_TRIG_ON();
						PSOLENIO(~g_ucprntPattern2[uiPattenCount--]);
						Delay350us();
						PSOLENIO(0xff);	
						PRT_TRIG_OFF();
					}
					/* 補齊時序,繼續走完一步 */
					DelayXus(650);
					ucCRRunSteps = 1 + g_ucprntAdjustLevel / 4;
				}
				else if ((g_ucprntAdjustLevel % 4) == 3)
				{
					for(i = 0; i < g_ucprntAdjustLevel / 4; i++)
					{
						bspDotPrntCRPhase(0);
						DelayXus(1000);
					}
					while (ucCRRunSteps < (PRNT_WIDTH / 2))
					{
						/* 切換相位走步后,延時750us開始打印出針操作 */
						if (ucCRRunSteps == 0)
						{
							bspDotPrntCRPhase(0);
							DelayXus(500);
						}
						/* 實際延時值為150us 收針操作 */
						Delay115us();
						PRT_TRIG_ON();
						PSOLENIO(~g_ucprntPattern2[uiPattenCount--]);
						Delay350us();
						PSOLENIO(0xff);
						PRT_TRIG_OFF();
						ucCRRunSteps ++;
						bspDotPrntCRPhase(0);
						Delay115us();
						PRT_TRIG_ON();
						PSOLENIO(~g_ucprntPattern2[uiPattenCount--]);
						Delay350us();
						PSOLENIO(0xff);
						PRT_TRIG_OFF();
					}
					/* 補齊時序,繼續走完一步 */
					DelayXus(500);
					ucCRRunSteps = 1 + g_ucprntAdjustLevel / 4;
				}
				ucCRRunMode = 2;
				break;

			case 2: /* 減速步 */					
				bspDotPrntCRPhase(0);
				ucCRRunSteps ++;
				DelayXus(prntCRSpeeddown[16 - ucCRRunSteps ]);	
									
				if (ucCRRunSteps == 16)
				{
					/* 若應該觸發HP而沒有觸發或者不應該觸發確觸發了HP則判為機械故障 */
					if (0 == bspDotPrntCheckHP())
					{
						g_ucprntState = g_ucprntState|MALFUNCTION;/* 故障 */
					}
					ucCRRunMode = 3;
					ucCRRunSteps = 0;
				}
				break;
				
			case 3: /* CR電機停機 */
				if (ucCRRunSteps == 0 )
				{
					DelayXus(PD);
					ucCRRunSteps ++;
				}
				else
				{
					bspDotPrntCRStop();
					ucCRRunFlag = 0;
					/* 啟動任務切換 */
					OSSchedUnlock();
					return;
				}
				break;		

			default:
				break;
		}
	}	
	/* 啟動任務切換 */
	OSSchedUnlock();
}

/*
**************************************************
*
* 函數名:bspDotPrntPFLineSpace
*
* 功  能:打印出針控制
*
* 輸  入:無
*
* 輸  出:無
*
* 返  回:N/A
*
***************************************************
*/
void bspDotprntControlPins
(
	UINT1 _ucValue /*打印字模的值*/
)
{
	PSOLENIO(_ucValue);
}

/*
***************************************************
*
* 函數名:bspDotPrntPFLineSpace
*
* 功  能:穿孔打印機進、退紙N步距函數
*
* 輸  入:g_ucPaperType
*         g_ucprntCheckBM
*
* 輸  出:無
*
* 返  回:N/A
*
****************************************************
*/
void bspDotPrntPFLineSpace
(
	UINT1 _ucDirection,       /* 1 進紙, 0 退紙  */
	UINT2 _uiLength		      /* 走紙或退紙的步數 */
)
{    
	UINT1 ucPFRunMode;
	UINT2 usPFBMStep = 0;
	UINT1 ucPFRunFlag = 1;
	UINT2 ucPFRunSteps = 0;
	const UINT2  prntPFSpeedUp[4] = {3500,2500,2500,1300};
	
	if ((_ucDirection > 1) || (_uiLength < 1) || (_uiLength > FEEDLEN))
	{
		return;
	}
	/* 根據走紙的步數來確定是否要加速 */
	LF_STEP_SIGNAL_ON();
	if (g_ucprntCheckBM)
	{
		g_ucprntCheckBM = 0;
		ucPFRunMode = 4;
	}
	else if (_uiLength == 1)
	{
		ucPFRunMode = 3;
	}
	else if (_uiLength <= 18)
	{
		ucPFRunMode = 0;
	}
	else /* >18步,要加速 */
	{
		ucPFRunMode = 1;
	}

	while (ucPFRunFlag )
	{
		switch (ucPFRunMode)
		{
			case 0: /* 低步數進紙不需要加減速過程 */
				bspDotPrntPFPhase(_ucDirection, g_ucPaperType);
				ucPFRunSteps ++;
				/* 用2500us比較合理 */
				DelayXus(PF_SHORTLEN_TIMER);
				if (ucPFRunSteps == _uiLength)
				{
					ucPFRunMode = 2;
				}
				break;		

			case 1: /* 進紙步數大于18步,需要加、減速處理 */
				bspDotPrntPFPhase(_ucDirection, g_ucPaperType);
				ucPFRunSteps ++;
			
				if (ucPFRunSteps <= 4)                    /* 加速運行 */
				{
					DelayXus(prntPFSpeedUp[ucPFRunSteps - 1]);
				}
				else if (ucPFRunSteps <= (_uiLength - 4)) /* 勻速運行 */
				{
					DelayXus(PF_SPEED_TIMER);
				}
				else if (ucPFRunSteps < _uiLength)        /* 減速運行 */
				{
					DelayXus(prntPFSpeedUp[_uiLength - ucPFRunSteps]);
				}
				else if (ucPFRunSteps == _uiLength) 
				{
					DelayXus(PD);
					ucPFRunMode = 2;
				}

				break;		

			case 2: /*PF stop*/
				bspDotPrntPFStop();
				ucPFRunFlag = 0;
				break;		

			case 3: /* 打印中文字符,單步進紙,時序2500us */
				ucPFRunSteps ++;
				if (ucPFRunSteps == 1)
				{
					bspDotPrntPFPhase(_ucDirection, g_ucPaperType);
					DelayXus(PF_SHORTLEN_TIMER);
				}
				else if (ucPFRunSteps == 2)
				{
					DelayXus(PD);
					ucPFRunMode = 2;
				}
				break;	

			case 4: /* 進紙找黑標流程 */
				bspDotPrntPFPhase(_ucDirection, g_ucPaperType);
				ucPFRunSteps ++;
				
				if (1 == ucPFRunSteps)
				{
					DelayXus(3500);
				}
				else if (2 == ucPFRunSteps)
				{
					DelayXus(2500);
				}
				else if ((0 == g_ucprntCheckedBMark)&&(ucPFRunSteps < 800))
				{	/* 未檢測到黑標,并且未進紙到頁長,則勻速進紙 */
					DelayXus(1300);
				}
				else
				{
					DelayXus(2500);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品夜色噜噜亚洲aⅴ| 欧美va亚洲va在线观看蝴蝶网| 午夜国产不卡在线观看视频| 久久综合av免费| 色综合中文字幕国产 | 日韩欧美色电影| 91亚洲精品久久久蜜桃网站 | 香蕉久久夜色精品国产使用方法 | 欧美一级理论片| 91视视频在线观看入口直接观看www | 综合中文字幕亚洲| 欧美大白屁股肥臀xxxxxx| 97久久超碰国产精品| 国内精品写真在线观看| 视频在线在亚洲| 亚洲天堂av一区| 国产校园另类小说区| 91精品国产一区二区三区蜜臀| 色综合网色综合| 成人av在线资源| 国产成人精品三级| 国内外成人在线| 日韩国产在线观看| 亚洲成年人网站在线观看| 亚洲女人的天堂| 中文字幕一区二区三区在线观看 | 国产精品电影一区二区三区| 337p粉嫩大胆色噜噜噜噜亚洲| 欧美日韩高清一区二区不卡| 一本色道久久综合精品竹菊| 成人v精品蜜桃久久一区| 国产美女精品人人做人人爽| 免费成人av在线| 美女诱惑一区二区| 日本亚洲免费观看| 午夜国产不卡在线观看视频| 亚洲影视在线观看| 亚洲欧美日韩在线| 一区二区免费在线| 一区二区激情小说| 亚洲综合久久av| 亚洲综合色成人| 亚洲综合色婷婷| 亚洲成人你懂的| 婷婷开心久久网| 日韩成人av影视| 久久国产精品无码网站| 国产一区二区三区黄视频 | 不卡的av在线播放| 成人avav在线| 99久久精品国产观看| 99久久久久久| 欧美无人高清视频在线观看| 91成人免费电影| 欧美日韩久久久| 日韩精品一区二区三区中文精品| 欧美精品一区二区三区蜜桃视频| 亚洲精品在线观看视频| 国产免费久久精品| 怡红院av一区二区三区| 午夜一区二区三区在线观看| 日韩黄色片在线观看| 免播放器亚洲一区| 国产乱码字幕精品高清av| 成人aaaa免费全部观看| 91福利精品第一导航| 在线不卡免费欧美| 亚洲精品一区二区三区精华液| 国产女人18水真多18精品一级做 | 久久福利资源站| 成人黄动漫网站免费app| 91香蕉国产在线观看软件| 欧美亚洲免费在线一区| 欧美日韩黄色一区二区| 精品捆绑美女sm三区| 中文字幕二三区不卡| 亚洲最新在线观看| 精品一区二区三区的国产在线播放| 国产精品一区二区三区乱码| 色综合一个色综合亚洲| 欧美大片在线观看一区二区| 国产精品成人在线观看| 午夜电影网一区| 国产一区二区主播在线| 91小视频在线免费看| 91精品国产综合久久婷婷香蕉| 久久精品人人做人人爽97| 亚洲国产一区在线观看| 国产成人午夜高潮毛片| 精品视频在线看| 国产午夜精品久久久久久久 | 蜜乳av一区二区| 99国产欧美另类久久久精品| 欧美日韩国产精选| 国产精品乱码妇女bbbb| 免费一级片91| 欧美亚洲动漫另类| 国产亚洲福利社区一区| 天天综合网 天天综合色| 成人黄色一级视频| 精品黑人一区二区三区久久| 亚洲精品国久久99热| 国产中文字幕精品| 欧美精品亚洲一区二区在线播放| 国产精品亲子伦对白| 另类小说图片综合网| 欧美午夜精品免费| 中文字幕中文字幕一区二区| 久久国产人妖系列| 欧美精品精品一区| 亚洲一区二区五区| 91色九色蝌蚪| 国产性天天综合网| 精品一区二区三区免费观看| 欧美日本一区二区三区| 亚洲人成网站精品片在线观看 | 7777精品久久久大香线蕉| 亚洲欧美日本韩国| 99久久久久久99| 国产精品免费aⅴ片在线观看| 麻豆精品新av中文字幕| 欧美日本一区二区三区| 亚洲已满18点击进入久久| 9色porny自拍视频一区二区| 久久久久88色偷偷免费| 蜜臀精品久久久久久蜜臀| 欧美日韩一区二区三区在线看| 亚洲免费观看在线视频| 99视频在线观看一区三区| 中文字幕第一页久久| 狠狠色狠狠色综合系列| 日韩精品一区二区在线观看| 免费一级欧美片在线观看| 91精品国产综合久久福利软件 | 国产日韩一级二级三级| 国产呦精品一区二区三区网站| 精品久久99ma| 久久国产精品72免费观看| 精品国产伦理网| 国产精品正在播放| 中文字幕精品一区二区精品绿巨人 | 99精品视频在线播放观看| 亚洲国产岛国毛片在线| 成人国产精品免费| 综合久久久久综合| 色偷偷久久一区二区三区| 亚洲精品久久嫩草网站秘色| 欧美在线不卡一区| 天天免费综合色| 欧美一区二区免费观在线| 老司机午夜精品99久久| 精品国产一区二区亚洲人成毛片| 国产一区二区三区不卡在线观看| 亚洲精品一区二区三区精华液 | 国产精品123区| 国产精品婷婷午夜在线观看| 一本一本久久a久久精品综合麻豆| 亚洲精品欧美综合四区| 欧美日韩免费电影| 久久精品999| 中文字幕永久在线不卡| 欧洲一区二区三区在线| 日韩二区三区四区| 久久精品在线观看| 色老汉一区二区三区| 日韩极品在线观看| 国产偷国产偷亚洲高清人白洁| va亚洲va日韩不卡在线观看| 亚洲自拍偷拍av| 精品久久久久久久久久久久久久久| 高清不卡在线观看| 亚洲一区二区三区四区在线观看 | 裸体在线国模精品偷拍| 国产欧美精品一区二区三区四区| 99精品久久只有精品| 亚洲地区一二三色| 久久久久免费观看| 欧美性高清videossexo| 国模套图日韩精品一区二区 | 2021国产精品久久精品| 91在线视频在线| 日本不卡一区二区| 国产色爱av资源综合区| 日本高清成人免费播放| 黑人精品欧美一区二区蜜桃| 中文字幕一区二区日韩精品绯色| 欧美二区三区91| 成人三级伦理片| 日韩电影在线一区二区三区| 国产精品电影一区二区| 日韩免费电影网站| 91美女蜜桃在线| 国产又粗又猛又爽又黄91精品| 一级做a爱片久久| 国产亚洲美州欧州综合国| 欧美一区二区三区在线电影| 91丨九色porny丨蝌蚪| 美女性感视频久久| 亚洲最新视频在线观看| 亚洲国产电影在线观看|