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

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

?? simple_server.c

?? STM32F103VBT6連接網絡芯片ENC28J60的例子
?? C
字號:
/********************************************* * vim:sw=8:ts=8:si:et * To use the above modeline in vim you must have "set modeline" in your .vimrc * Author: Guido Socher * Copyright: GPL V2 * See http://www.gnu.org/licenses/gpl.html * * Ethernet remote device and sensor * UDP and HTTP interface         url looks like this http://baseurl/password/command        or http://baseurl/password/ * * Title: Microchip ENC28J60 Ethernet Interface Driver * Chip type           : ATMEGA88 with ENC28J60 * Note: there is a version number in the text. Search for tuxgraphics *********************************************//********************************************* * modified: 2007-08-08 * Author  : awake * Copyright: GPL V2 * http://www.icdev.com.cn/?2213/ * Host chip: ADUC7026**********************************************/#include <includes.h>#define PSTR(s) s//extern void delay_ms(unsigned char ms);// please modify the following two lines. mac and ip have to be unique// in your local area network. You can not have the same numbers in// two devices:static uint8_t mymac[6] = {0x54,0x55,0x58,0x10,0x00,0x24};static uint8_t myip[4] = {192,168,1,25};// base url (you can put a DNS name instead of an IP addr. if you have// a DNS server (baseurl must end in "/"):static char baseurl[]="http://192.168.1.25/";static uint16_t mywwwport =80; // listen port for tcp/www (max range 1-254)// or on a different port://static char baseurl[]="http://10.0.0.24:88/";//static uint16_t mywwwport =88; // listen port for tcp/www (max range 1-254)//static uint16_t myudpport =1200; // listen port for udp// how did I get the mac addr? Translate the first 3 numbers into ascii is: TUX#define BUFFER_SIZE 1500//400static uint8_t buf[BUFFER_SIZE+1];// the password string (only the first 5 char checked), (only a-z,0-9,_ characters):static char password[]="123456"; // must not be longer than 9 charconst unsigned char WebSide[] = {
"<p><b><span lang=EN-US>A/D </span>溫度監視<span lang=EN-US>:(</span>范圍<span\r\n"
"lang=EN-US>0~<st1:chmetcnv UnitName=\"°C\" SourceValue=\"50\" HasSpace=\"False\"\r\n"
"Negative=\"False\" NumberType=\"1\" TCSC=\"0\" w:st=\"on\">50°C</st1:chmetcnv>)</span></b></p>\r\n"
"\r\n"
"<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=540\r\n"
" style='width:405.0pt;mso-cellspacing:0cm;background:red;border:outset 4.5pt;\r\n"
" mso-padding-alt:0cm 0cm 0cm 0cm'>\r\n"
" <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>\r\n"
"  <td style='padding:0cm 0cm 0cm 0cm'>\r\n"
"  <table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0\r\n"
"   style='mso-cellspacing:0cm;mso-padding-alt:0cm 0cm 0cm 0cm'>\r\n"
"   <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>\r\n"
"    <td style='background:lime;padding:0cm 0cm 0cm 0cm'>\r\n"
"    <p class=MsoNormal><span lang=EN-US>&nbsp;</span></p>\r\n"
"    </td>\r\n"
};// uint8_t verify_password(char *str)	{	// the first characters of the received string are	// a simple password/cookie:	if (strncmp(password,str,5)==0)		{	    return(1);		}	return(0);	}// takes a string of the form password/commandNumber and analyse it// return values: -1 invalid password, otherwise command number//                -2 no command given but password validint8_t analyse_get_url(char *str)	{	uint8_t i=0;	if (verify_password(str)==0)		{		return(-1);		}	// find first "/"	// passw not longer than 9 char:	while(*str && i<10 && *str >',' && *str<'{')		{        if (*str=='/')			{            str++;            break;        	}        i++;        str++;		}	if (*str < 0x3a && *str > 0x2f)		{        // is a ASCII number, return it        return(*str-0x30);		}	return(-2);	}// prepare the webpage by writing the data to the tcp send bufferuint16_t print_webpage(uint8_t *buf,uint8_t on_off)	{    uint16_t plen;    plen=fill_tcp_data_p(buf,0,PSTR("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\nPragma: no-cache\r\n\r\n"));    plen=fill_tcp_data_p(buf,plen,PSTR("<center><p>LED輸出: "));    if (on_off)			{            plen=fill_tcp_data_p(buf,plen,PSTR("<font color=\"#00FF00\"> 亮</font>"));    		}		else			{            plen=fill_tcp_data_p(buf,plen,PSTR("滅"));    		}    plen=fill_tcp_data_p(buf,plen,PSTR(" <small><a href=\""));    plen=fill_tcp_data(buf,plen,baseurl);    plen=fill_tcp_data(buf,plen,password);    plen=fill_tcp_data_p(buf,plen,PSTR("\">[刷新]</a></small></p>\n<p><a href=\""));    // the url looks like this http://baseurl/password/command    plen=fill_tcp_data(buf,plen,baseurl);    plen=fill_tcp_data(buf,plen,password);    if (on_off)			{            plen=fill_tcp_data_p(buf,plen,PSTR("/0\">關閉LED</a><p>"));    		}		else			{            plen=fill_tcp_data_p(buf,plen,PSTR("/1\">開啟LED</a><p>"));    		}    plen=fill_tcp_data_p(buf,plen,PSTR("</center><hr><br>STM32F103VBT6 基于UCOS-II V2.85 WEB 網頁試驗----陽志勇\n"));
    //plen=fill_tcp_data_p(buf,plen,PSTR(WebSide));
        return(plen);	}int simple_server(void)	{          uint16_t plen;    uint16_t dat_p;    uint8_t i=0;    uint8_t cmd_pos=0;    int8_t cmd;    uint8_t payloadlen=0;    char str[30];    char cmdval;        	Del_1ms(100);
	/*initialize enc28j60*/	enc28j60Init(mymac);
	init_ip_arp_udp_tcp(mymac,myip,mywwwport);
    //指示燈狀態:0x476 is PHLCON LEDA(綠)=links status, LEDB(紅)=receive/transmit
    enc28j60PhyWrite(PHLCON,0x7a4);	
	enc28j60clkout(2); // change clkout from 6.25MHz to 12.5MHz	Del_1ms(20);

	//init the ethernet/ip layer:    while(1)    	{		OSTimeDlyHMSM(0, 0, 0, 50);
        // get the next new packet:        plen = enc28j60PacketReceive(BUFFER_SIZE, buf);
        //USART_DMASendData(USART1,buf,plen);
        /*plen will ne unequal to zero if there is a valid packet (without crc error) */
        if(plen==0)        	{            continue;        	}        // arp is broadcast if unknown but a host may also        // verify the mac address by sending it to         // a unicast address.        if(eth_type_is_arp_and_my_ip(buf,plen))        	{			make_arp_answer_from_request(buf);			//USART_DMASendText(USART1,"make_arp_answer_from_request\n");            continue;        	}        // check if ip packets are for us:        if(eth_type_is_ip_and_my_ip(buf,plen)==0)        	{            continue;        	}                if(buf[IP_PROTO_P]==IP_PROTO_ICMP_V && buf[ICMP_TYPE_P]==ICMP_TYPE_ECHOREQUEST_V)        	{            // a ping packet, let's send pong				make_echo_reply_from_request(buf, plen);			//USART_DMASendText(USART1,"make_echo_reply_from_request\n");			continue;        	}               // tcp port www start, compare only the lower byte		if (buf[IP_PROTO_P]==IP_PROTO_TCP_V&&buf[TCP_DST_PORT_H_P]==0&&buf[TCP_DST_PORT_L_P]==mywwwport)			{            if (buf[TCP_FLAGS_P] & TCP_FLAGS_SYN_V)				{                make_tcp_synack_from_syn(buf);                // make_tcp_synack_from_syn does already send the syn,ack                continue;            	}	        if (buf[TCP_FLAGS_P] & TCP_FLAGS_ACK_V)				{	            init_len_info(buf); // init some data structures	            // we can possibly have no data, just ack:	            dat_p=get_tcp_data_pointer();	            if (dat_p==0)					{	                if (buf[TCP_FLAGS_P] & TCP_FLAGS_FIN_V)						{	                    // finack, answer with ack	                    make_tcp_ack_from_any(buf);	                	}	                // just an ack with no data, wait for next packet	                continue;	                }				if (strncmp("GET ",(char *)&(buf[dat_p]),4)!=0)					{			        // head, post and other methods:			        //			        // for possible status codes see:			        // http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html			        plen=fill_tcp_data_p(buf,0,PSTR("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n<h1>200 OK</h1>"));			        goto SENDTCP;					}				if (strncmp("/ ",(char *)&(buf[dat_p+4]),2)==0)					{			        plen=fill_tcp_data_p(buf,0,PSTR("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n"));			        plen=fill_tcp_data_p(buf,plen,PSTR("<p>Usage: "));			        plen=fill_tcp_data(buf,plen,baseurl);			        plen=fill_tcp_data_p(buf,plen,PSTR("password</p>"));			        goto SENDTCP;					}				cmd=analyse_get_url((char *)&(buf[dat_p+5]));				// for possible status codes see:				// http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html				if (cmd==-1)					{			        plen=fill_tcp_data_p(buf,0,PSTR("HTTP/1.0 401 Unauthorized\r\nContent-Type: text/html\r\n\r\n<h1>401 Unauthorized</h1>"));			        goto SENDTCP;					}				if (cmd==1)					{			        //PORTD|= (1<<PD7);// transistor on					//IOCLR |= (1<<26);
                    LED1ON();					i=1;					}				if (cmd==0)					{			        //PORTD &= ~(1<<PD7);// transistor off					//IOSET |= (1<<26);
                    LED1OFF();					i=0;					}				// if (cmd==-2) or any other value				// just display the status:				plen=print_webpage(buf,(i));								SENDTCP:				make_tcp_ack_from_any(buf); // send ack for http get				make_tcp_ack_with_data(buf,plen); // send data				continue;				}			}	// tcp port www end	//	// udp start, we listen on udp port 1200=0x4B0		if (buf[IP_PROTO_P]==IP_PROTO_UDP_V&&buf[UDP_DST_PORT_H_P]==4&&buf[UDP_DST_PORT_L_P]==0xb0)			{			payloadlen=buf[UDP_LEN_L_P]-UDP_HEADER_LEN;			// you must sent a string starting with v			// e.g udpcom version 10.0.0.24			if (verify_password((char *)&(buf[UDP_DATA_P])))				{				// find the first comma which indicates 				// the start of a command:				cmd_pos=0;				while(cmd_pos<payloadlen)					{					cmd_pos++;					if (buf[UDP_DATA_P+cmd_pos]==',')						{					    cmd_pos++; // put on start of cmd					    break;						}					}				// a command is one char and a value. At				// least 3 characters long. It has an '=' on				// position 2:				if (cmd_pos<2 || cmd_pos>payloadlen-3 || buf[UDP_DATA_P+cmd_pos+1]!='=')					{					strcpy(str,"e=no_cmd");					goto ANSWER;					}				// supported commands are				// t=1 t=0 t=?				if (buf[UDP_DATA_P+cmd_pos]=='t')					{					cmdval=buf[UDP_DATA_P+cmd_pos+2];					if(cmdval=='1')							{						    //PORTD|= (1<<PD7);// transistor on							//IOCLR |= (1<<26);
                            //LED1ON();						    strcpy(str,"t=1");						    goto ANSWER;							}						else if(cmdval=='0')							{						    //PORTD &= ~(1<<PD7);// transistor off							//IOSET |= (1<<26);
                            //LED1OFF();						    strcpy(str,"t=0");						    goto ANSWER;							}						else if(cmdval=='?')							{	/*
						    if (IOPIN & (1<<26))								{					            strcpy(str,"t=1");					            goto ANSWER;						    	}
	*/						    strcpy(str,"t=0");						    goto ANSWER;							}					}				strcpy(str,"e=no_such_cmd");				goto ANSWER;				}			strcpy(str,"e=invalid_pw");			ANSWER:			make_udp_reply_from_request(buf,str,strlen(str),myudpport);						}		}//        return (0);	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久久电影| 欧美国产一区在线| 蜜臀久久99精品久久久画质超高清| 欧美日韩在线电影| 麻豆91精品视频| 国产精品视频你懂的| 成人精品亚洲人成在线| 亚洲精品国产精华液| 欧美成人一区二区三区在线观看| 国产成人午夜99999| 亚洲综合区在线| 亚洲精品一区二区精华| 91美女福利视频| 久久国产剧场电影| 亚洲精品国产视频| 久久精品欧美日韩| 欧美日韩精品一区二区天天拍小说 | 欧美一级理论片| 成人性生交大片免费看中文| 日韩高清在线一区| 国产精品久久久久影院老司| 日韩美女视频在线| 在线观看成人免费视频| 国产成a人亚洲精| 青青草一区二区三区| 伊人一区二区三区| 国产精品欧美一区喷水| 精品国产一区二区亚洲人成毛片| 欧洲在线/亚洲| 不卡的电影网站| 蜜臀精品一区二区三区在线观看 | 国产一区欧美二区| 偷窥国产亚洲免费视频| 亚洲精选在线视频| 18成人在线观看| 国产亚洲欧美日韩日本| 日韩精品一区在线观看| 欧美日韩成人综合天天影院 | 日本精品一级二级| 成人性生交大片免费看在线播放| 久久精品国产免费| 人人精品人人爱| 无码av免费一区二区三区试看 | www.av亚洲| 国产福利精品一区| 久久丁香综合五月国产三级网站| 三级成人在线视频| 捆绑调教美女网站视频一区| 九九久久精品视频| 国产精品88888| 高清在线不卡av| a美女胸又www黄视频久久| 99riav久久精品riav| 日本精品一区二区三区高清 | 国产不卡视频在线播放| 成人午夜伦理影院| 91猫先生在线| 欧美老人xxxx18| 精品日韩在线一区| 国产精品亲子伦对白| 亚洲欧美另类久久久精品| 一区二区三区四区蜜桃 | 国产大陆精品国产| 99re6这里只有精品视频在线观看| 色婷婷一区二区三区四区| 欧美日韩久久久久久| 日韩欧美中文字幕精品| 久久先锋影音av| 亚洲日本中文字幕区| 午夜视频在线观看一区二区| 免费xxxx性欧美18vr| 高清在线成人网| 欧美性做爰猛烈叫床潮| 精品国产第一区二区三区观看体验| 久久人人97超碰com| 亚洲美女免费视频| 免费观看久久久4p| 成人自拍视频在线| 欧洲精品一区二区三区在线观看| 欧美一级日韩免费不卡| 国产精品色呦呦| 亚洲国产精品久久一线不卡| 韩国女主播一区二区三区| 972aa.com艺术欧美| 欧美高清视频一二三区 | 26uuu国产在线精品一区二区| 国产精品激情偷乱一区二区∴| 亚洲国产日韩在线一区模特| 九九久久精品视频| 91久久香蕉国产日韩欧美9色| 日韩欧美在线123| 自拍偷拍欧美精品| 激情五月婷婷综合网| 色菇凉天天综合网| 久久精品综合网| 丝袜a∨在线一区二区三区不卡| 国产美女娇喘av呻吟久久| 欧亚洲嫩模精品一区三区| 久久久99精品久久| 午夜精品视频一区| 色婷婷av一区| 国产欧美综合在线观看第十页| 亚洲国产综合在线| 成年人国产精品| 欧美精品一区男女天堂| 亚洲二区视频在线| 91色porny| 中文字幕精品一区二区三区精品| 青青草国产成人av片免费| 日本韩国一区二区| 国产精品久久久久久久久免费樱桃 | 日本高清视频一区二区| 欧美成人精精品一区二区频| 亚洲一区二区精品视频| 粉嫩aⅴ一区二区三区四区五区| 日韩一区二区视频在线观看| 一区二区三区 在线观看视频| 成人国产视频在线观看| 久久女同精品一区二区| 久久精品999| 91麻豆精品91久久久久久清纯| 一区二区三区在线播放| 99re热这里只有精品视频| 欧美国产成人精品| 国产在线播放一区二区三区| 日韩女优电影在线观看| 日本最新不卡在线| 在线成人免费视频| 手机精品视频在线观看| 欧美性色黄大片手机版| 亚洲综合色噜噜狠狠| 在线免费观看不卡av| 自拍偷拍国产精品| 色婷婷综合久色| 亚洲精品久久久久久国产精华液| 成人av网站在线观看| 国产精品萝li| 91麻豆国产精品久久| 亚洲色图19p| 91国偷自产一区二区三区观看 | 91.xcao| 天堂va蜜桃一区二区三区漫画版| 欧美体内she精高潮| 亚洲成人黄色小说| 欧美日高清视频| 麻豆精品新av中文字幕| 精品国产免费人成在线观看| 国产在线观看一区二区| 国产性做久久久久久| 成人av午夜电影| 亚洲视频一二三| 精品视频在线看| 免费看欧美女人艹b| 久久这里只有精品6| 懂色av一区二区三区免费观看 | 久久精品国产亚洲5555| 久久综合九色综合欧美亚洲| 国产精品91一区二区| 国产婷婷色一区二区三区四区| 成人精品高清在线| 亚洲午夜一区二区三区| 欧美电影免费观看高清完整版在 | 欧美日韩一区二区三区视频| 视频在线观看91| 欧美精品一区二区不卡| 丁香六月久久综合狠狠色| 亚洲天堂免费看| 69久久夜色精品国产69蝌蚪网| 久久精品国产亚洲一区二区三区| 久久夜色精品国产噜噜av| 99久久婷婷国产精品综合| 亚洲综合在线观看视频| 日韩一区二区免费高清| 国产盗摄女厕一区二区三区| 亚洲美女区一区| 欧美v国产在线一区二区三区| 成人污视频在线观看| 午夜日韩在线电影| 久久久久9999亚洲精品| 欧美性生交片4| 国产真实乱对白精彩久久| 亚洲老妇xxxxxx| 精品免费日韩av| 在线观看日韩一区| 国产美女视频91| 亚洲va在线va天堂| 国产精品久久久久久久久图文区| 911精品国产一区二区在线| 成人福利视频在线看| 麻豆成人免费电影| 一区二区三区日韩精品| 国产午夜亚洲精品理论片色戒| 欧美日韩一区二区三区免费看 | 裸体一区二区三区| 亚洲男同性恋视频| 国产亚洲成aⅴ人片在线观看 | 欧美日韩一区二区三区在线| 国产成人午夜精品5599| 蜜桃一区二区三区在线观看| 亚洲免费电影在线|