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

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

?? recv.c

?? freescale crc模塊驅動 經調試
?? C
?? 第 1 頁 / 共 2 頁
字號:
/******************************************************************************
 * 源程序文件名: recv.c                                                       *
 * 功能: 串行通信接收模塊                                                     *
 * 說明: 本文件中包含的子模塊有:接收串行數據,檢查數據的正確性                 *
 ******************************************************************************/

/* 加載頭文件 */
# include "crc.h"
# include "recv.h"
# include "machine.h"
# include "ctrlout.h"
# include "chksafety.h"

/* 從發射機接收的數據 */
SioPackRecvBuf  SioRecvBuf;
unsigned char   cSioRecvBufEnd;
unsigned char   cRecvBufType;
unsigned int    nflgCommDatRight;
unsigned char   cflgCommDatOvertime;

/******************************************************************************
 * 函數原型: void InitDataRecv(void);                                         *
 * 功能: 數據接收模塊相關變量的初始化                                         *
 * 說明: 無                                                                   *
 ******************************************************************************/
void InitDataRecv (void)
{
	cSioRecvBufEnd      = 0;
	cRecvBufType        = 0x00;
	nflgCommDatRight    = CommDatRightTime0;
	cflgCommDatOvertime = 0;
}

/******************************************************************************
 * 函數原型: void RecvMOnTimeReadRxBuf(void);                                 *
 * 功能: 將接收緩沖區中的數據轉移到SioRecvBuf.buf中                           *
 * 說明: 無                                                                   *
 ******************************************************************************/
void RecvMOnTimeReadRxBuf (void)
{
	int n, m;
	if(cUART1RxEnd == cUART1RxHead)                        // 如果UART1接收緩沖區中無數據
		return;                                            // 返回
	// 留2個字節的余量
	n = CMSioRecvPackLenMax-cSioRecvBufEnd-2;              // 最多接收的字節數
	m = UART1GetRx(SioRecvBuf.buf+cSioRecvBufEnd,n);       // 接收數據,m為實際接收到的字節數
	cSioRecvBufEnd += m;                                   // 重新設置SioRecvBuf.buf的尾
}

/******************************************************************************
 * 函數原型: int RecvMOnTimeCheckLead(void);                                  *
 * 功能: 在SioRecvBuf.buf中尋找包頭                                           *
 * 說明: 1.UniversalPackLead未被定義                                          *
 *       2.返回值為接收包"類型+序列"的下標                                    *
 *       3.注意:連續2個FF+1個非FF即認為收到了正確的包!!!                      *
 ******************************************************************************/
int RecvMOnTimeCheckLead (void)
{
# ifdef UniversalPackLead
	int i, j, k;
	for(k = 0; k < cSioRecvBufEnd; k++)
	{
		for(i = k; i < cSioRecvBufEnd; i++)
			if(SioRecvBuf.buf[i] == 0x00FF)
				break;
		if(i+CMSioRecvPackLenMin > cSioRecvBufEnd)
			break;
		for(j = i; j < cSioRecvBufEnd; j++)
			if(SioRecvBuf.buf[j] != 0x00FF)
				break;
		if(j-i >= CMSioLeadLenMin)
			return j;
	}
	return 0;
# else                                                     // UniversalPackLead
# define p SioRecvBuf.buf
	int k;
	for(k = 2; k < cSioRecvBufEnd; k++)
		if(p[k-2] == 0xFF && p[k-1] == 0xFF && p[k-0] != 0xFF)
			return k;
	return 0;
# undef  p
# endif                                                    // UniversalPackLead
}

/******************************************************************************
 * 函數原型: void RecvMOnTimeNormalBuf(int lead);                             *
 * 功能: 將接收到的有效包移至SioRecvBuf.buf的起始位置                         *
 * 說明: 1.注意不同情況的處理方式                                             *
 *       2.將SioRecvBuf.buf的前3個字節設置成引導字節                          *
 ******************************************************************************/
void RecvMOnTimeNormalBuf (int lead)
{
	int n, adj, len;
	n = cSioRecvBufEnd-CMSioLeadLenMax;                    // n = cSioRecvBufEnd-4
	if(n <= 0)                                             // 如果SioRecvBuf.buf中的數據不超過4字節
		return;                                            // 不處理,返回
	if(!lead)                                              // 如果沒有找到"FF+FF+非FF"的包頭
	{
		// __memmovebufforlittle
		__memmovebuf(SioRecvBuf.buf,n,CMSioLeadLenMax);    // 移動最末尾的4個字節到包的頭部,以便不
		                                                   // 影響下一次尋找包頭的操作(有效包最多有
		                                                   // 4個字節的引導字)
		cSioRecvBufEnd = CMSioLeadLenMax;                  // 設置包尾為4
		return;                                            // 處理完畢,返回
	}
	if(lead == CMSioLeadLen)                               // 如果包類型字節的下標是3
		return;                                            // 不必處理,返回
	adj = lead-CMSioLeadLen;                               // 統一將有效包調整為有3個引導字
	len = cSioRecvBufEnd-(adj>0?adj:0);                    // lead最小值為2,adj有小于0的情況
	// __memmovebufforlittle(lead>3) or __memmovebufforlarge(lead==2)
	__memmovebuf(SioRecvBuf.buf,adj,len);                  // 前3個字節均為引導字
	cSioRecvBufEnd -= adj;                                 // 重新設置包尾
}

