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

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

?? main(bl2100).c

?? rabbit現場采集
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*
 * Coil Status Register Buffer
 * 0~31->portB;32~63->portC;64~95->portD
 *
 * 96~99 digital output buffer
 * OUT0-OUT9-standard digital outputs, 0~40 V DC
 */
unsigned int Port_CoilStat[100];//0~31->portB;32~63->portC;64~95->portD

/*
 * Input Status Register Buffer
 * 0~31->portB;32~63->portC;64~95->portD
 *
 * 96~99 digital intput buffer
 */
unsigned int Port_InputStat[100];//0~31->portB;32~63->portC;64~95->portD

CoData cd_portB,cd_portC,cd_portD;

/******************************************************************************
*****************
*******************************************************************************/

void get_parameters(char *buffer,int FORMSpecSize)
{
	int i;
	for(i=0; i<FORMSpecSize; i++)
	{
		if(http_scanpost(FORMSpec[i].name, buffer, FORMSpec[i].value,MAX_FORMSIZE))
		FORMSpec[i].value ="";
	}
	strcpy(T1,FORMSpec[0].value);
	strcpy(T2,FORMSpec[1].value);
	strcpy(T3,FORMSpec[2].value);
	strcpy(T4,FORMSpec[3].value);
	strcpy(T5,FORMSpec[4].value);
	strcpy(T6,FORMSpec[5].value);

	strcpy(D1,FORMSpec[6].value);
	strcpy(D2,FORMSpec[7].value);
	strcpy(D3,FORMSpec[8].value);
	strcpy(D4,FORMSpec[9].value);
	strcpy(D5,FORMSpec[10].value);
	strcpy(D6,FORMSpec[11].value);
	strcpy(D7,FORMSpec[12].value);
	strcpy(D8,FORMSpec[13].value);
	strcpy(D9,FORMSpec[14].value);

	strcpy(R1,FORMSpec[15].value);
	strcpy(R2,FORMSpec[16].value);
	strcpy(R3,FORMSpec[17].value);
	strcpy(R4,FORMSpec[18].value);
	strcpy(R5,FORMSpec[19].value);
	strcpy(R6,FORMSpec[20].value);
	strcpy(R7,FORMSpec[21].value);
    return;
};
/*
 * parse the url-encoded POST data into the FORMSpec struct
 * (ie: parse 'foo=bar&baz=qux' into the struct
 */
int parse_post(HttpState* state)
{
	auto int retval;
	auto int i;
	// state->s is the socket structure, and state->p is pointer
	// into the HTTP state buffer (initially pointing to the beginning
	// of the buffer).  Note that state->p was set up in the submit
	// CGI function.  Also note that we read up to the content_length,
	// or HTTP_MAXBUFFER, whichever is smaller.  Larger POSTs will be
	// truncated.
	retval = sock_aread(&state->s, state->p,(state->content_length < HTTP_MAXBUFFER-1)?(int)state->content_length:HTTP_MAXBUFFER-1);

	if (retval < 0)
	{
		// Error--just bail out
		return 1;
	}

	// Using the subsubstate to keep track of how much data we have received
	state->subsubstate += retval;

	if (state->subsubstate >= state->content_length)
	{
		// NULL-terminate the content buffer
		state->buffer[(int)state->content_length] = '\0';

		//for (i=0;i<state->subsubstate-1;i++){
		//printf("%c ",state->buffer[i]);
		//}
		//printf("\r\n");
		// Scan the received POST information into the FORMSpec structure
		//get_parameters(state->buffer,sizeof(FORMSpec)/sizeof(FORMType));
		//for (i =0;i<21;i++) printf("FORMSpec[%d]:%s\r\n",i,FORMSpec[i].value);

		// Finished processing--returning 1 indicates that we are done
		return 1;
	}
	// Processing not finished--return 0 so that we can be called again
	return 0;
}

