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

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

?? dlt645pri.c

?? 詳細介紹了arm7-at91r40008,的開發(fā)全過程
?? C
?? 第 1 頁 / 共 2 頁
字號:
}

void DLT645APP(INT8U Port)
{
	struct LinkInfo* p = NULL;
	struct LPDUFRAME* RXDBUF;

	INT8U i = 0,cmd,length,DI1,DI0;
	INT16U DI;
	i = Port - 1;
	p = ComLink[i];
	RXDBUF = (struct LPDUFRAME*)p->RxdBuf;
	cmd = RXDBUF->Control;
	length = RXDBUF->FramLength;
//	if(cmd < 0x80) return;				//主站的數(shù)據(jù)
		
	if((cmd&ERRACK) != 0)					//從站異常應答幀
		ComLink[i]->ERRORWORD = RXDBUF->LPDU[0];
	else
		ComLink[i]->ERRORWORD = 0;
		
	if((cmd&NEXTFRAME) != 0)
		ComLink[i]->SUBNEXTFRAME = TRUE;
	else
		ComLink[i]->SUBNEXTFRAME = FALSE;
	switch(cmd&0x1f)
	{
		case READCOM:
			DI0 = RXDBUF->LPDU[0] - 0x33;
			DI1 = RXDBUF->LPDU[1] - 0x33;
			DI = (DI1<<8) + DI0;
			switch(DI)
			{
				case ALLRTUData:
					RecAllData(Port,(INT8U *)RXDBUF);
					break;
		                                
		    case    PosiKWHDB:
		    case    NegaKWHDB:
		    case    PosiKVARDB:
		    case    NegaKVARDB:
		    	RecKWH(Port,(INT8U *)RXDBUF);
		    	break;
		    default:
		      break;
		  }			
			break;
		case READNEXTCOM:
			break;
		case RE_READCOM:
			break;
		case WRITECOM:
			break;
		case SETCLOCK:
			break;
		case WRITEADD:
			break;
		case SETBAND:
			break;
		case SETPASSINT16U:
			break;
		case CLEAR:
			break;
		default: 	break;
	}
	if(!ReadComYxStatus(Port))
		SetComYxStatus(Port,1);
}

void READDATA(INT8U Port,INT16U FuntionCode)
{
	INT8U i,DataLength;
	i = Port - 1;
	ComLink[i]->TxdBuf[0] = STARTCODE68;
	ComLink[i]->TxdBuf[1] = ComApp[i]->AppDevs[ComApp[i]->CurDevNo].Addr[0];
	ComLink[i]->TxdBuf[2] = ComApp[i]->AppDevs[ComApp[i]->CurDevNo].Addr[1];
	ComLink[i]->TxdBuf[3] = ComApp[i]->AppDevs[ComApp[i]->CurDevNo].Addr[2];
	ComLink[i]->TxdBuf[4] = ComApp[i]->AppDevs[ComApp[i]->CurDevNo].Addr[3];
	ComLink[i]->TxdBuf[5] = ComApp[i]->AppDevs[ComApp[i]->CurDevNo].Addr[4];
	ComLink[i]->TxdBuf[6] = ComApp[i]->AppDevs[ComApp[i]->CurDevNo].Addr[5];
	ComLink[i]->TxdBuf[7] = STARTCODE68;
	ComLink[i]->TxdBuf[8] = READCOM;
	ComLink[i]->TxdBuf[9] = 0x02;
	ComLink[i]->TxdBuf[10] = LOW(FuntionCode)+0x33;
	ComLink[i]->TxdBuf[11] = HIGH(FuntionCode)+0x33;
	ComLink[i]->TxdBuf[12] = DLT6465CheckSum(ComLink[i]->TxdBuf,12);
	ComLink[i]->TxdBuf[13] = ENDCODE;
	DataLength = 14;
	ComApp[i]->AppDevs[ComApp[i]->CurDevNo].FactDelayTime = DELAYTIME(Port,DataLength);

	ComLink[i]->BAKBUFLENGTH = DataLength;
	memset(ComLink[i]->TxdBufBak,0,TXBUFLEN);
	memcpy(ComLink[i]->TxdBufBak,ComLink[i]->TxdBuf,DataLength);
	
	WriteX(ComLink[i]->TxdBuf,DataLength,Port);
}

void BROADCASTCLOCK(INT8U Port)
{
	INT8U i,DataLength;
	INT8U	err;
	struct SysTime_t SysTime;
	i = Port - 1;
	GetTime((void *)&SysTime, SYSTIME);
	ComLink[i]->TxdBuf[0] = STARTCODE68;
	ComLink[i]->TxdBuf[1] = 0x99;
	ComLink[i]->TxdBuf[2] = 0x99;
	ComLink[i]->TxdBuf[3] = 0x99;
	ComLink[i]->TxdBuf[4] = 0x99;
	ComLink[i]->TxdBuf[5] = 0x99;
	ComLink[i]->TxdBuf[6] = 0x99;
	ComLink[i]->TxdBuf[7] = STARTCODE68;
	ComLink[i]->TxdBuf[8] = SETCLOCK;
	ComLink[i]->TxdBuf[9] = 0x06;
	ComLink[i]->TxdBuf[10] = BinToBcd(SysTime.Second) + 0x33;
	ComLink[i]->TxdBuf[11] = BinToBcd(SysTime.Minute) + 0x33;
	ComLink[i]->TxdBuf[12] = BinToBcd(SysTime.Hour) + 0x33;
	ComLink[i]->TxdBuf[13] = BinToBcd(SysTime.Day) + 0x33;
	ComLink[i]->TxdBuf[14] = BinToBcd(SysTime.Month) + 0x33;
	ComLink[i]->TxdBuf[15] = BinToBcd(SysTime.Year%100) + 0x33;
	ComLink[i]->TxdBuf[16] = DLT6465CheckSum(ComLink[i]->TxdBuf,16);
	ComLink[i]->TxdBuf[17] = ENDCODE;
	DataLength = 18;

	ClrClockFlag(Port);

	WriteX(ComLink[i]->TxdBuf,DataLength,Port);
	OSFlagPost(ComDb[i]->Event, FTXNEXT, OS_FLAG_SET, &err);
}

INT16U DELAYTIME(INT8U Port,INT16U DataLength)
{
	INT8U i;
	i = Port - 1;
	return((i*100)/ComLink[i]->Baudrate+(ComApp[i]->DelayVal + 9)/10);
}

BOOL PRI645SCHEDULE(INT8U Port)
{
	INT8U i;
	i = Port - 1;
	if(!DevDispatch(Port))
		return FALSE;
	if(ComApp[i]->EnSetClock && ComApp[i]->BroadCastClock)
	{
		if(ComApp[i]->AppDevs[ComApp[i]->CurDevNo].ReadDataFlag & CLOCKFLAG)
		{
				BROADCASTCLOCK(Port);
				return TRUE;
		}
	}	
	if(ComApp[i]->AppDevs[ComApp[i]->CurDevNo].ReadDataFlag & KWHFLAG)
	{
		switch(ComApp[i]->KWHStatus)
		{
			case PosiKWHDB:
				READDATA(Port,PosiKWHDB);
				ComApp[i]->KWHStatus = NegaKWHDB;
				break;
			case NegaKWHDB:
				READDATA(Port,NegaKWHDB);
				ComApp[i]->KWHStatus = PosiKVARDB;
				break;
			case PosiKVARDB:
				READDATA(Port,PosiKVARDB);
				ComApp[i]->KWHStatus = NegaKVARDB;
				break;
			case NegaKVARDB:
				READDATA(Port,NegaKVARDB);
				ComApp[i]->KWHStatus = PosiKWHDB;
				ComApp[i]->AppDevs[ComApp[i]->CurDevNo].ReadDataFlag &=(~KWHFLAG);
				
				break;
		}
		return TRUE;
	}
	
	if((ComApp[i]->AppDevs[ComApp[i]->CurDevNo].ReadDataFlag & ALLDATAFLAG) &&
		 (ComDb[i]->DBCfgs[ComApp[i]->CurDevNo].YCNum != 0))
	{
		READDATA(Port,ALLRTUData);
		ComApp[i]->AppDevs[ComApp[i]->CurDevNo].ReadDataFlag &=(~ALLDATAFLAG);
		return TRUE;
	}
	return TRUE;
}

void SetAllDataFlag(INT8U Port)
{
	INT8U i,j;
	i = Port - 1;
	for(j = 0;j < ComApp[i]->DevNum; j++)
	{
		if(ComDb[i]->DBCfgs[j].YCNum)
			ComApp[i]->AppDevs[j].ReadDataFlag |= ALLDATAFLAG;
	}
}

void SetClockFlag(INT8U Port)
{
	INT8U i,j;
	i = Port - 1;
	for(j = 0;j < ComApp[i]->DevNum; j++)
	{
		ComApp[i]->AppDevs[j].ReadDataFlag |= CLOCKFLAG;
	}
}

void ClrClockFlag(INT8U Port)
{
	INT8U i,j;
	i = Port - 1;
	for(j = 0;j < ComApp[i]->DevNum; j++)
	{
		ComApp[i]->AppDevs[j].ReadDataFlag &= (~CLOCKFLAG);
	}	
}

void SetKWHFlag(INT8U Port)
{
	INT8U i,j;
	i = Port - 1;
	for(j = 0;j < ComApp[i]->DevNum; j++)
	{
		if(ComDb[i]->DBCfgs[j].DDNum)
			ComApp[i]->AppDevs[j].ReadDataFlag |= KWHFLAG;
	}
}

void SendBakData(INT8U Port)
{
	INT8U i;
	i = Port - 1;
	ComApp[i]->AppDevs[ComApp[i]->CurDevNo].FactDelayTime = DELAYTIME(Port,ComLink[i]->BAKBUFLENGTH);
//	ComApp[i]->AppDevs[ComApp[i]->CurDevNo].ComError++;
	WriteX(ComLink[i]->TxdBufBak,ComLink[i]->BAKBUFLENGTH,Port);
}

void SetComYxStatus(INT8U Port,BOOL Flag)
{
	INT8U	i,xuhao;
	struct SOE_t soe;
	struct DBInfo info;
	
	i = Port - 1;
	xuhao = GetActDevNoByDevID(i+1,ComApp[i]->AppDevs[ComApp[i]->CurDevNo].DevID);
	if(!ComDb[i]->DBCfgs[ComApp[i]->CurDevNo].YXNum)
		return;
	soe.No = ComDb[i]->DBCfgs[ComApp[i]->CurDevNo].YXNum - 1;
	if (Flag)
		soe.Status = YX_H;
	else
		soe.Status = YX_F;
	GetTime((void*)&soe.Time, ABSTIME);
	
	info.SuperID = ComDb[i]->DBCfgs[xuhao].DevID;
	info.DevID = ComDb[i]->DBCfgs[xuhao].DevID;
	info.Type = YXDOTDATA;
	info.Num = 1;
	
	DBWrite((INT8U*)&soe, &info);
	
	info.Type = SOEDATA;
	DBWrite((INT8U*)&soe, &info);	
}

BOOL ReadComYxStatus(INT8U Port)
{
	INT8U	i,xuhao;
	INT8U YxStatus;
	struct DBInfo info;
	
	i = Port - 1;
	xuhao = GetActDevNoByDevID(i+1,ComApp[i]->AppDevs[ComApp[i]->CurDevNo].DevID);	
	info.Start = ComDb[i]->DBCfgs[ComApp[i]->CurDevNo].YXNum - 1;
	
	info.SuperID = ComDb[i]->DBCfgs[xuhao].DevID;
	info.DevID = ComDb[i]->DBCfgs[xuhao].DevID;
	info.Type = YXDATA;
	info.Num = 1;
	
	DBRead((INT8U*)&YxStatus, &info);
	if(YxStatus == YX_F)
		return FALSE;
	else
		return TRUE;
}
void RecAllData(INT8U Port,INT8U *Buf)
{
	INT8U i,err;
	INT16U ID,Tmp;
	struct AllData MAllData;
	struct AllData *p;
	struct DBInfo	info;

	i = Port - 1;
	ID = GetDevIDByAddr(Port,Buf+1);
	if(ID == 0xffff)
	{
		ComApp[i]->AppDevs[ComApp[i]->CurDevNo].ComError++;
		return;
	}
	memset(&MAllData, 0,sizeof(struct AllData));
		p = &MAllData;
	Tmp = (*(Buf+12))-0x33+((*(Buf+13)-0x33)<<8);
	MAllData.Ua = BcdToBin(Tmp);
	Tmp = (*(Buf+14))-0x33+((*(Buf+15)-0x33)<<8);
	MAllData.Ub = BcdToBin(Tmp);
	Tmp = (*(Buf+16))-0x33+((*(Buf+17)-0x33)<<8);
	MAllData.Uc = BcdToBin(Tmp);
	Tmp = (*(Buf+18))-0x33+((*(Buf+19)-0x33)<<8);
	MAllData.Ia = BcdToBin(Tmp);
	Tmp = (*(Buf+20))-0x33+((*(Buf+21)-0x33)<<8);
	MAllData.Ib = BcdToBin(Tmp);
	Tmp = (*(Buf+22))-0x33+((*(Buf+23)-0x33)<<8);
	MAllData.Ic = BcdToBin(Tmp);

	Tmp = (*(Buf+25))-0x33+((*(Buf+26)-0x33)<<8);
	MAllData.Ptotal = BcdToBin(Tmp);
	Tmp = (*(Buf+28))-0x33+((*(Buf+29)-0x33)<<8);
	MAllData.Qa = BcdToBin(Tmp);
	Tmp = (*(Buf+31))-0x33+((*(Buf+32)-0x33)<<8);
	MAllData.Qb = BcdToBin(Tmp);
	Tmp = (*(Buf+34))-0x33+((*(Buf+35)-0x33)<<8);
	MAllData.Qc = BcdToBin(Tmp);
	
	Tmp = (*(Buf+36))-0x33+((*(Buf+37)-0x33)<<8);
	MAllData.Qtotal = BcdToBin(Tmp);
	Tmp = (*(Buf+38))-0x33+((*(Buf+39)-0x33)<<8);
	MAllData.Qa = BcdToBin(Tmp);
	Tmp = (*(Buf+40))-0x33+((*(Buf+41)-0x33)<<8);
	MAllData.Qb = BcdToBin(Tmp);
	Tmp = (*(Buf+42))-0x33+((*(Buf+43)-0x33)<<8);
	MAllData.Qc = BcdToBin(Tmp);
	
	info.SuperID = ID;
 	info.DevID = ID;
	info.Type = YCDATA;
	info.Num = sizeof(struct AllData)/sizeof(INT16U);	
	if(ComApp[i]->AppDevs[ComApp[i]->CurDevNo].DevData.AINum <= info.Num)
		info.Num = ComApp[i]->AppDevs[ComApp[i]->CurDevNo].DevData.AINum;
		
	info.Start = 0;
	DBWrite((INT8U*)&MAllData, &info);

	ComApp[i]->AppDevs[ComApp[i]->CurDevNo].ReadDataFlag &= (~ALLDATAFLAG);
	if(ComApp[i]->AppDevs[ComApp[i]->CurDevNo].ComError)
		ComApp[i]->AppDevs[ComApp[i]->CurDevNo].ComError--;
	ComApp[i]->AppDevs[ComApp[i]->CurDevNo].FactDelayTime = 0;

	OSFlagPost(ComDb[i]->Event, FTXNEXT, OS_FLAG_SET, &err);
	
}

