1
나는 PIC32 ethernet evaluation board을 가지고 있으며 간단한 UDP 패킷을 보내려고합니다. 내가 컴파일 및 MPLAB IDE에서 코드를 실행하면 보드가 두 패킷 후 아무것도를 보내는 것 같습니다,PIC32 이더넷 키트 및 UDP
/*
* This macro uniquely defines this file as the main entry point.
* There should only be one such definition in the entire project,
* and this file must define the AppConfig variable as described below.
*/
#define THIS_IS_STACK_APPLICATION
// Include all headers for any enabled TCPIP Stack functions
#include "TCPIP Stack/TCPIP.h"
#include "TCPIPConfig.h"
#include <plib.h>
#include <p32xxxx.h>
// Declare AppConfig structure and some other supporting stack variables
APP_CONFIG AppConfig;
BYTE AN0String[8];
int main()
{
static enum
{
SM_OPEN,
SM_BROADCAST,
} smState = SM_OPEN;
typedef BYTE UDPSocket;
UDP_SOCKET s;
NODE_INFO myRemoteNode;
myRemoteNode.IPAddr.v[0]=169;
myRemoteNode.IPAddr.v[1]=254;
myRemoteNode.IPAddr.v[2]=2;
myRemoteNode.IPAddr.v[3]=2;
myRemoteNode.MACAddr.v[0]=0x01;
myRemoteNode.MACAddr.v[1]=0xA0;
myRemoteNode.MACAddr.v[2]=0xF0;
myRemoteNode.MACAddr.v[3]=0x7B;
myRemoteNode.MACAddr.v[4]=0xE5;
myRemoteNode.MACAddr.v[5]=0x45;
TRISD = 0xff00; // tri-state register for the LED ports
// Initialize UDP
UDPInit();
while(1)
{
switch(smState)
{
case SM_OPEN:
// Talk to a remote DHCP server.
s = UDPOpen(68, &myRemoteNode, 67);
if (s == INVALID_UDP_SOCKET)
{
PORTD = 0x01; // Switch on the red LED on PIC32 ethernet starter kit to indicate an error
// Socket is not available
// Return error.
}
else
// Broadcast DHCP Broadcast message.
smState = SM_BROADCAST;
break;
case SM_BROADCAST:
PORTD = 0x02; // Switch on the yellow LED to indicate the connection
if (UDPIsPutReady(s))
{
// Turn on yellow and green LED to indicate UDP is put ready
PORTD = 0x06;
// Socket is ready to transmit. Transmit the data...
// Note that there is DHCPSocket parameter in UDPPut.
// This UDPPut call will use active socket
// as set by UDPIsPutReady() - that is DHCPSocket.
UDPPut(0x55);
// Now transmit it.
UDPFlush();
}
UDPClose(s);
break;
}
}
}
:
여기에 지금까지 내 코드입니다. Wireshark를 실행하는 노트북 PC에 직접 보드를 연결했지만 Wireshark는 수신 된 패킷을 감지하지 못했습니다.TCP를 사용하는 http 서버 데모를 실행하기 위해 보드를 성공적으로 얻을 수 있었기 때문에 하드웨어 문제는 아닙니다.