/* initialized http variable*/
void init_FORMSpecName(void)
{
	int i;
	/* init FORM searchable names - must init ALL FORMSpec structs! */
	//point5
    for(i=0;i<22;i++)
	{
        FORMSpec[i].name = FORMSpecName[i];
		/*
		FORMSpec[0].name = "T1"; 		//host ip
		FORMSpec[1].name = "T2"; 		//SUBNET MASK
		FORMSpec[2].name = "T3"; 		//DEFAULT GATEWAY
		FORMSpec[3].name = "T4"; 		//UNIT INDEX
		FORMSpec[4].name = "T5"; 		//UPDATE INTERVAL
		FORMSpec[5].name = "T6"; 		//REPLY TIMEOUT

		FORMSpec[6].name = "D1"; 		//port A baud rate
		FORMSpec[7].name = "D2"; 		//port A parity
		FORMSpec[8].name = "D3"; 		//port A protocol select
		FORMSpec[9].name = "D4";  		//port B baud rate
		FORMSpec[10].name = "D5";  	//port B parity
		FORMSpec[11].name = "D6";  	//port B protocol select
		FORMSpec[12].name = "D7"; 		//port C baud rate
		FORMSpec[13].name = "D8"; 		//port C parity
		FORMSpec[14].name = "D9"; 		//port C protocol select

		FORMSpec[15].name = "R1";  	//ethernet protocol type
		FORMSpec[16].name = "R2"; 		//port A data bits
		FORMSpec[17].name = "R3"; 		//port A stop bits
		FORMSpec[18].name = "R4";  	//port B data bits
		FORMSpec[19].name = "R5";  	//port B stop bits
		FORMSpec[20].name = "R6"; 		//port C data bits
		FORMSpec[21].name = "R7"; 		//port C stop bits
		//	FORMSpec[22].name = "C1";  //unsolicited message select
		*/
	}
	return;
};

long conver_baudrate(int selectval)
{
	long bps;

	switch (selectval)
	{
		case 0:
			bps = 300;
			break;
		case 1:
			bps = 1200;
			break;
		case 2:
			bps = 2400;
			break;
		case 3:
			bps = 4800;
			break;
		case 4:
			bps = 9600;
			break;
		case 5:
			bps = 19200;
			break;
		case 6:
			bps = 38400;
			break;
		case 7:
			bps = 115200;
			break;
		default:
			bps = 19200;
			break;
	}
	return bps;
}

void hardware_subsys_init(void)
{
	long baudrate;
/*******************************************************************************
*                            initializing serial port                          *
*******************************************************************************/
	serMode(0x00);
//					Mode 	Port B      	PortC    		PortD
//					----	------			-----  			-----
//    				0		RS232 3wire		RS232 3wire   	RS485 3wire
//    				1		RS232 5wire		CTS/RTS			RS485 3wire
	//init portB
	baudrate =  conver_baudrate(atoi(D1));
	serBopen(baudrate);
	serBparity(atoi(D2));	// PARAM_EPARITY		0x01
					  		// PARAM_OPARITY		0x02
					  		// PARAM_2STOP 			0x03
					  		// PARAM_NOPARITY 		0x00   and stop 1 bit

	serBdatabits(atoi(R2));	// PARAM_7BIT	0x01
							// PARAM_8BIT	0x00
	serBwrFlush();
	serBrdFlush();

	//init portC
	baudrate =  conver_baudrate(atoi(D4));
	serCopen(baudrate);
	serCparity(atoi(D5));	// PARAM_EPARITY		0x01
					  		// PARAM_OPARITY		0x02
					  		// PARAM_2STOP 			0x03
					  		// PARAM_NOPARITY 		0x00

	serCdatabits(atoi(R4));	// PARAM_7BIT	0x01
							// PARAM_8BIT	0x00
	serCwrFlush();
	serCrdFlush();

	//init portD
	baudrate =  conver_baudrate(atoi(D7));
	serDopen(baudrate);
	serDparity(atoi(D8));	// PARAM_EPARITY		0x01
					  		// PARAM_OPARITY		0x02
					  		// PARAM_2STOP 			0x03
					  		// PARAM_NOPARITY 		0x00

	serDdatabits(atoi(R6));	// PARAM_7BIT	0x01
							// PARAM_8BIT	0x00
	serDwrFlush();
	serDrdFlush();

	//
	//initializing ethernet
	//tcp_config("MY_IP_ADDRESS","192.168.1.100");
	//tcp_config("MY_NETMASK","255.255.255.0");
	//tcp_config("MY_GATEWAY","192.168.1.1");

	tcp_config("MY_IP_ADDRESS",T1);
	tcp_config("MY_NETMASK",T2);
	tcp_config("MY_GATEWAY",T3);

	//tcp_config("MY_IP_ADDRESS","10.61.204.76");
	//tcp_config("MY_NETMASK","255.255.252.0");
	//tcp_config("MY_GATEWAY","10.61.204.50");
}