void RecKWH(INT8U Port,INT8U *Buf)
{
	INT8U i,err,j,m;
	INT16U ID,DI,Tmp;

	struct DDdata KDDdata;
	INT32U *p,*a;
	struct DBInfo info;
	i = Port - 1;
	
	memset((INT8U*)&KDDdata,0,sizeof(struct DDdata));
	a = malloc(sizeof(struct DDdata));
	p = a;
	ID = GetDevIDByAddr(Port,Buf+1);
	if(ID == 0xffff)
	{
		ComApp[i]->AppDevs[ComApp[i]->CurDevNo].ComError++;
		return;
	}
	
	DI = (*(Buf+10))-0x33+((*(Buf+11)-0x33)<<8);

	Buf = Buf+12;
	for(m = 0;m < sizeof(struct DDdata)/sizeof(INT32U);m++)
	{
		for(j = 0;j < sizeof(INT32U);j++)
		{
			*(Buf+j) -= 0x33;
		}
		*a = BcdToBin8(Buf);
		a++;
		Buf += sizeof(INT32U);
	}

	info.SuperID = ID;
 	info.DevID = ID;
	info.Type = DDDATA;	
	info.Num = sizeof(struct DDdata)/sizeof(INT32U);
	switch(DI)
	{
		case PosiKWHDB:
			info.Start = 0;
			break;
		case NegaKWHDB:
			info.Start = 5;
			break;
		case PosiKVARDB:
			info.Start = 10;
			break;
		case NegaKVARDB:
			info.Start = 15;
			ComApp[i]->AppDevs[ComApp[i]->CurDevNo].ReadDataFlag &= (~KWHFLAG);
			break;
	}
	DBWrite((INT8U*)p, &info);
	Tmp = ComApp[i]->AppDevs[ComApp[i]->CurDevNo].ComError;
	if(ComApp[i]->AppDevs[ComApp[i]->CurDevNo].ComError)
		ComApp[i]->AppDevs[ComApp[i]->CurDevNo].ComError--;
	ComApp[i]->AppDevs[ComApp[i]->CurDevNo].FactDelayTime = 0;
	OSFlagPost(ComDb[i]->Event, FTXNEXT, OS_FLAG_SET, &err);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线丨porny丨国产| 免费观看成人鲁鲁鲁鲁鲁视频| 国产精品亚洲综合一区在线观看| 精品剧情在线观看| 国产毛片精品一区| 国产精品伦一区二区三级视频| 91亚洲精品久久久蜜桃网站| 亚洲综合男人的天堂| 欧美精品三级在线观看| 精一区二区三区| 国产视频一区二区在线观看| 93久久精品日日躁夜夜躁欧美| 一区二区三区资源| 欧美一区永久视频免费观看| 国产一区欧美一区| 中文字幕色av一区二区三区| 欧美日韩精品一区二区| 国产一区二区女| 亚洲女厕所小便bbb| 在线电影院国产精品| 国产精品一区二区久久精品爱涩| 国产精品福利一区二区| 欧美日韩国产bt| 国产精品一区二区久久精品爱涩| 亚洲欧洲制服丝袜| 91精品国产91久久久久久最新毛片| 国产精品69毛片高清亚洲| 一区二区三区高清不卡| 精品裸体舞一区二区三区| 波多野结衣欧美| 日本不卡视频一二三区| 国产精品久久久99| 欧美一级专区免费大片| 波多野结衣精品在线| 蜜臀久久99精品久久久久久9 | 一区二区三区在线观看视频| 91麻豆精品国产91久久久更新时间| 国产xxx精品视频大全| 亚洲福利一二三区| 中文无字幕一区二区三区| 7777精品伊人久久久大香线蕉的 | 欧美体内she精视频| 国模大尺度一区二区三区| 亚洲免费av高清| 久久网站最新地址| 欧美日韩久久久一区| 成人激情视频网站| 久久国内精品自在自线400部| 亚洲美女一区二区三区| 国产视频911| 91精品国产免费久久综合| 色94色欧美sute亚洲线路一ni | 亚洲欧美自拍偷拍| 久久影院视频免费| 日韩欧美亚洲国产另类 | 欧美三级韩国三级日本三斤| 成人午夜伦理影院| 国精品**一区二区三区在线蜜桃| 亚洲一区二区欧美激情| 中文字幕中文字幕一区二区| 26uuu欧美日本| 欧美大片日本大片免费观看| 制服.丝袜.亚洲.另类.中文| 欧美性感一区二区三区| 91蜜桃视频在线| 本田岬高潮一区二区三区| 国产精品综合一区二区| 国产一区在线视频| 国产一区在线看| 国产一区在线精品| 国产精品综合二区| 国产成人综合网| 国产精品99久| 国产成人aaa| 国产精一区二区三区| 国产精品一区二区果冻传媒| 国产一区二区三区四| 国产一区二区三区视频在线播放| 精品一区二区三区在线播放| 国内精品国产成人| 国产一区二区免费看| 国产一区久久久| 国产久卡久卡久卡久卡视频精品| 国产乱一区二区| 国产成+人+日韩+欧美+亚洲| 国产91精品一区二区麻豆亚洲| 懂色av噜噜一区二区三区av| 粉嫩绯色av一区二区在线观看| 成a人片亚洲日本久久| 91在线播放网址| 欧美午夜精品久久久久久孕妇 | 在线观看亚洲专区| 日本高清无吗v一区| 欧美性极品少妇| 日韩精品资源二区在线| 国产欧美一区二区三区鸳鸯浴| 国产亚洲精久久久久久| 亚洲视频在线一区观看| 午夜一区二区三区视频| 奇米色一区二区三区四区| 久久91精品久久久久久秒播| 成人av在线播放网址| 色狠狠色狠狠综合| 日韩视频一区二区三区| 国产欧美在线观看一区| 一区二区三区欧美亚洲| 蜜臀av性久久久久蜜臀aⅴ流畅 | 水野朝阳av一区二区三区| 看电影不卡的网站| 丰满白嫩尤物一区二区| 欧美中文字幕久久| 精品国产伦一区二区三区观看方式| 久久精品欧美一区二区三区麻豆| 亚洲精品第一国产综合野| 日韩**一区毛片| 成人午夜大片免费观看| 欧美三级蜜桃2在线观看| 久久久精品影视| 亚洲自拍另类综合| 久久电影国产免费久久电影| 成人视屏免费看| 在线成人午夜影院| 国产精品福利一区二区三区| 日本视频在线一区| 99re66热这里只有精品3直播| 欧美高清你懂得| 136国产福利精品导航| 蜜桃av一区二区三区| 99久久99久久综合| 91精品免费观看| 亚洲丝袜精品丝袜在线| 经典三级在线一区| 欧美伦理影视网| 亚洲色图另类专区| 精品在线播放免费| 欧美日韩一区二区欧美激情| 中文字幕一区二区三区不卡在线| 久久精品久久99精品久久| 91福利视频网站| 国产精品伦理在线| 韩国一区二区三区| 欧美在线观看禁18| 1区2区3区精品视频| 国产成a人亚洲| 精品捆绑美女sm三区| 首页亚洲欧美制服丝腿| 色婷婷综合久久久久中文| 日本一区二区三区国色天香 | 欧美人牲a欧美精品| 成人免费在线播放视频| 国产成人av电影在线观看| 欧美成人高清电影在线| 日本在线不卡一区| 欧美日韩精品二区第二页| 亚洲人成网站影音先锋播放| 丁香另类激情小说| 欧美国产激情一区二区三区蜜月| 韩国欧美国产1区| 日韩欧美国产系列| 免费美女久久99| 91精品国产福利| 日本欧美韩国一区三区| 日韩一区二区三区视频| 婷婷丁香久久五月婷婷| 制服丝袜亚洲色图| 日韩成人一级片| 欧美一区二区三区爱爱| 五月天一区二区| 69久久夜色精品国产69蝌蚪网| 婷婷久久综合九色综合伊人色| 在线播放中文字幕一区| 午夜精品爽啪视频| 在线成人小视频| 国产在线乱码一区二区三区| 精品久久久久久最新网址| 国产传媒日韩欧美成人| 国产精品不卡视频| 在线欧美日韩国产| 日韩和欧美的一区| 欧美电影精品一区二区| 国产一区二区视频在线播放| 国产农村妇女毛片精品久久麻豆 | 精品国产乱码久久久久久久| 极品美女销魂一区二区三区| 国产亚洲美州欧州综合国| 国产精品一区二区男女羞羞无遮挡| 日本一区二区视频在线| 99视频精品在线| 图片区日韩欧美亚洲| 日韩女优制服丝袜电影| 成人综合在线视频| 亚洲少妇中出一区| 制服丝袜在线91| 国产精品99久久久久久有的能看| 亚洲男人的天堂在线aⅴ视频| 欧美亚洲一区二区在线| 狠狠色丁香婷婷综合| 国产精品大尺度| 7777精品伊人久久久大香线蕉完整版 | 久久久久久久电影|