|
我现在在研究创龙SYSBIOS历程中的UDP历程。我想将这个历程修改一下,想让我的按键能够控制我的网口进行数据的发送,在UDP.c那个文件中我自己新建了一个数组,模拟我要发送的数据,现在已经实现了连接上网口调试助手以后我从网口调试助手上发送任意的字符都能回传我自己定义的数据这一功能。但是我希望用按键来控制网口数据的发送,而不是每次都要连接上网口调试助手才能刺激网口程序的发送,,,于是我自己在main函数中动态配置了一个Hwi线程,在这个线程的中断服务函数中发送了一个信号量让它去控制网口发送任务的开始。可是问题来了,,我发现UDP例程当中我无法找到到底是哪个函数去出发了网口的发送,而且在原有的UDP历程中网口的接收,发送既不是Hwi,Swi,也不是一个task,,所以,这个函数到底是怎么执行的我不清楚,希望大神能够帮我解答一下。
这里附上我修改的UDP.c程序,,希望家帮我看看。
/****************************************************************************/
/* */
/* 广州创龙电子科技有限公司 */
/* */
/* Copyright 2014 Tronlong All rights reserved */
/* */
/****************************************************************************/
/****************************************************************************/
/* */
/* NDK UDP 通信 */
/* */
/* 2014年09月22日 */
/* */
/****************************************************************************/
#include <netmain.h>
#define EMIF_BUFFER_LENGTH 1000//////////////////////////////
/****************************************************************************/
/* */
/* 回调函数 UDP Server Daemon */
/* */
/****************************************************************************/
int UdpTest(SOCKET s, UINT32 unused)
{
//unsigned short emif_wbuffer[EMIF_BUFFER_LENGTH];
char emif_wbuffer[EMIF_BUFFER_LENGTH];
unsigned int a;
struct sockaddr_in sinDst;
struct timeval to;
int i,tmp;
char *pBuf;
// char *pa;
char Title[] = "Tronlong Udp Application : ";
// char shu[] = {0x32,0x34,0x56};
for (a = 0; a < EMIF_BUFFER_LENGTH; a++)
{
emif_wbuffer[a] = (short)(a);
}
HANDLE hBuffer;
// 配置超时时间 5s
to.tv_sec = 5;
to.tv_usec = 0;
setsockopt(s, SOL_SOCKET, SO_SNDTIMEO, &to, sizeof(to));
setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &to, sizeof(to));
for(;;)
{
tmp = sizeof(sinDst);
i = (int)recvncfrom(s, (void **)&pBuf, 0, (PSA)&sinDst, &tmp, &hBuffer);
// pa=emif_wbuffer[1];
// 发送一个固定字符串 长度 28
// sendto(s, &Title, 28, 0, (PSA)&sinDst, sizeof(sinDst));
// 回传接收到的数据
if(i >= 0)
{
//sendto(s, pBuf, i, 0, (PSA)&sinDst, sizeof(sinDst));
sendto(s, &emif_wbuffer,1000,0,(PSA)&sinDst, sizeof(sinDst));
recvncfree(hBuffer);
}
else
{
break;
}
}
// 保持连接
return(1);
}
|
|