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

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

?? zlg500commu.c

?? smart2300平臺全部驅動例程 LPC2378所有中間件
?? C
字號:
#include <string.h>
#include "zlg500Commu.h"
#include "UART0.h"
#include "zlg500.h"

// zlg500模塊的I2C地址
#define I2C_ADDR	0xB2


// 通信幀各字段在幀內的位置(以字節為單位)
enum FrameFieldPosition
{
	FFP_FRAME_LEN	= 0,	// 整個幀數據的總長度
	FFP_CMD_TYPE	= 1,	// 命令類型,與幀號位于同一字節,占用低4位
	FFP_SEQ			= 1,	// 幀號,與命令類型位于同一字節,占用高4位
	FFP_CMD_CODE	= 2,	// 命令碼,主機發送時為命令字段
	FFP_STATUS		= 2,	// 狀態碼,從機回應幀為狀態字段
	FFP_INFO_LEN	= 3,	// 信息長度
	FFP_INFO		= 4,	// 信息
	FFP_BCC			= 4,	// 校驗碼,當幀內沒有信息字段時的位置
	FFP_FRAME_END	= 5		// 幀結束,當幀內沒有信息字段時的位置
};
#define PROTOCOL_LEN	6	// 除信息字段外幀協議各部分的總長度

#define STX     0x20	// 開始符
#define ETX     0x03	// 結束符
#define ACK		0x06	// 應答
#define NAK		0x15	// 無應答


static uint8 g_SEQ = 0;	// 幀號


// 設置波特率
static uint8 SetBaudrate()
{
	int i, j;
	uint8 nData;

	for (i = 0; i < 3; i++)
	{
		// 發送一個開始符,隔至少60us后再發送一個,最后看是否能
		// 接收到應答字符,如能模塊的波特率即同步成功,否則失敗。
		nData = STX;
		UART0_Send(&nData, 1);
				
		for (j = 2000; j > 0; j--);	// 延時至少60us
		
		UART0_Send(&nData, 1);
		
		if (UART0_Receive(&nData, sizeof(nData)) != 0 || nData == ACK)
		{
			return TRUE;
		}
		else
		{
			continue;
		}
	}
	
	return FALSE;
}

// 計算校驗碼,對各數據異或,最后取反
uint8 CheckSum(const void *pData, uint8 nDataLen)
{
	const uint8 *_pData = (const uint8 *) pData;
	
	uint8 nCheckSum = 0;	// 校驗碼
	while (nDataLen-- > 0)
	{
		nCheckSum ^= *_pData++;
	}
	
	return ~nCheckSum;
}

// 初始化與ZLG500模塊的通信
uint8 ZLG500_COM_Init(void)
{
	// 初始化UART通信
	UART0_Init(BAUDRATE, UART_DEFAULT_CFG);
	
	// 設置ZLG500模塊的波特率
	return SetBaudrate();
}

// 發送數據到ZLG500模塊
BOOL ZLG500_COM_Send(uint8 nCommType, uint8 nCommCode, const void *pInfo, uint8 nInfoLen)
{
	uint8 SendBuf[40];	// 發送緩沖區
	
	if (nInfoLen + PROTOCOL_LEN > sizeof(SendBuf))
	{
		return FALSE;
	}

	// 幀號在0~15范圍內循環加1
	if (++g_SEQ > 15)
	{
		g_SEQ = 0;
	}
	
	// 組裝數據
	SendBuf[FFP_FRAME_LEN]	= nInfoLen + PROTOCOL_LEN;								// 幀長
	SendBuf[FFP_SEQ]		= (g_SEQ << 4) | nCommType;								// 幀號(高4位)/ 命令類型(低4位)
	SendBuf[FFP_CMD_CODE]	= nCommCode;											// 命令碼
	SendBuf[FFP_INFO_LEN]	= nInfoLen;												// 信息長度
	memcpy(&SendBuf[FFP_INFO], pInfo, nInfoLen);									// 信息
	SendBuf[FFP_BCC + nInfoLen] = CheckSum(SendBuf, SendBuf[FFP_FRAME_LEN] - 2);	// 校驗碼
	SendBuf[FFP_FRAME_END + nInfoLen] = ETX;
	
	// 發送數據
	UART0_Send(SendBuf, SendBuf[FFP_FRAME_LEN]);
	
	return TRUE;
}

