📄 main.c
字号:
/*
该程序既可以用我的界面来控制,也可以显示网页
通过宏定义作开关 DebugHttp
该程序的IP地址为10.10.0.70
网关:10.10.0.1
子网掩码:255.255.255.0
端口:1001
温子祺____________________
佛山科学技术学院
日期:2008/11/6
*/
#include "..\GloblDef\GloblDef.h"
#include "..\TCPIP\TCPIPmem.h"
#include "..\Netif\RTL8019.h"
#include "..\TCPIP\IP.h"
#include "..\Netif\etherif.h"
#include "..\Netif\ARP.h"
#include "..\TCPIP\Netif.h"
#include "..\TCPIP\TCP.h"
#include "..\App\main.h"
//用于网页显示还是控制LED灯模式
#ifndef DebugHttp
//#define DebugHttp
#endif
#define DATA_SIZE 0x500
BYTE DT_XDATA DataBlock[DATA_SIZE];
BYTE DT_XDATA str[]="hello";
socket DT_XDATA * DT_XDATA ExConn;
socket DT_XDATA * DT_XDATA ExAccept;
socket DT_XDATA * DT_XDATA ExListen;
//自己添加的网页部分-------------------------------------------------
#ifdef DebugHttp
#define HTTP_SERVER_PORT 80
socket DT_XDATA * DT_XDATA HttpSocket = NULL;
socket DT_XDATA * DT_XDATA ExAccept = NULL;
void OnHttpAccept(socket DT_XDATA *) REENTRANT_MUL;
char xdata htmlpage[] =
{
"HTTP/1.0 200 OK\nContent-Type: text/html\n\n"
"<HTML><HEAD><TITLE>欢迎来到温子祺的主页</TITLE></HEAD>"
"<table border=\"1\" width=\"100%\" height=\"81\">"
"<tr>"
"<td width=\"200%\" colspan=\"2\" height=\"24\">"
"<p align=\"center\">"
"<font color=\"#FF0000\">"
"温子祺,佛山科学技术学院(致:亲爱的林德彬老师)</font></td>"
"</tr>"
"<br>"
"^_^ 没有林老师的关怀,就没有我的成长.谢谢林老师.我爱林老师呢 ^_^</br>"
"</HTML>"
};
char xdata htmlpage_k[] =
{
"HTTP/1.0 200 OK\nContent-Type: text/html\n\n"
"<HTML><HEAD><TITLE>欢迎来到温子祺的主页</TITLE></HEAD>"
"<table border=\"1\" width=\"100%\" height=\"81\">"
"<tr>"
"<td width=\"200%\" colspan=\"2\" height=\"24\">"
"<p align=\"center\">"
"<font color=\"#DE0000\">"
"总之十分感谢林老师,就是了....林老师还是挺好人的呢</font></td>"
"</tr>"
"<br>"
"希望林老师能够提供更加多的机会给我们实践呢 ^_^ [敬爱的林德彬老师]</br>"
"</HTML>"
};
unsigned int count=0;
#endif
void OnReceive(void DT_XDATA * buf,WORD size) REENTRANT_MUL
{
TCPSend(ExConn,buf,size);
}
void OnAcceptRecv(void DT_XDATA *buf,WORD size) REENTRANT_MUL
{
unsigned int i;
unsigned int RecTemp;
TCPSend(ExAccept,buf,size);
#ifdef DebugHttp
TCPAbort(ExAccept);
TCPClose(ExAccept);
#endif
for(i<0;i<=100;i++)
{
RecTemp=(*((BYTE DT_XDATA *)buf)++);
switch(RecTemp)
{
case 'a': P1_0=0;break;
case 'b': P1_1=0;break;
case 'c': P1_2=0;break;
case 'd': P1_3=0;break;
case 'e': P1_4=0;break;
case 'f': P1_5=0;break;
case 'g': P1_6=0;break;
case 'h': P1_7=0;break;
case 'A': P1_0=1;break;
case 'B': P1_1=1;break;
case 'C': P1_2=1;break;
case 'D': P1_3=1;break;
case 'E': P1_4=1;break;
case 'F': P1_5=1;break;
case 'G': P1_6=1;break;
case 'H': P1_7=1;break;
case 'Q': P1=0xff;break;
case 'q': P1=0x00;break;
default :break;
}
}
}
void OnAccept(socket DT_XDATA *pNewSocket) REENTRANT_MUL
{
ExAccept = pNewSocket;
pNewSocket->recv = OnAcceptRecv;
pNewSocket->close = OnClose;
}
void OnClose(socket DT_XDATA * pSocket) REENTRANT_MUL
{
TCPClose(pSocket);
}
void Timer() REENTRANT_MUL interrupt 1
{
TH0 = 0x3C; /*TIMER_24M_25MS_H;*/
TL0 = 0xAA; /*TIMER_24M_25MS_L;*/
NetIfTimer();
ARPTimer();
TCPTimer();
}
void SerialInit()
{
/* set TI to 1, set TR1 to 1 */
SCON = 0x52;/* SM0 SM1 =1 SM2 REN TB8 RB8 TI RI */
TMOD = 0x20;/* GATE=0 C/T-=0 M1 M0=2 GATE C/T- M1 M0 */
TH1 = 0xE6; /* TH1=E6 4800 when at 24MHz,TH1=F3,9600,24MHz */
PCON = 0x80;
TCON = 0x40;/* 01101001 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT */
}
void InterruptInit()
{
TMOD |= 0x01;
TH0 = 0x3C; /*TIMER_24M_25MS_H;*/
TL0 = 0xAA; /*TIMER_24M_25MS_L;*/
TR0 = 1;
/* open interrupt for rtl and timer */
EA = 1;
/* EX0 = 1; */
ET0 = 1;
}
//自己添加的------------------------
#ifdef DebugHttp
sfr P4 = 0xe8;
sbit CONT = P4^3;
void OnHttpClose(socket DT_XDATA * pSocket) REENTRANT_MUL
{
TCPClose(pSocket); /* we close too */
}
void OnHttpAccept(socket DT_XDATA *pNewSocket) REENTRANT_MUL
{
WORD i;
BYTE te;
ExAccept = pNewSocket;
pNewSocket->recv = OnAcceptRecv;
pNewSocket->close = OnHttpClose;
htmlpage[416]=te/100+0x30;
htmlpage[417]=te%100/10+0x30;
htmlpage[419]=te%10+0x30;
count++;
if(count>65534) count=65534;
htmlpage[467]=count/10000+0x30;
htmlpage[468]=count%10000/1000+0x30;
htmlpage[469]=count%1000/100+0x30;
htmlpage[470]=count%100/10+0x30;
htmlpage[471]=count%10+0x30;
for(i = 0; htmlpage[i]; i++);
TCPSend(ExAccept, htmlpage, i);
//P1=0XF0; //只要我网页有刷新时,低位亮
//--------------------------------------------
htmlpage_k[416]=te/100+0x30;
htmlpage_k[417]=te%100/10+0x30;
htmlpage_k[419]=te%10+0x30;
count++;
if(count>65534) count=65534;
htmlpage_k[467]=count/10000+0x30;
htmlpage_k[468]=count%10000/1000+0x30;
htmlpage_k[469]=count%1000/100+0x30;
htmlpage_k[470]=count%100/10+0x30;
htmlpage_k[471]=count%10+0x30;
for(i = 0; htmlpage_k[i]; i++);
TCPSend(ExAccept, htmlpage_k, i);
//P1=0XF0; //只要我网页有刷新时,低位亮
}
#endif
//------------------------------------------------------------------
main()
{
struct SMemHead DT_XDATA *MemHead;
struct SEtherDevice DT_XDATA DevRTL;
BYTE DT_XDATA EtherAddr[ETHER_ADDR_LEN] = {0x52,0x54,0x4c,0x30,0x2e,0x2f};
IP_ADDR IPAddr = 0x0A0A0046;//10.10.0.70
IP_ADDR NetMask = 0xffffff00;//255.255.255.0
IP_ADDR GateWay = 0x0A0A0001;//10.10.0.1
P1=0xff;
/*
* init
*/
/* init. the order is not important */
NetIfInit();//初始化网络接口
ARPInit();//初始化ARP
TCPInit();//初始化TCP
MemInit();//初始化内存模块
RTLInit(EtherAddr);//初始化RTL8019AS,EtherAddr为以太网地址
EtherDevInit(&DevRTL,EtherAddr,RTLSendPacket,RTLReceivePacket);
NetIfAdd(IPAddr,NetMask,GateWay,EtherInput,EtherOutput,&DevRTL);
/*
* start use socket
*/
SerialInit();
InterruptInit();//启动25ms的定时中断
TRACE("start");
/* Illustrate how to listen as a server */
ExListen = TCPSocket(IPAddr);
ExAccept = NULL;
//----自己添加的
#ifdef DebugHttp
HttpSocket = TCPSocket(IPAddr);
ExAccept = NULL;
if(TCPListen(HttpSocket,HTTP_SERVER_PORT,OnHttpAccept));
#endif
TCPListen(ExListen,TCP_DEFAULT_PORT,OnAccept);
ExConn = TCPSocket(IPAddr);
if(TCPConnect(ExConn,0xc0a8020e,1001,OnReceive,OnClose) == TRUE)
{
/* Illustrate how to Use TCPSend() */
TCPSend(ExConn,str,6);
/* Illustrate how to Use TCPSendEx() */
while(1)
{
if((MemHead = TCPAllocate(DATA_SIZE)) == NULL)
break;
MemCopy(MemHead->pStart,DataBlock,DATA_SIZE);
if(TCPSendEx(ExConn,MemHead) == FALSE)
break;
}
}
TCPAbort(ExConn);
while(1);
//-------自己添加的
//#ifdef DebugHttp
//TCPAbort(ExAccept);
//TCPAbort(HttpSocket);
//#endif
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -