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

📄 udp.c

📁 ADC图形图像例子
💻 C
字号:
/********************************************************************
 * File: UDP.c
 * 
 * Copyright: Peak Microtech Corporation
 *
 *******************************************************************/

#define UDP_GLOBALS
#include "net_cfg.h"


void Process_Udp()
{
	union Ip_Address_Type ip;
	uint ii;
	U16 count;

	if(VerifyUdpCrc())
	{
		if (converU16(RxdNetBuff.UdpFrame.DestPort) == 1025)	
		{
			UartPrintfCh1("\r\nUDP: SourceIP=");
			ip.words[0] = RxdNetBuff.IpFrame.SourceIp[0];
			ip.words[1] = RxdNetBuff.IpFrame.SourceIp[1];
			Printf_IPStr(ip);
	
			UartPrintfCh1(" DestIP=");
			ip.words[0] = RxdNetBuff.IpFrame.DestId[0];
			ip.words[1] = RxdNetBuff.IpFrame.DestId[1];
			Printf_IPStr(ip);
	
			UartPrintfCh1("\r\nUDP: DestPort=");
			Printf_PortStr(converU16(RxdNetBuff.UdpFrame.DestPort));
			UartPrintfCh1(" SourcePort=");
			Printf_PortStr(converU16(RxdNetBuff.UdpFrame.SourcePort));
			UartPrintfCh1(" Length=");
			count = converU16(RxdNetBuff.UdpFrame.length);
			Printf_PortStr(count);
			UartPrintfCh1("\r\nUDP: Data=");
			for (ii = 0; ii < converU16(RxdNetBuff.UdpFrame.length) - 8; ii++)
			//8 bytes udp head
			{
				UartTxCharCh1(RxdNetBuff.UdpFrame.udpdata[ii]); 
			}
		}
	}
}


void Udp_Request(ulong ip_address, uint portnumber)
{
	uchar i;
	uint ii;
	uint datalength;
	
	for (i = 0; i < 3; i++)	
	{
		TxdNetBuff.EtherFrame.DestMacId[i] = Ping_MAC.words[i];
	}
	TxdNetBuff.EtherFrame.NextProtocal = 0x0008; //IP protocol ID
	TxdNetBuff.UdpFrame.SourcePort = converU16(MY_UDP_PORT); // default udp prot: 1025
	TxdNetBuff.UdpFrame.DestPort = converU16(portnumber);
	TxdNetBuff.IpFrame.DestId[0] = ip_address &0xffff;
	TxdNetBuff.IpFrame.DestId[1] = ip_address >> 16;
	TxdNetBuff.IpFrame.SourceIp[0] = My_Ip_Address.words[0];
	TxdNetBuff.IpFrame.SourceIp[1] = My_Ip_Address.words[1];
	TxdNetBuff.IpFrame.ttl = 0;
	TxdNetBuff.IpFrame.NextProtocal = 17; // UDP protocol code = 17
	datalength = Command_Buf[1] *256+Command_Buf[2];
	for (ii = 0, i = Command_Buf[0]; ii < datalength; ii++)
	{
		TxdNetBuff.UdpFrame.udpdata[ii] = Command_Buf[ii + i];
	}
	datalength = datalength + 8;
	TxdNetBuff.IpFrame.Crc = datalength << 8;
	TxdNetBuff.UdpFrame.length = converU16(datalength);
	TxdNetBuff.UdpFrame.Crc = 0;
	TxdNetBuff.UdpFrame.Crc = CreateUdpCrc();	
	
	Create_Ip_Frame(datalength, ip_address &0xffff, ip_address >> 16, 17);
}


void Process_Udp_Command()
{
	if (Udp_Count > 0)
	{
		Udp_Count--;
		if (Udp_Count > 0)
		{
			if (Ping_IP_TTL > 0)
			{
				// IP address has been parse
				Udp_Request(Ping_Ip_Address.dwords, RemotePort.word);
				Udp_Count = 0;
			}
			else
			{				
				Arp_Request(Ping_Ip_Address.dwords);
			}
			if (Ping_Ip_Address.dwords == My_Ip_Address.dwords)
			{
				// Ping IP == MY IP
				UartPrintfCh1("\r\nError! Cannot connect Local,Please Try Other IP");
				Udp_Count = 0;
			}
		}
	}
}

⌨️ 快捷键说明

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