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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? modbus.c

?? 基于Hitech和C166的Modbus協(xié)議
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
				temp2 &= temp1;
				temp1 = temp5 + 2;
				Asc1_Tx_BUF[temp1] = temp2;
				Deal_all_OK = 1;
				//讀取離散輸出是否正常
				if (Deal_all_OK == 0)
				{
					Asc1_Tx_BUF[1] = 0x81;
					Asc1_Tx_BUF[2] = 0x04;
					Asc1_Tx_lengh = 3;
				}
			}
		}
	}

	if (Deal_all_OK == 1)
	{
		Deal_all_OK = 0;
		//計(jì)算發(fā)送緩沖區(qū)
		Asc1_Tx_lengh = 3 + temp5;
		crc_cal( Asc1_Tx_BUF, Asc1_Tx_lengh );
		Asc1_Tx_lengh += 2;
		//發(fā)送緩沖區(qū)數(shù)據(jù)
		Send_Asc0_Tx_buf();
	}
	else
	{
		//計(jì)算發(fā)送緩沖區(qū)
		crc_cal( Asc1_Tx_BUF, Asc1_Tx_lengh );
		Asc1_Tx_lengh += 2;
		//發(fā)送緩沖區(qū)數(shù)據(jù)
		Send_Asc0_Tx_buf();
	}
}


//****************************************************************************
// @Function  	  void Deal_WRITE_One_Coilr()
// @Description       寫單個(gè)線圈
//****************************************************************************
__inline void Deal_WRITE_One_Coilr()
{
	bit	Deal_all_OK	= 0;
	ubyte	temp1, temp2, temp5;
	uword	temp3, temp4;
	//判定功能碼是否合法(05,但是幀長超出8個(gè)字節(jié))
	if (Asc1_Rx_lengh != 8)
	{
		Asc1_Tx_BUF[1] = 0x85;
		Asc1_Tx_BUF[2] = 0x01;
		Asc1_Tx_lengh = 3;
	}
	else
	{
		//判定寄存器值是否合法(0 ---0xFFFF)
		temp3 = ( uword ) Asc1_Rx_BUF[4] * 256 + Asc1_Rx_BUF[5];
		if (temp3 != 0xFF00 && temp3 != 0x0000)
		{
			Asc1_Tx_BUF[1] = 0x85;
			Asc1_Tx_BUF[2] = 0x03;
			Asc1_Tx_lengh = 3;
		}
		else
		{
			//判定寄存器地址是否合法
			temp4 = ( uword ) Asc1_Rx_BUF[2] * 256 + Asc1_Rx_BUF[3];
			if (temp4 >= ModBus_PLC_Bit_max)						//---------------------------------
			{
				Asc1_Tx_BUF[1] = 0x85;
				Asc1_Tx_BUF[2] = 0x02;
				Asc1_Tx_lengh = 3;
			}
			else
			{
				//處理寫請(qǐng)求
				temp2 = Asc1_Rx_BUF[3] / 8;		//數(shù)組的第幾個(gè)字節(jié)
				temp1 = ( ubyte ) ( Asc1_Rx_BUF[3] % 8 );	//對(duì)應(yīng)字節(jié)的第幾位
				temp5 = ( 0x01 ) << ( temp1 );
				if (temp3 == 0xFF00)
				{
					PLC_Bit_Buffer_all.PLC_Bit_Buffer[temp2] += temp5;
				}
				else
				{
					temp5 = ~temp5;
					PLC_Bit_Buffer_all.PLC_Bit_Buffer[temp2] &= temp5;
				}					
				Deal_all_OK = 1;
				//寫取離散輸出是否正常
				if (Deal_all_OK == 0)
				{
					Asc1_Tx_BUF[1] = 0x85;
					Asc1_Tx_BUF[2] = 0x04;
					Asc1_Tx_lengh = 3;
				}
			}
		}
	}
	if (Deal_all_OK == 1)
	{
		Deal_all_OK = 0;
		Send_Asc0_Rx_buf_Back();
	}
	else
	{
		//計(jì)算發(fā)送緩沖區(qū)
		crc_cal( Asc1_Tx_BUF, Asc1_Tx_lengh );
		Asc1_Tx_lengh += 2;
		//發(fā)送緩沖區(qū)數(shù)據(jù)
		Send_Asc0_Tx_buf();
	}
}

//****************************************************************************
// @Function  	  void Deal_WRITE_One_Register()
// @Description       寫一個(gè)保持寄存器
//****************************************************************************
__inline void Deal_WRITE_One_Register()
{
	bit	Deal_all_OK	= 0;
	//ubyte temp1,temp2;
	uword	temp3, temp4;
	//判定功能碼是否合法(06,但是幀長超出8個(gè)字節(jié))
	//測試數(shù)組01 06 00 01 00 50 00 36 5A
	if (Asc1_Rx_lengh != 8)
	{
		Asc1_Tx_BUF[1] = 0x86;
		Asc1_Tx_BUF[2] = 0x01;
		Asc1_Tx_lengh = 3;
	}
	else
	{
		//判定寄存器值是否合法(0 ---0xFFFF)
		//測試數(shù)組
		temp3 = ( uword ) Asc1_Rx_BUF[2] * 256 + Asc1_Rx_BUF[3];
		if (temp3 > ModBus_PLC_Word_max)
		{
			Asc1_Tx_BUF[1] = 0x86;
			Asc1_Tx_BUF[2] = 0x03;
			Asc1_Tx_lengh = 3;
		}
		else
		{
			//判定寄存器地址是否合法
			//測試數(shù)組01 06 01 01 00 50 D9 CA
			temp4 = temp3;
			if (temp4 > ModBus_PLC_Word_max)						//-------
			{
				Asc1_Tx_BUF[1] = 0x86;
				Asc1_Tx_BUF[2] = 0x02;
				Asc1_Tx_lengh = 3;
			}
			else
			{
				//處理寫請(qǐng)求
				temp3 = temp3 * 2;
				PLC_Word_Buffer.U_W_B_A.word_int[temp3] = Asc1_Rx_BUF[5];
				temp3++;
				PLC_Word_Buffer.U_W_B_A.word_int[temp3] = Asc1_Rx_BUF[4];
				Deal_all_OK = 1;
			}
		}
	}
	if (Deal_all_OK == 1)
	{
		Deal_all_OK = 0;
		Send_Asc0_Rx_buf_Back();
	}
	else
	{
		//計(jì)算發(fā)送緩沖區(qū)
		crc_cal( Asc1_Tx_BUF, Asc1_Tx_lengh );
		Asc1_Tx_lengh += 2;
		//發(fā)送緩沖區(qū)數(shù)據(jù)
		Send_Asc0_Tx_buf();
	}
}

//****************************************************************************
// @Function  	  void Deal_READ_Hold_Registers()
// @Description       讀保持寄存器
//     			01 03 00 0A 00 01 A4 08
//     			01 03 00 0E 00 04 25 CA
//****************************************************************************
__inline void Deal_READ_Hold_Registers()
{
	bit	Deal_all_OK	= 0;
	ubyte	temp1, temp2;
	uword	temp3, temp4;
	//PLC_Word_Buffer.U_W_B_A.uword_value[13]++;
	//PLC_Word_Buffer.U_W_B_A.uword_value[14]++;
	//PLC_Word_Buffer.U_W_B_A.uword_value[15]++;
	//判定功能碼是否合法(03,但是幀長超出8個(gè)字節(jié))
	if (Asc1_Rx_lengh != 8)
	{
		Asc1_Tx_BUF[1] = 0x83;
		Asc1_Tx_BUF[2] = 0x01;
		Asc1_Tx_lengh = 3;
	}
	else
	{
		//判定讀取首地址是否合法
		if (Asc1_Rx_BUF[2] > 0 || Asc1_Rx_BUF[3] > ModBus_PLC_Word_max)
		{
			Asc1_Tx_BUF[1] = 0x83;
			Asc1_Tx_BUF[2] = 0x03;
			Asc1_Tx_lengh = 3;
		}
		else
		{
			//判定讀取末地址是否合法
			temp3 = ( uword ) Asc1_Rx_BUF[4] * 256 + Asc1_Rx_BUF[5];
			temp4 = temp3 + Asc1_Rx_BUF[3];
			if (temp4 > ModBus_PLC_Word_max || Asc1_Rx_BUF[4] > 0)
			{
				Asc1_Tx_BUF[1] = 0x83;
				Asc1_Tx_BUF[2] = 0x02;
				Asc1_Tx_lengh = 3;
			}
			else
			{
				//處理讀請(qǐng)求
				Asc1_Tx_BUF[0] = 0x01;
				Asc1_Tx_BUF[1] = 0x03;
				temp1 = ( ubyte ) ( Asc1_Rx_BUF[5] * 2 );
				Asc1_Tx_BUF[2] = temp1;

				temp3 = Asc1_Rx_BUF[3] * 2;
				//temp4 = temp1+3;	
				Asc1_Tx_lengh = temp1 + 3;					
				Asc1_Tx_BUF_point = &( Asc1_Tx_BUF[3] );
				for (temp2 = temp1 / 2; temp2 > 0; temp2--)
				{
					Asc1_Tx_BUF_point++;
					*Asc1_Tx_BUF_point = PLC_Word_Buffer.U_W_B_A.word_int[temp3++];
					Asc1_Tx_BUF_point--;
					*Asc1_Tx_BUF_point = PLC_Word_Buffer.U_W_B_A.word_int[temp3--];
					temp3 += 2;
					Asc1_Tx_BUF_point += 2;
				}
				Deal_all_OK = 1;
			}
		}
	}
	if (Deal_all_OK == 1)
	{
		Deal_all_OK = 0;
		//計(jì)算發(fā)送緩沖區(qū)
		//Asc1_Tx_lengh =  (ubyte)(temp4);
		crc_cal( Asc1_Tx_BUF, Asc1_Tx_lengh );
		Asc1_Tx_lengh += 2;
		//發(fā)送緩沖區(qū)數(shù)據(jù)
		Send_Asc0_Tx_buf();
	}
	else
	{
		Deal_all_OK = 0;
		//計(jì)算發(fā)送緩沖區(qū)
		crc_cal( Asc1_Tx_BUF, Asc1_Tx_lengh );
		Asc1_Tx_lengh += 2;
		//發(fā)送緩沖區(qū)數(shù)據(jù)
		Send_Asc0_Tx_buf();
	}
}

//****************************************************************************
// @Function  	  void Deal_WRITE_Some_Coil()
// @Description      強(qiáng)制多個(gè)線圈
//     			
//     			
//****************************************************************************
__inline void Deal_WRITE_Some_Coil()
{
}

//****************************************************************************
// @Function  	  void Deal_WRITE_Some_Register()
// @Description      預(yù)置多寄存器  			
//****************************************************************************
__inline void Deal_WRITE_Some_Register()
{
	bit	Deal_all_OK	= 0;
	ubyte	temp1, temp2;//,temp5;
	uword	temp3, temp4;
	//判定功能碼是否合法(16,但是幀長超出8個(gè)字節(jié))
	//包長=  Node + FunCode + StarAdd + RegNum + Hbyte + Infmation + LCR
	//           =   1     +      1       +      2      +      2      +  1	+     N	  +   2
	//           =   N+9
	temp1 = Asc1_Rx_BUF[6] + 9;	
	if (Asc1_Rx_lengh != temp1)
	{
		Asc1_Tx_BUF[1] = 0x90;
		Asc1_Tx_BUF[2] = 0x01;
		Asc1_Tx_lengh = 3;
	}
	else
	{
		//判定寄存器起始地址是否正確
		temp3 = ( uword ) Asc1_Rx_BUF[2] * 256 + Asc1_Rx_BUF[3];
		if (temp3 > ModBus_PLC_Word_max)
		{
			Asc1_Tx_BUF[1] = 0x90;
			Asc1_Tx_BUF[2] = 0x03;
			Asc1_Tx_lengh = 3;
		}
		else
		{
			//判定最后一個(gè)寄存器地址是否正確
			temp4 = ( uword ) Asc1_Rx_BUF[4] * 256 + Asc1_Rx_BUF[5];
			//temp5 = (ubyte)(temp4 - temp3)+1;
			//temp5 *= 2;
			temp4 = Asc1_Rx_BUF[3] + Asc1_Rx_BUF[5] - 1;
			if (temp4 > ModBus_PLC_Word_max)
			{
				Asc1_Tx_BUF[1] = 0x90;
				Asc1_Tx_BUF[2] = 0x02;
				Asc1_Tx_lengh = 3;
			}
			else
			{
				//處理寫請(qǐng)求					
				temp3 = Asc1_Rx_BUF[3] * 2;		//確定開始字節(jié)數(shù)組號(hào)
				temp2 = 8;						//接受信息字節(jié)號(hào)

				for (; temp4 > 0; temp4--)
				{
					//寫字的低字節(jié)
					PLC_Word_Buffer.U_W_B_A.word_int[temp3] = Asc1_Rx_BUF[temp2];
					temp3++;
					temp2--;
					//寫字的高字節(jié)
					PLC_Word_Buffer.U_W_B_A.word_int[temp3] = Asc1_Rx_BUF[temp2];
					temp2 += 3;
					temp3++;
				}
				Deal_all_OK = 1;
			}
		}
	}
	if (Deal_all_OK == 1)
	{
		Deal_all_OK = 0;
		for (temp1 = 0; temp1 < 6; temp1++)
		{
			Asc1_Tx_BUF[temp1] = Asc1_Rx_BUF[temp1];
		}
		Asc1_Tx_lengh = 6;
		crc_cal( Asc1_Tx_BUF, Asc1_Tx_lengh );
		Asc1_Tx_lengh += 2;
		//發(fā)送緩沖區(qū)數(shù)據(jù)
		Send_Asc0_Tx_buf();
	}
	else
	{
		//計(jì)算發(fā)送緩沖區(qū)
		crc_cal( Asc1_Tx_BUF, Asc1_Tx_lengh );
		Asc1_Tx_lengh += 2;
		//發(fā)送緩沖區(qū)數(shù)據(jù)
		Send_Asc0_Tx_buf();
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
...av二区三区久久精品| 777久久久精品| 国产精品剧情在线亚洲| 国产成人精品影视| 国产欧美日韩综合精品一区二区| 成人黄色大片在线观看| 中文字幕一区二区三区乱码在线| 色综合 综合色| 亚洲综合激情另类小说区| 欧美日韩精品免费| 裸体一区二区三区| 久久久久久97三级| 91小宝寻花一区二区三区| 亚洲高清在线精品| 日韩亚洲欧美成人一区| 国产成人在线看| 一区二区欧美视频| 欧美日韩黄色一区二区| 久久国产精品99久久人人澡| 中文字幕乱码亚洲精品一区| 欧美色网站导航| 欧美亚洲一区二区三区四区| 亚洲一区二区欧美| 日韩精品一区二区三区视频| jlzzjlzz欧美大全| 午夜视频在线观看一区二区 | 欧美一二三区在线| 国产夫妻精品视频| 一区二区三区加勒比av| 欧美一区二区三区免费| 不卡免费追剧大全电视剧网站| 亚洲综合一区在线| 精品国产一二三| 91视频免费观看| 精品一区二区三区在线观看国产 | 性欧美疯狂xxxxbbbb| 久久久精品天堂| 精品视频在线视频| 国产成人av一区二区三区在线观看| 亚洲国产日韩精品| 欧美激情综合五月色丁香 | 日韩一级免费一区| 99久久精品国产一区二区三区| 日本色综合中文字幕| 亚洲人成小说网站色在线| 欧美tk丨vk视频| 欧美视频中文一区二区三区在线观看| 国产精品123区| 日韩成人免费看| 一区二区三区在线视频观看| 国产人妖乱国产精品人妖| 欧美探花视频资源| 北条麻妃一区二区三区| 精品制服美女久久| 婷婷国产v国产偷v亚洲高清| 中文字幕一区二区三区不卡在线 | 亚洲欧美激情在线| 国产色爱av资源综合区| 欧美tk丨vk视频| 91精品国产综合久久精品app| 一本大道综合伊人精品热热| av在线不卡观看免费观看| 国产毛片精品一区| 看电视剧不卡顿的网站| 奇米四色…亚洲| 午夜欧美2019年伦理| 亚洲欧美一区二区三区极速播放| 中文字幕不卡的av| 国产精品免费视频一区| 国产三级久久久| 久久久久久久免费视频了| 精品久久久久av影院| 欧美一区二区福利在线| 日韩网站在线看片你懂的| 91精品国产色综合久久不卡蜜臀| 欧美视频精品在线观看| 欧美伦理影视网| 欧美老年两性高潮| 在线不卡免费欧美| 91精品国产高清一区二区三区| 欧美高清视频在线高清观看mv色露露十八| 欧美影视一区在线| 69p69国产精品| 欧美一卡在线观看| 精品盗摄一区二区三区| 国产人妖乱国产精品人妖| 国产精品每日更新| 亚洲私人黄色宅男| 一区二区三区欧美| 午夜精品影院在线观看| 青青草国产精品亚洲专区无| 久久精品国产久精国产爱| 国产一区日韩二区欧美三区| 国产不卡免费视频| 99久久精品国产观看| 在线观看区一区二| 欧美片在线播放| 精品国产一区久久| 国产欧美一区二区精品久导航| 国产精品第四页| 亚洲国产一二三| 六月丁香婷婷久久| 成人99免费视频| 色婷婷av一区二区三区gif | 亚洲老司机在线| 丝瓜av网站精品一区二区| 久国产精品韩国三级视频| 成人午夜激情在线| 欧美日韩在线播放一区| 精品国产一区二区精华| 亚洲欧洲一区二区在线播放| 视频一区国产视频| 国产成人无遮挡在线视频| 91丨porny丨中文| 在线观看91精品国产麻豆| 久久人人超碰精品| 亚洲精品久久7777| 国产真实乱子伦精品视频| 91成人看片片| 欧美mv和日韩mv的网站| 亚洲激情欧美激情| 国模一区二区三区白浆| 色狠狠色狠狠综合| 久久人人爽爽爽人久久久| 亚洲一二三区视频在线观看| 国产剧情一区二区三区| 欧美三级电影网站| 国产精品嫩草久久久久| 免费在线看成人av| 日本韩国欧美三级| 久久久精品免费网站| 五月开心婷婷久久| av一本久道久久综合久久鬼色| 日韩欧美一区二区三区在线| 亚洲一区二区综合| 成人免费高清视频| 日韩欧美www| 丝袜a∨在线一区二区三区不卡| eeuss国产一区二区三区| 精品国产乱码久久久久久1区2区| 亚洲一线二线三线视频| 成熟亚洲日本毛茸茸凸凹| 日韩欧美资源站| 亚洲国产精品久久久男人的天堂| 国产成人超碰人人澡人人澡| 精品日韩一区二区三区免费视频| 亚洲午夜久久久久久久久电影网| 99re6这里只有精品视频在线观看| 337p粉嫩大胆色噜噜噜噜亚洲| 图片区日韩欧美亚洲| 色噜噜偷拍精品综合在线| 国产精品素人一区二区| 国产盗摄女厕一区二区三区| 日韩精品专区在线| 日韩在线卡一卡二| 91精品国产综合久久久久| 亚洲成人动漫一区| 91久久精品网| 亚洲最色的网站| 日本久久一区二区三区| 自拍偷拍亚洲欧美日韩| 成人av第一页| 国产精品超碰97尤物18| 成人免费毛片高清视频| 国产精品国产自产拍在线| 成人黄色片在线观看| 国产精品高潮呻吟| 99麻豆久久久国产精品免费优播| 中文字幕巨乱亚洲| 成人深夜视频在线观看| 国产精品高潮久久久久无| 99国产精品久久久久久久久久| 国产精品福利一区二区三区| heyzo一本久久综合| 亚洲另类春色校园小说| 精品视频1区2区3区| 天天影视网天天综合色在线播放| 欧美日韩性生活| 免费人成在线不卡| 久久久久久麻豆| 粉嫩av一区二区三区| 亚洲欧洲色图综合| 欧美性大战久久久久久久| 首页综合国产亚洲丝袜| 日韩精品一区二区三区视频在线观看| 狠狠狠色丁香婷婷综合激情| 国产精品视频在线看| 色婷婷精品大视频在线蜜桃视频 | 久久精品免费观看| 国产清纯在线一区二区www| 91在线观看下载| 亚洲二区在线观看| 日韩女优毛片在线| 粉嫩绯色av一区二区在线观看| 亚洲精品视频在线观看网站| 欧美一区二区三区四区高清| 国产成人aaaa| 亚洲国产综合人成综合网站| 精品国产一区二区三区忘忧草| 99国产欧美另类久久久精品|