⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testnet.c

📁 一个完整的串口转以太网服务器的源代码.硬件平台是LPC2214 ARM7处理器+8019AS以太网控制器.软件平台是UCOSII+一个第三方的TCP/IP协议栈.
💻 C
📖 第 1 页 / 共 2 页
字号:

#include "config.h"
#include "../include/cfg_net.h"

        void Timer1_Init(void);

#define          TASK_START_ID       0               
#define          TASK_1_ID           1
#define          TASK_2_ID           2
#define          TASK_3_ID           3
#define          TASK_4_ID           4
#define          TASK_5_ID           5
#define          TASK_6_ID           6

#define          TASK_START_PRIO    10              
#define          TASK_1_PRIO        11
#define          TASK_2_PRIO        12
#define          TASK_3_PRIO        13
#define          TASK_4_PRIO        14
#define          TASK_5_PRIO        15
#define          TASK_6_PRIO        16

#define          MSG_QUEUE_SIZE     30               
OS_EVENT  		*RecPackedFlag; 		
OS_EVENT  		*RecBufOverFlowFlag;	
OS_EVENT  		*RecTcpPackedFlag;	
OS_EVENT  		*RecPingPackedFlag;	

//OS_EVENT        *Uart0ReviceFlag;//add 3.1.10  liuxj
OS_EVENT        *Uart0ReviceMbox;//add 3.1.13
OS_STK task0_stack[3000];
OS_STK task1_stack[1000];
OS_STK task2_stack[2000];
OS_STK task3_stack[1000];
OS_STK task4_stack[2000];
OS_STK task5_stack[2000];
OS_STK task6_stack[2000];

void  TaskStart(void *data);
void  TaskUart0Revice(void *pdata);
 void TaskF(void *pdata);
uint8 httpweb[]={
    "HTTP/1.0 200 OK\r\n"
    "Date: Sat, 25 Feb 2006 15:24:17 GMT\r\n"
    "Server: microHttp/1.0 huxhengdx Corporation\r\n"
    "Accept-Ranges: bytes\r\n"
    //"Content-Length: 116\r\n"//"Connection: Keep-Alive\r\n"
    "Connection: Keep-Close\r\n"
    "Content-Type: text/html\r\n"
    "\r\n"};
 uint8 web[]={
 				"<HTML>\r\n"
 				"<HEAD>\r\n"
 				"<TITLE>以太网控制串口设备演示</TITLE>\r\n"
 				"<BODY aLink=black background=/100.bmp bgColor=#f1f1dd link=red\r\n"
				"vLink=#321afd>\r\n"
 				
 				"<LI> <A HREF=\"http://www.21ic.com/\">电子工程师网站 </A>\r\n"
 				"</UL>\r\n"
 				"</BODY>\r\n"
 				"</HTML>\r\n"
 			 };
uint8 httpgif[]={
    "HTTP/1.0 200 OK\r\n"
    "Date: Sat, 25 Feb 2006 15:24:17 GMT\r\n"
    "Server: microHttp/1.0 HUAHENG TELECOM Corporation\r\n"
    "Accept-Ranges: bytes\r\n"
    //"Content-Length: 116\r\n"//"Connection: Keep-Alive\r\n"
    "Connection: Keep-Close\r\n"
    "Content-Type: image/bmp\r\n"
    "\r\n"};
 
 uint8 bmp[422]={0x34,0x88,0x55,0x43,0x45,0xff};
 


typedef struct {
    char    TaskName[30];
    INT16U  TaskCtr;
    INT16U  TaskExecTime;
    INT32U  TaskTotExecTime;
} TASK_USER_DATA;




TASK_USER_DATA  TaskUserData[7];

