This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP432E401Y:基于 ARM 的微控制器论坛

Guru**** 2535750 points
Other Parts Discussed in Thread: MSP432E401Y, CC3220SF

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1119029/msp432e401y-arm-based-microcontrollers-forum

器件型号:MSP432E401Y
主题中讨论的其他器件: CC3220SF

在 MSP432E401Y 的 UDP 数据通信(以太网)中,我使用 sendto ()函数。 当我要在 新线程中执行它时、我无法正常操作传输、新线程从当前线程中闪出这一点。
我在 CC3220SF (WiFi)中执行了相同的操作、但在这里能够正常工作。
请告诉我有什么不好的。

/********
* server.c
*包含 BSD 套接字代码。
(三 /

#include
#include
#include

#include
/* BSD 支持*/
#include
#include
#include
#include
#include

#include
#include

#define UDPPORT "8611"

//**** 全局变量*********
uint32_t x=0;
int flag=0;
int sd =-1;
struct sockaddr_in clientAddr;//来自服务器的目标地址
socklen_t clientaddrlen = sizeof (clientAddr);//目标长度
char rxBuffer[200]={0};//网络接收内存
char txBuffer[1500]={0};//网络发送内存

extern Display_Handle dispH;
extern void fdOpenSession();
extern void fdCloseSession();
extern void *TaskSelf();
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
使 myTimer 无效(int TM)

volatile int i、j;
for (i=0;i {
J=12000;//
while (j>0){-j;}


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/***** mainTask 线程函数*********
void* sendTask (void* arg)

int k、yy;

Display_printf (dispH、0、0、"***** Hirose_server 启动了******** ");

while (flag>0)

for (k=0;k<16;++k)//进行发送数据

txBuffer[k]=(uint8_t) x++;

yy=sendto (SD、txBuffer、16、0、(struct sockaddr *)&clientAddr、clientaddrlen);

myTimer (2000);
Display_printf (dispH、0、0、"yy=%d……x[15]=%d"、txBuffer[15]);
//--flag;

Display_printf (dispH、0、0、"***** Hirose 服务器结束了******** ");

返回空;

//
void*服务器(void* arg)

INT 状态;
struct addrinfo 提示;
struct addrinfo *px;
char portNumber[]=UDPPORT;//端口号(字符串)

Display_printf (dispH、0、0、"UDP 服务器示例已启动");
fdOpenSession(TaskSele));//??? 但需要!
display_printf (dispH、0、0、"应用程序 portNumber =%s "、portNumber);

memset (&hinds、0、sizeof (hinds));// addrinfo
hines.ai_family = AF_iNet;
hints.ai_socktype = sock_DGRAM;
hines.ai_flags = AI_passive;

/*获取适合绑定到*/的地址
getaddrinfo (NULL、portNumber、&hinds、&px);//①make addrinfo 结构
SD =套接字(px->ai_family、px->ai_socktype、px->ai_protocol);//②make 待装
status = bind (sd、px->ai_addr、px->ai_addrlen);//③bind 地址


freedrinfo (px);
Px =空;

display_printf (dispH、0、0、"sd=%d:status=%d:通信开始"、sd、status);


// Sever 操作开始
while (1)

Recvfrom (SD、rxBuffer、20、0、(struct sockaddr *)&clientAddr、&clientaddrlen);
//目前,鹦鹉四花-->这是做的!
Sendto (SD、rxBuffer、20、0、(struct sockaddr *)&clientAddr、clientaddrlen);

if ((strncmp (rxBuffer、"start"、5)=0)&&(flag=0))

flag=1;
//制作新线程
struct sched_param primParam;
priParam.sched_priority=8;
pthread_t 线程;
pthread_attr_t atttrs;
pthread_attr_init (atttrs);
pthread_attr_setschedparam (&attrs、&priParam);
//pthread_attr_setdetachstate (&attrs、1);
pthread_attr_setstacksize (&atttrs、2048);
pthread_create (&thread、&atttrs、sendTask、NULL);// sendTask()线程调用
//-->这不能很好地工作。 !!!!!!
// sendTask (NULL);//如果此线程中有它,它可以作为函数正常工作。

if ((strncmp (rxBuffer、"stop"、4)=0)&&(flag=1))

flag=0;
Display_printf (dispH、0、0、"***** 服务器任务已结束****** ");


//--------------------------------------------
fdCloseSession(TaskSele());

返回空;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您能否在示例代码上尝试此操作、如"udpecho"?

    伊斯天