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

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

?? commup.c

?? 電力行業必備。有錯的地方
?? C
?? 第 1 頁 / 共 2 頁
字號:
/****************************************Copyright (c)**************************************************
**                               	江蘇廣一科技有限公司
**                                     研    發    部
**                                        浙江配變
**
**                                 
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: commup.c
**創   建   人: 
**最后修改日期: 2008年08月30日
**描        述: 
**              
**--------------歷史版本信息----------------------------------------------------------------------------
** 創建人: 
** 版  本: 
** 日 期: 
** 描 述: 
**
**--------------當前版本修訂------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
** 描 述: 
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#define  COMMUP_GLOBALS
#include "commup.h"
#include "powerram.h"
#include "global.h"
#include "main.h"


//extern OS_EVENT	* Gprs_Set_Ack;
//extern uint8	GprsCommBuf[256];										// 終端與GPRS模塊間通訊緩沖區
//extern uint8 GprsInitFlag;
//extern RCV_BUF		Rs232_Buf;					// 本地通訊接口緩沖區
//extern RCV_BUF		Rs232_Buf;					// 本地通訊接口緩沖區
//extern RCV_QUE 		Rcv_Q[16];					// 接收隊列

/*typedef struct	{								// 接收隊列數據結構
					uint8	state;				// 0:為空 1:有數據待處理
					uint8  	*read;
					uint8  	*write;
					uint8	chtype;				// 01:短信 02:GPRS 05:紅外 06:RS232
					uint8	addr[6];			// 主站通訊地址
					uint8	concode;			// 控制碼
					uint8	datalen[2];			// 數據長度
					uint16	bufsize;			// 緩沖區尺寸
					uint8	buf[1024];			// 數據區
					//uint8	chkcode[2];			// 校驗碼	
				} RCV_QUE;	*/					// 說明:在POWERRAM.C中定義一個16的結構數組		
				/*uint8	*read;				// 接收緩沖區的讀指針
					uint8	*write;				// 接收緩沖區的寫指針
					uint32	len;				// 接收緩沖區的數據長度
					uint32	size;				// 接收緩沖區的尺寸
					uint8	buf[2048];*/	
/*********************************************************************************************************
** 函數名稱: InitRcvBuf()
** 功能描述: 初始化接收緩沖區函數
**
** 輸 入: 無
**
** 輸 出: 無
**         
** 全局變量: Rs232_Buf:	接收緩沖區
**			 Rcv_Q:		接收隊列
**			 Send_Q:	發送隊列
** 調用模塊: 
**
** 作 者: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/	
void InitRcvBuf(void)	
{	
	uint8 i;
	if ((Rs232_Buf.InitFlag[0] != 0x0B) &&
		(Rs232_Buf.InitFlag[1] != 0xAA))
	{	
		for (i=0;i<16;i++)
		{
			Rcv_Q[i].state = 0;										// 將接收隊列狀態初始化為空
			//Rcv_Q[i].bufsize = 1024;
			//Rcv_Q[i].read  = Rcv_Q[i].buf;
			//Rcv_Q[i].write = Rcv_Q[i].buf;
		}
		for (i=0;i<64;i++)
		{
			Send_Q[i].state = 0;									// 將發送隊列狀態初始化為空
		}
		for (i=0;i<60;i++)
		{
			ProgramLog[i].mp_num = 0xFF;
		}
		
		p_ProgramLog = 0;
		Rs232_Buf.InitFlag[0] = 0x0B;
		Rs232_Buf.InitFlag[1] = 0xAA;
	}
	else
	{
		;
	}
	Rs232_Buf.read  = Rs232_Buf.buf;							// 將指針指向接收緩沖區首地址(RS232)
	Rs232_Buf.write = Rs232_Buf.buf;
	Rs232_Buf.size	= RCV_BUF_SIZE;
	Rs232_Buf.len   = 0;
	
	Gprs_Buf.read  	= Gprs_Buf.buf;								// 將指針指向接收緩沖區首地址(GPRS)
	Gprs_Buf.write 	= Gprs_Buf.buf;
	Gprs_Buf.size	= RCV_BUF_SIZE;
	Gprs_Buf.len  	= 0;
}	
/*********************************************************************************************************
** 函數名稱: ReadBuf
** 功能描述: 讀底層緩沖區函數
**
** 輸 入: port:端口號
**
** 輸 出: 讀出的字節數
**         
** 全局變量: 無
** 調用模塊: ReadCommMs()
**
** 作 者: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint32 ReadBuf(uint8 port)
{
	uint8 	uc_rxbuf[128];
	uint32	len,len1;
	uint32	i;
	len = 0;
	switch (port)
	{
		case COMM1:	
			while(CommOverTimes<5)
			{
				len1 = ReadCommMs(COMM1,uc_rxbuf,128,40, 100);
				if (len1!=0)
				{
					len = len + len1;
					for (i=0;i<len1;i++)										// 將讀到的數據放到本地接收緩沖區
					{
						*Rs232_Buf.write = uc_rxbuf[i];
						Rs232_Buf.len ++;
						Rs232_Buf.write ++;
						if (Rs232_Buf.write>(Rs232_Buf.buf + Rs232_Buf.size))
						{
							Rs232_Buf.write = Rs232_Buf.buf;
						}
					}
					waitms(20);
				}
				else
				{
					break;
				}
			}
			return(len);
			break;
		case COMM2:
			while (CommOverTimes<5)	
			{	if (GprsInitFlag==1)												// GPRS在初始化,此處不接收
				return(0);							
				len1 = ReadCommMs(COMM2,uc_rxbuf,128,40, 100);						// 讀底層接收緩沖區
				if (len1!=0)														// 將讀到的數據放到本地接收緩沖區
				{
					len = len + len1;
					for (i=0;i<len1;i++)											// 將讀到的數據放到本地接收緩沖區
					{
						*Gprs_Buf.write = uc_rxbuf[i];
						Gprs_Buf.len ++;
						Gprs_Buf.write ++;
						if (Gprs_Buf.write>(Gprs_Buf.buf + Gprs_Buf.size))
						{
							Gprs_Buf.write = Gprs_Buf.buf;
						}
					}
					waitms(20);
				}
				else
				{
					break;
				}
			}
			return(len);
			break;
		default:
			return(0);
			break;
	}
	
}

/*********************************************************************************************************
** 函數名稱: ReadRcvBuf
** 功能描述: 讀接收緩沖區函數
**
** 輸 入: port
**
** 輸 出: data
**         
** 全局變量: 
** 調用模塊: 
**
** 作 者: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 ReadRcvBuf(uint8 port)
{
	uint8	data;
	switch (port)
	{
		case COMM1:
			if (Rs232_Buf.len != 0)
			{
				data = *Rs232_Buf.read;
				Rs232_Buf.read ++;
				Rs232_Buf.len --;
			}
			if (Rs232_Buf.read>(Rs232_Buf.buf+Rs232_Buf.size))
			{
				Rs232_Buf.read = Rs232_Buf.buf;
			}
			return(data);
			break;
		
		case COMM2:
			if (Gprs_Buf.len != 0)
			{
				data = *Gprs_Buf.read;
				Gprs_Buf.read ++;
				Gprs_Buf.len --;
			}
			if (Gprs_Buf.read>(Gprs_Buf.buf+Gprs_Buf.size))
			{
				Gprs_Buf.read = Gprs_Buf.buf;
			}
			
			/*if (Rs232_Buf.len != 0)
			{
				data = *Rs232_Buf.read;
				Rs232_Buf.read ++;
				Rs232_Buf.len --;	
			}*/
			return(data);
			break;
		default:
			return(NULL);
			break;	
	}
}