OS_EVENT       *MsgQueue;                             /* Message queue pointer                         */
void           *MsgQueueTbl[60];                      /* Storage for messages                          */





                            void TaskA(void *pdata) 
{
    uint8 *cp;
    uint8 err;
   // uint8 rec_buffer[100];
    SOCKET	s; 
  //  uint8 rec_coute;
    uint16 iii;
    struct sockaddr servaddr,clientaddr;
    
	OSTimeDly(60);
	servaddr.sin_family=0;
	servaddr.sin_addr[0]=192;
	servaddr.sin_addr[1]=168;
	servaddr.sin_addr[2]=0;
	servaddr.sin_addr[3]=132;
	servaddr.sin_port=1011;  
    	OSTimeDly(60);
    	s=*socket( 0, SOCK_DGRAM, UDP_PROTOCOL);
    	clientaddr.sin_family=0;
	clientaddr.sin_addr[0]=NetPort[0].My_Ip[0];
	clientaddr.sin_addr[1]=NetPort[0].My_Ip[1];
	clientaddr.sin_addr[2]=NetPort[0].My_Ip[2];
	clientaddr.sin_addr[3]=NetPort[0].My_Ip[3];
	clientaddr.sin_port=1025;  
	iii=bind( (SOCKET * )&s, (struct sockaddr*)&clientaddr,sizeof(clientaddr));
	
	Uart0ReviceMbox = OSMboxCreate(NULL);                           /* 建立邮箱     */
    if (Uart0ReviceMbox == NULL)
    {
        while (1);
    }

    
   // TargetInit();                                                   /* 目标板初始化 */
    for (;;)
    {
        cp = (uint8 *)OSMboxPend(Uart0ReviceMbox, 0, &err);   
        //UART0Write(cp,8);
        sendto(s, cp, 100, 0, (struct sockaddr*)&servaddr, sizeof(servaddr) );	
    }

}



                         /*   void TaskA(void *pdata) 

{
   uint8 const ShowTable[11] = {
      0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x00};
//     0     1   2    3    4    5    6    7    8    9    

       

    uint8 *cp;
    uint8 err;

    pdata = pdata;                                                

    Uart0ReviceMbox = OSMboxCreate(NULL);                          
    if (Uart0ReviceMbox == NULL)
    {
        while (1);
    }

    OSTaskCreateExt(TaskF,
                    (void *)0,
                    &task6_stack[1999],
                    TASK_6_PRIO,
                    TASK_6_ID,
                    &task6_stack[0],
                    2000,
                    (void *)0,//&TaskUserData[TASK_5_ID],
                    0);
    TargetInit();                                                  
    for (;;)
    {
        cp = (uint8 *)OSMboxPend(Uart0ReviceMbox, 0, &err);        
        UART0Write(cp,4);	
       if (cp[0] == 0x80)
        {                                                          
            cp[2] = ShowTable[cp[2]];
        }
        else
        {                                                          
            cp[2] = cp[2] +'0';
        }
        PC_DispChar(cp);                                      
    }
	   
}

*/


                            void TaskB(void *pdata) 

{
void * UdpTemp;
uint8 eer;    

    while (1)
    {
	UdpTemp=OSQPend(RecUdpQFlag,0,&eer); 
       	if(eer==OS_NO_ERR)
	{
		Udp_Process((Rec_Ptr *)UdpTemp);
		eer=eer;
	}
        
    }    
}


                            void TaskC(void *pdata) 
{
void * TcpTemp;
uint8 err;   
    while (1)
    {
       	TcpTemp=OSQPend(RecTcpQFlag,0,&err);
	if(err==OS_NO_ERR)
	{
		Process_Tcp1((Rec_Ptr *)TcpTemp);
		TcpTemp=TcpTemp;
	}
	
        
    }    
}


                            void TaskD(void *pdata) 
{
    uint8 rec_buffer[100];
    SOCKET	s; 
    uint8 rec_coute;
    uint16 iii;
    struct sockaddr servaddr,clientaddr;
	OSTimeDly(60);
	servaddr.sin_family=0;
	servaddr.sin_addr[0]=192;
	servaddr.sin_addr[1]=168;
	servaddr.sin_addr[2]=0;
	servaddr.sin_addr[3]=132;
	servaddr.sin_port=1011;  
    	OSTimeDly(60);
    	s=*socket( 0, SOCK_DGRAM, UDP_PROTOCOL);
    	clientaddr.sin_family=0;
	clientaddr.sin_addr[0]=NetPort[0].My_Ip[0];
	clientaddr.sin_addr[1]=NetPort[0].My_Ip[1];
	clientaddr.sin_addr[2]=NetPort[0].My_Ip[2];
	clientaddr.sin_addr[3]=NetPort[0].My_Ip[3];
	clientaddr.sin_port=1025;  
	iii=bind( (SOCKET * )&s, (struct sockaddr*)&clientaddr,sizeof(clientaddr));
	while (1)
    {   
    	rec_coute=recvfrom( s, rec_buffer, 100, 0, (struct sockaddr*)&servaddr, &iii ); 
	    if(rec_coute>0)
	      UART0Write(rec_buffer,rec_coute);	
   	}    
}

                            void TaskE(void *pdata) 
{
uint8 Temp=0;
uint16 TempLength;
int addrlen;
int ei;
unsigned char  ip_add[4]={192,168,0,1};
uint8 tempdata[400];
//uint8 err;  
SOCKET	s;
struct sockaddr servaddr,cliaddr;
		Arp_Request(ip_add,0);
		OSTimeDly(60);
		servaddr.sin_family=0;
		servaddr.sin_addr[0]=NetPort[0].My_Ip[0];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -