tsknet.c

来自「本人编写的无线电话程序,给予PIC18C801设计,包括了uCOS的移植以及菜单」· C语言 代码 · 共 58 行

C
58
字号
#include "network.h"
#include "funcudp.h"

extern OS_EVENT	*rom peventNet;

extern UDP_SOCKET UDPOpen(IP_ADDR 			remoteAddr,
                   UDP_PORT 		remotePort,
                   UDP_PORT 		localPort,
                   OS_EVENT * 		sockOwner);
extern INT8U UDPPutS(UDP_SOCKET 	s,
              INT8U rom * 	pD,
              INT16U 		len);
INT8U UDPPutB(UDP_SOCKET s,INT8U byte);   
INT32U IPGetSrcAddress(INT8U rom * pD);
INT32U IPGetDestAddress(INT8U rom * pD);

void Func_Clear_Msg(INT8U rom * pMsg);

void UDPFlush(UDP_SOCKET 	s, 
              IP_ADDR		remoteAddr,
              INT16U 		remotePort);
          
void tskNet(void * Pdata){
	void rom * pMsg;
	INT8U	err;
	
	UDP_SOCKET MySock;
	UDP_PORT   DestPort;
	IP_ADDR	   DestAddr,SrcAddr;
	
	DestAddr.Val = 0;
	
	MySock = UDPOpen(DestAddr,0,5000,peventNet);
	
	for(;;){
		pMsg = OSQPend(peventNet, 0, &err);
		if(err == OS_NO_ERR){
			if((INT24U)pMsg >= PTR_MAX){
			}
			else{
				if(((MSG_HEAD *)pMsg)->Msg_ID == MSG_UDP_DATA){
					//process data--we just copy data and send it back for test
					UDPPutS(MySock, ((MSG_UDP *)pMsg)-> pPayload, ((MSG_UDP *)pMsg)-> LenOfPayload);
					//and we can put some other data like
					UDPPutB(MySock, 0x88);
					UDPPutB(MySock, 0xce);
					DestAddr.Val = IPGetSrcAddress(((MSG_HEAD *)pMsg)->pMem);
					SrcAddr.Val  = IPGetDestAddress(((MSG_HEAD *)pMsg)->pMem);
					DestPort = ((MSG_UDP *)pMsg)->SourcePort;
	
					UDPFlush(MySock, DestAddr, DestPort);
				}
				Func_Clear_Msg(pMsg);
			}
		}
	}
}

⌨️ 快捷键说明

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