/******************************************************************************
 * 函數原型: int CRCChk(char *cp, char nn);                                   *
 * 功能: 對接收到的數據包進行CRC校驗                                          *
 * 說明: 1.cp指向需校驗數據包的包頭,nn為有效數據的長度(不含CRC校驗碼)         *
 *       2.返回值為1說明傳輸無差錯                                            *
 ******************************************************************************/
int CRCChk (char *cp, char nn)
{
	SioPackCRC *crcp, crc;
	// crcp指向包的CRC1
	crcp = (SioPackCRC *)(cp+nn);
	// cp指向包的第1個有效字節,nn為有效字節的長度
    crc = crc1608strrevCRC16(cp, nn, NULL);
	return crc==*crcp?1:0;
}

/******************************************************************************
 * 函數原型: int MachineAddrChk(unsigned int addr, int Rc);                   *
 * 功能: 檢查并設定遙控器的機器地址                                           *
 * 說明: 1.addr為要設定的地址值,Rc為設定機器地址的標志(1有效)                 *
 *       2.注意本函數在不同情況下的返回值,返回0表示地址校驗失敗               *
 *       3.遙控器的ID號一旦被設置,將永遠不能用常規的辦法更改該ID號,且不再接受 *
 *         通用機器地址                                                       *
 ******************************************************************************/
int MachineAddrChk (unsigned int addr, int Rc)
{
	nMachineAddr = (unsigned int)GetMachineAddr();         // 從單片機內獲取機器的ID號
	if(nMachineAddr == addr)                               // 如果對碼成功
		return 1;                                          // 返回1!
	if(nMachineAddr == NoMachineAddr && addr == UniversalMachineAddr)
		                                                   // 如果機器尚未設置ID號且接收的地址為通
														   // 用的機器地址
		return 2;                                          // 返回2!
	if(nMachineAddr == NoMachineAddr && Rc == 1)           // 如果機器尚未設置ID號且接收到的數據包
		                                                   // 通過了CRC校驗
	{
		PutMachineAddr((unsigned long)addr);               // 為機器設置ID號
		return 3;                                          // 返回3!
	}
	return 0;                                              // 出現錯誤,返回0!
}

/******************************************************************************
 * 函數原型: void RecvMOnTimeDebug(void);                                     *
 * 功能: 收到"調試"包的處理                                                   *
 * 說明: 不做任何事情                                                         *
 ******************************************************************************/
void RecvMOnTimeDebug (void)
{
	return;
}

/******************************************************************************
 * 函數原型: int RecvMOnTimeCheckData(void);                                  *
 * 功能: 對收到的包進行整體校驗                                               *
 * 說明: 1.本函數依次進行CRC校驗和機器地址校驗                                *
 *       2.注意本函數在不同情況下的返回值                                     *
 ******************************************************************************/