void exception_responses(char *rbuf,char*sbuf,char errcode)
{
	memcpy(sbuf,rbuf,8);
	sbuf[7] |= 0x80;
	sbuf[8] = errcode;
	sbuf[5] = 3;
	mbtcpstate->cmdlen += 9;
	//return;
}


root int parse_combin_fun1_2(char *rbuf,char*sbuf,unsigned int *realdatabuf)
{
/*
* read coil status ,Class 1 commands (FC1,FC2)
*/
	auto unsigned int offset,length,i,j,wordsoffset,bitsoffset,word_value;

	memcpy(sbuf,rbuf,8);
	offset = rbuf[8]*256;
	offset += rbuf[9];
	if (offset>=1600){exception_responses(rbuf,sbuf,0x02);return -1;} //ILLEGAL DATA ADDRESS

	length = rbuf[10]*256;
	length +=rbuf[11];
	sbuf[8] = (char)((length+7)/8);
	//sbuf[8] = (char)(length/8);
	//sbuf[8] = (length % 8)>0 ? sbuf[8]+1: sbuf[8];

	j=0;
 	for (i=0;i<length;i++)
	{
		wordsoffset = (offset+i)/16;
		bitsoffset = (offset+i) % 16;
		word_value = realdatabuf[wordsoffset];
		if(i%0x8 ==0)
		{
			j = i/0x8;
			sbuf[j+9] = 0x0;
		}
		else j= i/0x8;
		if(BIT(&word_value , bitsoffset))
		{
			SET(sbuf+j+9,i%0x8);
		}
    	sbuf[5]=j+1;
 	}
	sbuf[5]+=3;
 	mbtcpstate->cmdlen += (6 + sbuf[5]);

    return 0;
}

