创龙科技
直播中

李荞

7年用户 129经验值
私信 关注

创龙SYSBIOS历程中的UDP历程修改可行吗?

我现在在研究创龙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
#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);   
}


回帖(4)

高颖

2019-11-11 08:59:57
这个是一个任务哦
UDP 协议是无连接的嘛 可以开发板主动发数据到 PC 的
举报

周静

2019-11-11 09:08:58
你好,我是昨天问那个BIOS UDP程序的同学。如果这个是一个任务的话,我想在我的Hwi线程中发布这个任务的信号量,使他执行,我要怎么做呀

在 UDP 程序中 PENDING 一个信号量 然后在 HWI 线程中发布这个信号量 
举报

毛玲燕

2019-11-11 09:24:19
引用: euagh1985 发表于 2019-11-11 17:54
在 UDP 程序中 PENDING 一个信号量 然后在 HWI 线程中发布这个信号量 


在 UDP 程序中 PENDING 一个信号量 然后在 HWI 线程中发布这个信号量
举报

王佳奇

2020-3-7 11:02:30
同问,楼主问题解决了吗,可以分享下代码吗
举报

更多回帖

发帖
×
20
完善资料,
赚取积分