int RecvMOnTimeCheckData (void)
{
	SioPackHead   *pack;
	char          type, len;
	unsigned char *cp;
	int           Rc, Ra, i = 0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久影院亚瑟| 亚洲影院在线观看| 国产精品成人免费在线| 日韩精品一二区| 99精品国产91久久久久久| 884aa四虎影成人精品一区| 亚洲欧美一区二区在线观看| 麻豆精品在线观看| 欧美色国产精品| 国产精品国产自产拍高清av | 亚洲五码中文字幕| 国产精品亚洲午夜一区二区三区 | 91在线视频观看| 久久免费偷拍视频| 蜜臀91精品一区二区三区| 欧美吞精做爰啪啪高潮| 自拍av一区二区三区| 美女国产一区二区三区| 日韩一区二区高清| 亚洲第一二三四区| 色狠狠色噜噜噜综合网| 国产精品素人视频| 国产成人三级在线观看| 2022国产精品视频| 久久99热这里只有精品| 91精品久久久久久久久99蜜臂 | 国产三级一区二区| 国产永久精品大片wwwapp | 久久美女艺术照精彩视频福利播放| 亚洲综合丝袜美腿| 色综合咪咪久久| 亚洲视频在线一区观看| 91色综合久久久久婷婷| 亚洲色图第一区| 91麻豆6部合集magnet| 亚洲欧美另类综合偷拍| 99久久精品情趣| 中文字幕欧美一| 91小视频免费观看| 亚洲一区自拍偷拍| 欧美日韩一区二区三区在线看| 亚洲国产日韩a在线播放性色| 在线观看亚洲一区| 日韩国产精品久久久| 91精品国产91久久久久久一区二区| 日韩精品一二三区| 精品国产区一区| 国产91高潮流白浆在线麻豆| 国产日韩av一区| 91免费在线看| 亚洲第一av色| 欧美zozo另类异族| 国产成人免费视频网站高清观看视频 | 99re视频这里只有精品| 亚洲午夜免费电影| 日韩一二在线观看| 国产成人在线影院| 亚洲一区二区偷拍精品| 日韩欧美专区在线| 国产91对白在线观看九色| 亚洲欧美日韩国产综合在线| 欧美精品v日韩精品v韩国精品v| 蜜臀av在线播放一区二区三区| 久久精品一级爱片| 欧美在线免费观看亚洲| 毛片av一区二区| 国产精品你懂的在线欣赏| 欧美专区在线观看一区| 韩国在线一区二区| 一区二区三区日韩| 日韩精品专区在线影院重磅| 不卡的av电影| 蜜桃视频一区二区| 午夜久久久久久久久| 精品99一区二区三区| 在线视频欧美区| 国产一区二区在线影院| 亚洲一区欧美一区| 国产网站一区二区| 欧洲一区二区三区在线| 国产盗摄一区二区| 秋霞成人午夜伦在线观看| 综合分类小说区另类春色亚洲小说欧美| 欧美高清视频不卡网| 99精品视频一区二区三区| 国内精品视频666| 亚洲成人自拍网| 亚洲人成人一区二区在线观看| 欧美刺激脚交jootjob| 欧美亚州韩日在线看免费版国语版| 国产精品1区2区| 美女在线视频一区| 亚洲国产精品久久人人爱| 亚洲欧洲精品一区二区精品久久久| 欧美xxxx在线观看| 欧美一卡二卡三卡| 在线观看精品一区| 日本韩国一区二区三区| 成人av网站大全| 粗大黑人巨茎大战欧美成人| 麻豆精品久久精品色综合| 亚洲一区二区三区小说| 亚洲国产精品v| 精品国产乱码久久久久久免费| 在线不卡中文字幕| 91国偷自产一区二区三区观看| 久久www免费人成看片高清| 亚洲午夜羞羞片| 专区另类欧美日韩| 中文字幕成人av| 欧美高清在线一区| 精品成人a区在线观看| 欧美猛男gaygay网站| 91麻豆视频网站| 成人开心网精品视频| 亚洲午夜三级在线| 亚洲福利视频一区| 一区二区三区加勒比av| 国产精品激情偷乱一区二区∴| 久久综合狠狠综合| 精品国精品国产| 91精品国产综合久久久蜜臀图片| 91精品国产综合久久国产大片| 欧洲av一区二区嗯嗯嗯啊| 欧美日韩国产成人在线91| 在线亚洲免费视频| 不卡av在线网| 成人av网址在线观看| 99在线精品视频| 不卡电影一区二区三区| 精品一区二区免费视频| 激情五月激情综合网| 紧缚捆绑精品一区二区| 国产麻豆欧美日韩一区| 国产精品88888| 色综合天天综合网国产成人综合天 | 亚洲v日本v欧美v久久精品| 亚洲男人的天堂在线观看| 亚洲v日本v欧美v久久精品| 午夜精品一区二区三区免费视频| 一区二区三区电影在线播| 亚洲超碰97人人做人人爱| 午夜精品久久久久久久久| 免费观看在线综合| 国产一区二区三区在线观看免费| 国产精品综合在线视频| 丰满岳乱妇一区二区三区| 成人免费毛片aaaaa**| 成人国产亚洲欧美成人综合网| 欧洲精品一区二区| 日韩女优av电影在线观看| 国产日本欧洲亚洲| 亚洲免费大片在线观看| 亚洲人成在线播放网站岛国| 日韩不卡一二三区| 激情综合色综合久久综合| 国产不卡视频在线播放| 91在线一区二区| 欧美精品日韩一本| 自拍偷拍国产精品| 亚洲第一福利一区| 国产一区二区三区免费观看| 北岛玲一区二区三区四区| 欧美三级三级三级爽爽爽| 日韩一区二区三区视频| 久久久99久久| 亚洲国产精品一区二区www在线| 精品一区二区三区不卡 | 久久日一线二线三线suv| 亚洲欧洲日韩av| 蜜臀久久99精品久久久画质超高清| 成人av在线播放网址| 欧美一级欧美一级在线播放| 欧美国产视频在线| 免费在线欧美视频| 白白色 亚洲乱淫| 欧美日韩亚洲国产综合| 国产亚洲一区字幕| 日韩电影免费在线看| www.亚洲色图.com| 日韩三级伦理片妻子的秘密按摩| 国产精品成人免费在线| 久久不见久久见中文字幕免费| 国产欧美日韩中文久久| 日韩久久一区二区| 国产福利一区二区三区在线视频| 国产精品影视网| 欧美年轻男男videosbes| 久久精品亚洲精品国产欧美 | 欧美三级三级三级爽爽爽| a级高清视频欧美日韩| 国产精品第五页| av亚洲精华国产精华精| 国产亚洲欧美激情| 久久99精品国产麻豆婷婷| 91老司机福利 在线| 久久久久九九视频| 免费成人在线播放| 日韩精品一区二区三区在线 | 91精品国产综合久久精品app|