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

📄 main.c

📁 基于LM6938
💻 C
📖 第 1 页 / 共 2 页
字号:
	servaddr.sin_addr[3] = 55;
	servaddr.sin_port    = 1026;  										/*  设置服务器端口号            */
	s=*socket(0, SOCK_DGRAM, UDP_PROTOCOL);						        /*  建立SOCKET                  */
	clientaddr.sin_family = 0;
	clientaddr.sin_addr[0] = NetPort[0].My_Ip[0];					    /*  设置本地IP地址              */
	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) {
		   	send_coute = sendto(s, rec_buffer, rec_coute, 0, 
                               (struct sockaddr *) & servaddr, 
                                sizeof(servaddr) );
																	    /*  把接受的数据返回            */			
			send_coute = send_coute;									/*  防止编译警告                */
		} 
	}    
}

/*********************************************************************************************************
** Function name:         TaskE
** Descriptions:          TCP协议数据接收和发送任务
** input parameters:      无
** output parameters:     无
** Returned value:        无
*********************************************************************************************************/ 
 void TaskE (void  *pdata) 
{
    uint8   Temp = 0;
    int     addrlen;
    int     ei;
    uint8   tempdata[400];									            /*  接收数据缓存区              */
    SOCKET  s; 
    struct  sockaddr servaddr, cliaddr;
	OSTimeDly(60);
	servaddr.sin_family = 0;
	servaddr.sin_addr[0] = NetPort[0].My_Ip[0];				            /*  设定本地SOCKET的IP地址      */
	servaddr.sin_addr[1] = NetPort[0].My_Ip[1];
	servaddr.sin_addr[2] = NetPort[0].My_Ip[2];
	servaddr.sin_addr[3] = NetPort[0].My_Ip[3];
	servaddr.sin_port = 80;                                             /*  设定监听的本地端口          */
	s =* socket(0, 0, 0);								                /*  建立一个基于TCP通讯的SOCKET */
	ei = bind((SOCKET *) & s, 
              (struct sockaddr*) & servaddr, sizeof(servaddr));         /*  绑定本地IP地址和监听端口    */
	ei = listen( (SOCKET *) & s, 4 );						            /*  监听的连接数是4个连接       */
	if (ei != 4) {										                /*  检查是否成功建立4个连接监听 */
		while(1) {
            ;									                        /*  错误处理                    */
	    }
    }
    while (1) {
		Temp = accept((SOCKET *) & s, (struct sockaddr *) & cliaddr, &addrlen );	
                                                                        /*  接受客户端的连接请求        */
		if (Temp != 0xff) {								                /*  检查是否成功接受连接        */
			OSTimeDly(20);
			(void)recv(Temp, tempdata, 400, 0 );		                /*  读取数据                    */
			if (tempdata[5] == ' ')	{					                /*  请求网页                    */
				send(Temp, httpweb, sizeof(httpweb) - 1, 0 );			/*  发送应答                    */
				send(Temp, web, sizeof(web), 0 );				        /*  发送网页                    */
			}                    
			else if (tempdata[5] == '1') {					            /*  请求背景图片                */
			
				send(Temp, httpgif, sizeof(httpgif) - 1, 0 );			/*  发送应答                    */
				send(Temp, bmp, sizeof(bmp), 0 );				        /*  发送图片                    */
			}

    		memset(tempdata, 0, 400);					                /*  清空接受缓存区              */
    		OSTimeDly(20);
    		close(Temp);							                    /*  断开连接                    */
		}
    }
}

/*********************************************************************************************************
** Function name:         task0
** Descriptions:          启动任务
** input parameters:      无
** output parameters:     无
** Returned value:        无
*********************************************************************************************************/
void task0 (void  *pdata)  
{ 
    #if OS_CRITICAL_METHOD == 3                                         /*  Allocate storage for CPU 
                                                                            status register             */
    OS_CPU_SR  cpu_sr;
	#endif
	targetInit();                                                       /*  add by cmj                  */
	/*
     *  UBYTE EX_RAM *er;
     */
	OSTaskCreateExt(TaskB,
                    (void *)0,
                    &task1_stack[task1stck - 1],
                    TASK_1_PRIO,
                    TASK_1_ID,
                    &task1_stack[0],
                    1000,
                    (void *)0,                                          /*  &TaskUserData[TASK_4_ID]    */       
                    0);
	OSTaskCreateExt(TaskC,
                    (void *)0,
                    &task2_stack[task2stck - 1],
                    TASK_2_PRIO,           
                    TASK_2_ID,
                    &task2_stack[0],
                    2000,
                    (void *)0,                                          /*  &TaskUserData[TASK_4_ID]    */
                    0);	 
    OSTaskCreateExt(TaskD,
                    (void *)0,
                    &task3_stack[task3stck - 1],
                    TASK_3_PRIO,
                    TASK_3_ID,
                    &task3_stack[0],
                    1000,
                    (void *)0,                                          /*  &TaskUserData[TASK_4_ID]    */
                    0);	

    OSTaskCreateExt(TaskE,
                    (void *)0,
                    &task4_stack[task4stck-1],
                    TASK_4_PRIO,
                    TASK_4_ID,
                    &task4_stack[0],
                    2000,
                    (void *)0,                                          /*  &TaskUserData[TASK_4_ID]    */
                    0);	

    SetNetPort();
	InitNic(0);			                                                /*  lm3s6965初始化,在global.c   */
	Initial_arp();
	Tcp_Initial();
 	Udp_Initial();
	
    while(1) { 
        #if (TARGET_LED1_EN > 0) || (TARGET_LED2_EN > 0) || (TARGET_LED3_EN > 0) || (TARGET_LED4_EN > 0)
    	ledOn(2);          					                            /*  点亮LED1                    */   
    	ledOn(1);   
    	ledOn(3);   
    	ledOn(4);         	
    	OSTimeDlyHMSM(0, 0, 0, 500); 			                        /*  延时0.5秒                   */               	
    	ledOff(2);          					                        /*  关闭LED1                    */
    	ledOff(1);   
    	ledOff(3);   
    	ledOff(4);   
    	OSTimeDlyHMSM(0, 0, 0, 500); 			                        /*  延时0.5秒                   */ 
    	#endif          	
    }                                                                   /*  end for while(1)            */
}

/*********************************************************************************************************
** Function name:         main
** Descriptions:          主函数
** input parameters:      无
** output parameters:     无
** Returned value:        无
*********************************************************************************************************/
int main (void)
{
    OSInit();                                                           /*  Initialize uC/OS-II         */
    OSTaskCreateExt(task0,
                    (void *)0,
                    &task0_stack[task0stck - 1],
                    TASK_START_PRIO,
                    TASK_START_ID,
                    &task0_stack[0],
                    3000,
                    (void *)0,                                          /*  &TaskUserData[TASK_4_ID]    */
                    0);
        
  	RecPackedFlag      = OSSemCreate(0);	                            /*  表示一个或多个事件发生      */
	RecBufOverFlowFlag = OSSemCreate(0);
	RecTcpPackedFlag   = OSSemCreate(0);
	RecPingPackedFlag  = OSSemCreate(0);
	SendFlag           = OSSemCreate(1);

	RecIcmpQFlag       = OSQCreate(&RecIcmpQ[0],Q_Max_Size);
	RecTcpQFlag        = OSQCreate(&RecTcpQ[0],Q_Max_Size);
	RecUdpQFlag        = OSQCreate(&RecUdpQ[0],Q_Max_Size);
    OSStart();                                                          /*  Start multitasking          */
}

/*********************************************************************************************************
  END FILE
*********************************************************************************************************/

⌨️ 快捷键说明

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