root int parse_combin_fun3_4(char *rbuf,char*sbuf,int* realdatabuf){
/*
* read holding register , Class 0 command (FC3),Class 1 command (FC4)
*/

	auto union {int word_value; char byte_value[2];}hreg_value;
	auto unsigned int offset,length,i,j;

	memcpy(sbuf,rbuf,8);
	offset = rbuf[8]*256;
	offset += rbuf[9];
	if (offset>=1600){exception_responses(rbuf,sbuf,0x02);return -1;} //ILLEGAL DATA ADDRESS

	length = rbuf[10]*256;
	length +=rbuf[11];
	sbuf[8] =(char)(length*2) ;
	j=0;
	for (i=0;i<length;i++)
	{
		hreg_value.word_value = realdatabuf[offset+i];
		sbuf[j+9]= hreg_value.byte_value[1];
		sbuf[j+10]= hreg_value.byte_value[0];
		j++;
		j++;
		sbuf[5]=j;
	}
	sbuf[5]+=3;
	mbtcpstate->cmdlen += (6 + sbuf[5]);

    return 0;
}
root int poke_combin_fun6(char *rbuf,char*sbuf,int* realdatabuf){
/*
* read holding register , Class 0 command (FC6)
*/

	auto unsigned int offset,value,i,j;

	memcpy(sbuf,rbuf,8);
	offset = rbuf[8]*256;
	offset += rbuf[9];
	if (offset>=1600){return -1;} //ILLEGAL DATA ADDRESS

	value = rbuf[10]*256 + rbuf[11];
	realdatabuf[offset] = value;

	mbtcpstate->cmdlen += (6 + sbuf[5]);

    return 0;


}
root int receive_mbtcp_data(char *buf, int len)
{
	/*
	 * this is a user-function that will recieve the data
	 * as it comes in. (buf points to the buffer, len is the
	 * length of the data that was received.)
	 *
	 * Note - When this function returns, the buffer will be
	 * overwritten, so if you want the data, it should be
	 * coppied out of the buffer before the function returns.
	 *
	 * Nothing is done with it for now; it is just dropped on
	 * the floor.
	 */

	auto int i,funnum;
	auto char *lpbuf;
	auto char *lpcmdbuf;

//	printf ("recev:");
//  for(i=0;i<len;i++){printf("%d ",buf[i]);}
//  printf ("\r\n");

	lpbuf = buf;
	lpcmdbuf = mbtcpstate->cmdbuf;

	for(;(len!=0 && len>0 && (lpbuf-buf)<len);)
	{// invail modbus function number
		if(lpbuf[7]!=1 && lpbuf[7]!=2 && lpbuf[7]!=3 && lpbuf[7]!=4 && lpbuf[7]!=5 && lpbuf[7]!=6)
		{
			return -1;
		}
   		funnum = lpbuf[7];

		//if((buf[5]+6)==len && buf[4] ==0){
		switch (funnum  /*modbus function code*/)
		{
	   		case 1: //read Coil status
         		parse_combin_fun1_2(lpbuf,lpcmdbuf,Port_CoilStat);
					lpbuf +=12;
					lpcmdbuf = mbtcpstate->cmdbuf + mbtcpstate->cmdlen;
 		   		break;

 	  		case 2: //read input status
         		parse_combin_fun1_2(lpbuf,lpcmdbuf,Port_InputStat);
					lpbuf +=12;
					lpcmdbuf = mbtcpstate->cmdbuf + mbtcpstate->cmdlen;
   				break;

	   		case 3: //read holding registers
					parse_combin_fun3_4(lpbuf,lpcmdbuf,Port_HoldingReg);
					lpbuf +=12;
					lpcmdbuf = mbtcpstate->cmdbuf + mbtcpstate->cmdlen;

				//printf ("send:");
				//for(i=0;i<state->cmdlen;i++){printf("%d ",state->cmdbuf[i]);}
				//printf ("\r\n");

   				break;
	   		case 4: //read input registers
					parse_combin_fun3_4(lpbuf,lpcmdbuf,Port_InputReg);
					lpbuf +=12;
					lpcmdbuf = mbtcpstate->cmdbuf + mbtcpstate->cmdlen;
   				break;
	   		case 5: //force sigle Coil
   				break;
	   		case 6: //preset sigle holding register
				poke_combin_fun6(lpbuf,lpcmdbuf,Port_HoldingReg);
				Write_IO();
				lpbuf +=12;
				lpcmdbuf = mbtcpstate->cmdbuf + mbtcpstate->cmdlen;
   				break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99这里只有久久精品视频| 欧美精品三级在线观看| 精品福利一区二区三区| 秋霞午夜鲁丝一区二区老狼| 9191久久久久久久久久久| 亚瑟在线精品视频| 欧美精三区欧美精三区| 肉肉av福利一精品导航| 精品黑人一区二区三区久久| 国产在线视频一区二区三区| 中文字幕成人在线观看| 色婷婷国产精品综合在线观看| 亚洲精品视频一区| 欧美偷拍一区二区| 午夜一区二区三区视频| 91精品国产品国语在线不卡| 久久99国产乱子伦精品免费| 精品国产3级a| 97国产一区二区| 日本伊人色综合网| 久久久欧美精品sm网站| 成人一区在线看| 亚洲国产成人高清精品| 欧美v亚洲v综合ⅴ国产v| 不卡的电影网站| 亚洲电影欧美电影有声小说| 久久久青草青青国产亚洲免观| 91尤物视频在线观看| 捆绑紧缚一区二区三区视频| 国产精品久久久久久久蜜臀| 欧美专区日韩专区| 国产高清成人在线| 亚洲成人综合网站| 国产精品天天看| 日韩一级高清毛片| 色94色欧美sute亚洲13| 黑人巨大精品欧美一区| 亚洲国产日韩精品| 中文一区二区完整视频在线观看| 欧美老肥妇做.爰bbww| www.亚洲激情.com| 精一区二区三区| 亚洲www啪成人一区二区麻豆| 一区在线观看视频| 久久精品视频一区| 久久久久99精品一区| 日韩三级视频在线观看| 欧美无乱码久久久免费午夜一区| 高清beeg欧美| 国产精品自拍av| 国产一区在线看| 免费在线看成人av| 午夜天堂影视香蕉久久| 亚洲一区二区不卡免费| 亚洲美女在线一区| 亚洲精品伦理在线| 亚洲日本在线观看| 亚洲久草在线视频| 亚洲免费在线观看视频| 中文字幕亚洲电影| 欧美国产一区二区在线观看| 久久久精品免费免费| 久久久久久久久久久久久久久99 | 亚洲精品成人少妇| 欧美国产精品v| 国产精品视频线看| 中文字幕在线不卡| 中文字幕一区二区三区色视频| 久久精品在线免费观看| 久久久电影一区二区三区| 国产日韩av一区| 亚洲三级免费观看| 亚洲成av人片在线观看| 男人操女人的视频在线观看欧美| 乱一区二区av| 福利91精品一区二区三区| 成人免费毛片高清视频| 色综合天天做天天爱| 久久99久久99小草精品免视看| 欧美色老头old∨ideo| 91啦中文在线观看| 色欧美88888久久久久久影院| 成人av先锋影音| yourporn久久国产精品| 欧美自拍偷拍一区| 欧美α欧美αv大片| 亚洲精品国产一区二区三区四区在线 | 亚洲欧美一区二区久久| 一区二区三区日韩在线观看| 亚洲国产一区在线观看| 久久成人免费网| 99精品视频中文字幕| 91精品国产综合久久久蜜臀粉嫩| 精品日韩99亚洲| 综合自拍亚洲综合图不卡区| 五月激情综合婷婷| 国产91露脸合集magnet | 欧美日韩不卡在线| 2024国产精品视频| 亚洲欧美综合在线精品| 日日骚欧美日韩| 国产电影一区二区三区| 91成人国产精品| 久久久99免费| 天堂蜜桃一区二区三区| 成人性生交大片免费| 欧美精品丝袜中出| 国产精品久久看| 久久精品噜噜噜成人av农村| 成人av在线网站| 欧美不卡视频一区| 亚洲国产毛片aaaaa无费看| 国产九色sp调教91| 日韩亚洲欧美在线| 亚洲国产美女搞黄色| 国产不卡在线播放| 精品国产污污免费网站入口 | 一区二区三区在线视频观看| 蜜臀av一区二区在线免费观看| 成人免费观看av| 精品久久国产字幕高潮| 亚洲国产一区二区视频| 91美女在线看| 中文字幕永久在线不卡| 九色综合国产一区二区三区| 欧美视频日韩视频| 日韩理论片网站| 国产成人精品影视| 欧美精品一区二区三区一线天视频| 亚洲一区二区三区中文字幕在线| 国产成人精品一区二| 久久精品夜色噜噜亚洲a∨| 奇米影视在线99精品| 4438亚洲最大| 亚洲成a人片在线不卡一二三区| 91在线视频网址| 亚洲日本青草视频在线怡红院| 福利电影一区二区三区| 欧美激情中文字幕| 白白色 亚洲乱淫| 亚洲色图第一区| 色中色一区二区| 亚洲午夜免费电影| 欧美日韩精品二区第二页| 性做久久久久久免费观看欧美| 在线看日韩精品电影| 亚洲综合久久久久| 精品视频在线免费看| 午夜影院在线观看欧美| 欧美一区永久视频免费观看| 日本三级韩国三级欧美三级| 日韩欧美国产精品一区| 极品少妇xxxx精品少妇偷拍| 亚洲综合激情网| 欧美三片在线视频观看 | 欧美电影免费观看高清完整版| 麻豆一区二区99久久久久| 久久久噜噜噜久久中文字幕色伊伊| 国产河南妇女毛片精品久久久| 国产精品欧美久久久久一区二区| 972aa.com艺术欧美| 午夜电影网一区| 久久久天堂av| 91福利社在线观看| 麻豆精品一区二区av白丝在线| 国产日韩精品一区| 在线精品观看国产| 精品制服美女久久| 国产精品久久久久久久久久免费看| 91亚洲精品久久久蜜桃| 午夜a成v人精品| 国产欧美日韩在线视频| 在线一区二区三区做爰视频网站| 日韩在线播放一区二区| 国产欧美日韩精品一区| 欧美三级视频在线| 美脚の诱脚舐め脚责91| 欧美www视频| 在线免费亚洲电影| 国产一区二区在线电影| 亚洲夂夂婷婷色拍ww47| 久久久国产午夜精品 | 亚洲成人免费影院| 久久久精品影视| 欧美丰满嫩嫩电影| 成人免费视频免费观看| 五月天丁香久久| 亚洲欧洲www| 久久久久久99精品| 3d成人h动漫网站入口| 99久久精品情趣| 国产一区日韩二区欧美三区| 一个色在线综合| 最好看的中文字幕久久| 久久久久久久久免费| 日韩无一区二区| 欧美高清视频一二三区 | 精品免费一区二区三区| 精品污污网站免费看| 色哟哟欧美精品|