// 從ZLG500模塊接收數據
BOOL ZLG500_COM_Receive(uint8 *pCommType, uint8 *pStatus, void *pInfoBuf, uint8 nBufSize, uint8 *pRecvInfoLen)
{
	uint8 ReceiveBuf[40];		// 接收緩沖區
	
	// 接收數據
	uint32 nRecvLen = UART0_Receive(ReceiveBuf, sizeof(ReceiveBuf));
	
	// 檢驗各字段的合法性
	// 檢驗總數據長度
	if (nRecvLen < PROTOCOL_LEN)
	{
		return FALSE;
	}
	
	// 檢驗幀數據長度
	if (ReceiveBuf[FFP_FRAME_LEN] != nRecvLen)
	{
		return FALSE;
	}
	
	// 檢驗幀信息長度
	if (ReceiveBuf[FFP_INFO_LEN] != nRecvLen - PROTOCOL_LEN)
	{
		return FALSE;
	}
	
	// 檢驗幀結束符
	if (ReceiveBuf[nRecvLen - 1] != ETX)
	{
		return FALSE;
	}
	
	// 檢驗幀號
	if ((ReceiveBuf[FFP_SEQ] >> 4) != g_SEQ)
	{
		return FALSE;
	}
	
	// 檢驗校驗碼
	if (ReceiveBuf[FFP_BCC + ReceiveBuf[FFP_INFO_LEN]] != CheckSum(ReceiveBuf, ReceiveBuf[FFP_FRAME_LEN] - 2))
	{
		return FALSE;
	}
	
	// 檢驗信息緩沖區是否足夠大
	if (nBufSize < ReceiveBuf[FFP_INFO_LEN])
	{
		return FALSE;
	}
	
	// 解裝數據
	*pCommType	= ReceiveBuf[FFP_CMD_TYPE] & 0x0F;							// 命令類型
	*pStatus	= ReceiveBuf[FFP_CMD_CODE];									// 狀態碼
	memcpy(pInfoBuf, &ReceiveBuf[FFP_INFO], ReceiveBuf[FFP_INFO_LEN]);		// 信息
	*pRecvInfoLen = ReceiveBuf[FFP_INFO_LEN];								// 信息長度
	
	return TRUE;
}