/*********************************************************************************************************
** 函數名稱: PushRcvToQue
** 功能描述: 將接收到的完整幀寫入接收隊列
**
** 輸 入: ch:  通道類型  
**         *buf:接收緩沖區地址
**
** 輸 出: 0:成功 1:失敗 2:隊列已滿
**         
** 全局變量: 
** 調用模塊: 
**
** 作 者: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 PushRcvToQue(uint8 ch, uint8 *buf)
{
	uint8	i;
	uint8	*point;
	//uint8	*qpoint;
	uint16  len;
	static uint8 que_num;
	
	for (i=0;i<16;i++)										// 找出空閑的接收隊列
	{
		if (que_num==16)
		{
			return(2);										// 接收隊列已滿									
		}
		if (Rcv_Q[i].state == 0)
		{
			que_num = i;
			break;
		}
		else continue;	
	}
	
	
		
	point = buf;
	Rcv_Q[que_num].chtype = ch;
	point ++;
	for (i=0;i<6;i++)										// 保存地址
	{
		Rcv_Q[que_num].addr[i] = *point;
		point ++;
	}
	point ++;
	Rcv_Q[que_num].concode = *point;						// 保存控制碼
	point ++;
	Rcv_Q[que_num].datalen[0] = *point;						// 保存數據長度
	point ++;
	Rcv_Q[que_num].datalen[1] = *point;
	point ++;
	len = Rcv_Q[que_num].datalen[1]; 
	len = (len << 8)+ Rcv_Q[que_num].datalen[0];
	if (len>1024)
	{
		Rcv_Q[i].state = 0;
		return(1);
	}
	for (i=0;i<len;i++)										// 保存數據
	{
		Rcv_Q[que_num].buf[i] = *point;
		point ++;
	}
	Rcv_Q[que_num].state = 1;		
	return(0);
}

/*********************************************************************************************************
** 函數名稱: WriteRcvQue
** 功能描述: 將兩個接收緩沖區的數據寫入接收隊列
**
** 輸 入: 無
**
** 輸 出: 0:成功將數據寫入接收隊列 1:未有數據寫入
**         
** 全局變量: 
** 調用模塊: 
**
** 作 者: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 WriteRcvQue(void)
{
	if (WriteRcvQue0() == 0)
	return(0);
	if (WriteRcvQue1() == 0)
	return(0);
	else
	return(1);
}

/*********************************************************************************************************
** 函數名稱: WriteRcvQue0
** 功能描述: 從RS232接收緩沖區找出一個完整幀并寫入接收隊列
**
** 輸 入: 無
**
** 輸 出: 0:成功將數據寫入接收隊列 1:未有數據寫入
**         
** 全局變量: 
** 調用模塊: PushRcvToQue
**
** 作 者: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 WriteRcvQue0(void)
{	
	static	uint8   uc_rs232mbuf[1400];
	static	uint16  u_tlen;
	static	uint16	u_len;
	
	uint32  i;
	uint8   uc_data;
	uint8	uc_chkcode;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久av资源网| 精品一区二区日韩| 精品免费视频一区二区| 99久久免费国产| 毛片av一区二区| 亚洲综合色视频| 中文字幕乱码久久午夜不卡 | 午夜视频一区在线观看| 国产亚洲一二三区| 日韩一区二区视频在线观看| 一本久久精品一区二区 | 欧美性色综合网| 成人免费看片app下载| 欧美aⅴ一区二区三区视频| 亚洲摸摸操操av| 国产丝袜欧美中文另类| 日韩欧美一二区| 欧美无乱码久久久免费午夜一区| 成人福利视频网站| 国产成人精品亚洲日本在线桃色| 免费三级欧美电影| 首页综合国产亚洲丝袜| 亚洲综合区在线| 一区二区三区色| 中文字幕综合网| 中文字幕亚洲电影| 国产精品水嫩水嫩| 亚洲国产高清不卡| 国产精品欧美精品| 国产精品久久久久久久久搜平片| 欧美激情综合在线| 国产欧美视频一区二区| 久久久精品综合| 国产亚洲精品中文字幕| 久久午夜羞羞影院免费观看| 精品福利一区二区三区免费视频| 日韩精品一区二区三区视频| 日韩欧美色综合| 久久综合色天天久久综合图片| 日韩欧美亚洲国产精品字幕久久久 | 国产一区二区三区四区五区入口| 强制捆绑调教一区二区| 美女在线视频一区| 韩国av一区二区三区在线观看| 久久99国内精品| 国产精品18久久久久久久网站| 久久99热这里只有精品| 国产麻豆欧美日韩一区| 国产成人免费9x9x人网站视频| 丰满白嫩尤物一区二区| 色综合久久六月婷婷中文字幕| 色综合天天综合网国产成人综合天| 色综合一个色综合亚洲| 欧美日韩精品系列| 精品欧美黑人一区二区三区| 国产欧美日韩综合精品一区二区| 日韩一区在线看| 亚洲第一搞黄网站| 精久久久久久久久久久| 国产成人精品免费一区二区| 99久久精品国产毛片| 欧美日韩中文国产| 2023国产精品视频| 中文字幕在线不卡一区二区三区| 亚洲激情自拍视频| 精品在线亚洲视频| 成年人国产精品| 欧美日韩你懂得| 精品成人a区在线观看| 亚洲日本va午夜在线影院| 亚洲超碰精品一区二区| 国产一区二区三区观看| 91麻豆成人久久精品二区三区| 欧美日韩国产精品自在自线| 欧美精品一区二区在线观看| 国产精品护士白丝一区av| 亚洲成av人片在线观看| 国产91精品一区二区| 在线观看免费亚洲| 久久综合久久久久88| 一区二区在线免费| 精品一区二区三区影院在线午夜 | 欧美一级xxx| 国产精品另类一区| 五月天亚洲婷婷| 成人动漫在线一区| 欧美不卡一二三| 亚洲色图19p| 国产精品资源在线看| 在线观看av不卡| 国产亚洲欧美日韩日本| 日韩精品乱码av一区二区| 99久久精品一区| 久久色成人在线| 香蕉影视欧美成人| jlzzjlzz亚洲日本少妇| 日韩欧美第一区| 亚洲一区二区三区四区在线| 国产精品69久久久久水密桃| 欧美日韩一区不卡| 中文字幕日本乱码精品影院| 久久国产精品区| 欧美日韩一区二区在线观看视频 | 一片黄亚洲嫩模| 国产精品538一区二区在线| 91精品国产综合久久香蕉的特点| 中文幕一区二区三区久久蜜桃| 蜜臀av一级做a爰片久久| 欧美色综合久久| 亚洲欧美偷拍三级| 国产成人精品亚洲777人妖| 日韩一区二区麻豆国产| 亚洲第一综合色| 色婷婷综合久久| 亚洲色图.com| 91色.com| 国产精品久久久久婷婷二区次| 精品无码三级在线观看视频| 91精品国产日韩91久久久久久| 亚洲自拍偷拍欧美| 色视频成人在线观看免| 国产精品免费免费| 成人午夜激情在线| 国产女人水真多18毛片18精品视频| 蜜臀久久99精品久久久久久9 | 欧美日韩国产综合一区二区 | 视频一区在线播放| 欧美色图免费看| 亚洲一区免费观看| 欧美专区在线观看一区| 一区二区免费视频| 在线免费观看视频一区| 亚洲另类中文字| 91精彩视频在线观看| 综合激情网...| 91国内精品野花午夜精品| 国产精品久久久久久户外露出 | 国产精品家庭影院| 99视频一区二区| 自拍偷拍国产亚洲| 日本韩国欧美一区二区三区| 一区二区三区免费看视频| 91成人免费在线视频| 亚洲va在线va天堂| 91麻豆精品国产91久久久久久| 男女男精品视频网| 欧美成人aa大片| 国产精品亚洲专一区二区三区 | 亚洲摸摸操操av| 欧美日韩日日夜夜| 久久精品国产成人一区二区三区 | 亚洲国产一区在线观看| 欧美性猛交一区二区三区精品| 亚洲高清免费一级二级三级| 91精品国产色综合久久ai换脸| 精品一区二区在线观看| 国产精品电影一区二区三区| 色婷婷综合久久久久中文一区二区| 亚洲国产一区视频| 精品久久久久香蕉网| 国产宾馆实践打屁股91| 亚洲人精品一区| 日韩欧美精品在线| 成人99免费视频| 亚洲777理论| 精品av综合导航| 91麻豆福利精品推荐| 日本欧美肥老太交大片| 国产午夜精品久久久久久免费视| 91亚洲精品乱码久久久久久蜜桃| 首页国产丝袜综合| 欧美国产精品一区二区| 欧美午夜片在线看| 激情综合色综合久久| 成人欧美一区二区三区黑人麻豆| 欧美色精品在线视频| 国产精品白丝av| 亚洲二区视频在线| 欧美激情一区二区三区不卡| 欧美专区亚洲专区| 国产成人啪午夜精品网站男同| 亚洲综合另类小说| 国产亚洲精品aa午夜观看| 在线免费观看视频一区| 丁香五精品蜜臀久久久久99网站 | 青椒成人免费视频| 亚洲视频综合在线| 精品理论电影在线观看 | 欧美三级日本三级少妇99| 国产综合一区二区| 亚洲成人精品影院| 中文字幕一区免费在线观看| 欧美一区二区三区啪啪| 91美女精品福利| 国产精一区二区三区| 天堂一区二区在线免费观看| 国产精品久久久久久久裸模| 久久综合久久综合久久| 337p亚洲精品色噜噜| 在线视频欧美区|