//	發送命令并接收回應,此函數是ZLG500_COM_Send()和ZLG500_COM_Receive()兩函數的結合。
uint8 ZLG500_COM_SendReceive(uint8 nCommType, uint8 nCommCode, 
							 const void *pSendInfo, uint8 nSendInfoLen, 
							 void *pRecvInfoBuf, uint8 nRecvInfoBufLen)
{
	uint8 bResult;
	uint8 nStatus;
	uint8 nReceiveLen;
	
	ZLG500_COM_Send(nCommType, nCommCode, pSendInfo, nSendInfoLen);	
	bResult = ZLG500_COM_Receive(&nCommType, &nStatus, pRecvInfoBuf, nRecvInfoBufLen, &nReceiveLen);
	if (!bResult)
	{
		return COMM_ERR;
	}
	else
	{
		return nStatus;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩亚洲电影在线| 国产精品视频九色porn| 成人国产在线观看| 免费在线观看一区| 亚洲人亚洲人成电影网站色| 日韩视频一区二区在线观看| 91久久国产最好的精华液| 国产在线不卡一区| 日韩激情在线观看| 一区二区三区在线播放| 欧美激情一区二区在线| 日韩欧美国产系列| 欧美日韩一区在线| 色综合久久综合网欧美综合网| 国产自产高清不卡| 麻豆成人免费电影| 五月天国产精品| 亚洲精品你懂的| 日韩理论在线观看| 国产精品私人影院| 国产三级一区二区| 亚洲精品一区二区三区精华液| 91.xcao| 欧美午夜理伦三级在线观看| 色综合视频一区二区三区高清| 国产91在线观看| 国产综合久久久久久鬼色 | 国产三级三级三级精品8ⅰ区| 69精品人人人人| 欧美日本韩国一区二区三区视频 | 亚洲电影欧美电影有声小说| 亚洲欧洲成人精品av97| 国产精品毛片大码女人| 国产欧美综合在线观看第十页| 久久久影视传媒| 久久婷婷久久一区二区三区| 久久丝袜美腿综合| 久久精品人人做| 久久精品日产第一区二区三区高清版| 亚洲精品在线观看网站| 精品国内二区三区| 久久久综合视频| 欧美高清在线一区二区| 国产精品色噜噜| 亚洲视频一区在线| 亚洲一区在线看| 亚洲444eee在线观看| 日韩电影免费一区| 九九久久精品视频| 国产一区二区三区免费| 国产99久久久国产精品潘金| 成人深夜在线观看| 色综合久久中文综合久久97| 欧美性猛交xxxx乱大交退制版| 精品1区2区3区| 欧美一级一区二区| 国产夜色精品一区二区av| 欧美激情综合五月色丁香| 国产精品久久久久毛片软件| 一区二区三区在线视频观看58 | 日韩欧美一级二级| xfplay精品久久| 国产精品电影一区二区| 亚洲一区二区三区四区五区中文| 五月综合激情网| 激情成人综合网| 成人伦理片在线| 欧美电影一区二区三区| 久久影视一区二区| 日韩美女精品在线| 免费看黄色91| av网站免费线看精品| 欧美日韩aaaaaa| 国产日韩欧美精品在线| 一区二区三区日韩欧美精品| 麻豆freexxxx性91精品| 成人一区二区三区视频在线观看 | 久久99国产精品尤物| 成人动漫视频在线| 欧美精品三级在线观看| 国产亚洲综合在线| 亚洲bt欧美bt精品777| 国产一区二区电影| 91高清视频免费看| 久久久久国产免费免费 | 一区二区成人在线观看| 激情国产一区二区| 欧美性极品少妇| 久久看人人爽人人| 天天影视涩香欲综合网| 不卡高清视频专区| 欧美电影免费观看高清完整版| 亚洲欧美日韩久久精品| 国产一区二区三区久久悠悠色av| 欧美伊人精品成人久久综合97 | 制服丝袜在线91| 中文字幕一区二区在线播放| 日韩av电影免费观看高清完整版| 白白色亚洲国产精品| 精品国产伦一区二区三区观看体验| 亚洲精品国产精品乱码不99 | 老色鬼精品视频在线观看播放| www.在线欧美| 久久免费看少妇高潮| 日韩高清不卡一区二区三区| 色域天天综合网| 国产欧美一区二区精品性| 麻豆精品在线视频| 欧美日韩一级二级三级| 亚洲激情网站免费观看| 成人激情动漫在线观看| 久久精品夜色噜噜亚洲a∨| 日本 国产 欧美色综合| 欧美亚洲综合网| 亚洲精品久久嫩草网站秘色| 99久久777色| 国产精品毛片无遮挡高清| 国产一区二区视频在线| 日韩欧美综合在线| 偷偷要91色婷婷| 欧美性受xxxx| 夜夜夜精品看看| 91日韩在线专区| 亚洲色欲色欲www在线观看| 成人中文字幕电影| 亚洲国产岛国毛片在线| 国产a久久麻豆| 久久久久久电影| 国产精品自拍网站| 久久尤物电影视频在线观看| 麻豆精品精品国产自在97香蕉| 91 com成人网| 久色婷婷小香蕉久久| 日韩视频永久免费| 国产在线观看免费一区| 久久久久高清精品| 大桥未久av一区二区三区中文| 久久人人超碰精品| 国产乱子轮精品视频| 久久一夜天堂av一区二区三区| 国产福利91精品一区二区三区| 久久久久久亚洲综合影院红桃| 国产成人自拍高清视频在线免费播放| 精品对白一区国产伦| 国产精品18久久久久久vr| 中文在线一区二区| 99精品国产热久久91蜜凸| 亚洲情趣在线观看| 欧美日韩高清影院| 免费日本视频一区| 国产人妖乱国产精品人妖| av在线播放成人| 亚洲国产日韩一区二区| 日韩午夜av电影| 粉嫩一区二区三区在线看| 日韩美女视频19| 欧美日韩国产小视频| 蜜臀av国产精品久久久久| 国产欧美视频一区二区三区| 99精品久久99久久久久| 午夜精品一区二区三区免费视频| 91麻豆精品91久久久久久清纯| 国内成人精品2018免费看| 最新热久久免费视频| 欧美日韩一区视频| 国产精品亚洲综合一区在线观看| 中文字幕亚洲成人| 欧美人牲a欧美精品| 国产激情偷乱视频一区二区三区| 亚洲色图丝袜美腿| 91麻豆精品91久久久久久清纯| 国产丶欧美丶日本不卡视频| 亚洲另类在线一区| 日韩精品一区国产麻豆| av资源网一区| 欧美aaaaa成人免费观看视频| 国产精品午夜在线观看| 欧美日韩精品电影| 粉嫩在线一区二区三区视频| 亚洲国产综合在线| 国产欧美日韩另类视频免费观看| 在线视频观看一区| 国产一区二区三区四区在线观看| 亚洲男人天堂av网| www国产精品av| 不卡的电影网站| 蜜桃视频在线一区| 尤物在线观看一区| 国产亚洲一区二区三区四区| 欧美丝袜丝交足nylons图片| 国产精品一区二区无线| 亚洲在线免费播放| 中文字幕不卡三区| 日韩欧美中文一区| 欧美在线三级电影| www.66久久| 国产老妇另类xxxxx| 日韩高清在线不卡| 亚洲精品水蜜桃| 欧美激情中文字幕|