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.

[参考译文] LAUNCHXL-CC3235SF:函数 SimpleLinkNetAppEventHandler 与##39;Event##39;public member 有问题

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1495227/launchxl-cc3235sf-function-simplelinknetappeventhandler-has-a-problem-with-event-public-member

器件型号:LAUNCHXL-CC3235SF
Thread 中讨论的其他器件:CC3235SF

工具与软件:

大家好、过去我问过一个问题、是否可以使用 CC3235SF 实现 TCP、看到这是可能的、我开始编写代码。  

我已经研究了关于 BSD 套接字的 IT 文档、并实现了如下所示的代码、但SimpleLinkNetAppEventHandler函数字段中有一个错误、允许我验证它是否成功连接到网络。

在本例中、错误位于注释#3:SDK 版本7.10.0.13 */第24行的事件处理程序中。  

其中编译器显示"没有Event在中命名的成员SlNetAppEvent_t"  

#include <ti/drivers/net/wifi/simplelink.h>
#include <ti/net/slnetutils.h>
#include <ti/display/Display.h>
#include <string.h>

/* Network Configuration */
#define SERVER_IP "192.168.1.50"
#define SERVER_PORT 5000
#define WIFI_SSID "HELLO"
#define WIFI_PASSWORD "qwertyuiop"

Display_Handle display;

/* 2. WiFi Credentials */
SlWlanSecParams_t wifiCredentials = {
    .Type = SL_WLAN_SEC_TYPE_WPA_WPA2,
    .Key = (signed char*)WIFI_PASSWORD,
    .KeyLen = 10
};

/* 3. Event Handlers for SDK version: 7.10.0.13 */
void SimpleLinkNetAppEventHandler(SlNetAppEvent_t *pNetAppEvent) {

    if(pNetAppEvent->SlNetAppEventData_u == SL_NETAPP_EVENT_IPV4_ACQUIRED) {
        Display_printf(display, 0, 0, "IP assigned successfully\n");
    }
}

void SimpleLinkWlanEventHandler(SlWlanEvent_t *pWlanEvent) {
    // Minimum Handler Required
}


/* 5. WiFi Connection */
int connectToWiFi() {
    int ret;


    if((ret = sl_Start(SimpleLinkWlanEventHandler,
                      SimpleLinkNetAppEventHandler,
                      NULL))) {
        Display_printf(display, 0, 0, "sl_Start error: %d\n", ret);
        return -1;
    }

    if((ret = sl_WlanSetMode(ROLE_STA))) {
        Display_printf(display, 0, 0, "Error sl_WlanSetMode: %d\n", ret);
        return -1;
    }

    if((ret = sl_WlanConnect((signed char*)WIFI_SSID, strlen(WIFI_SSID),
                           NULL, &wifiCredentials, 0))) {
        Display_printf(display, 0, 0, "Error sl_WlanConnect: %d\n", ret);
        return -1;
    }

    Display_printf(display, 0, 0, "Connected to %s\n", WIFI_SSID);
    return 0;
}

/* 6. TCP Client */
void tcpClientTask() {
    int sock;
    SlSockAddrIn_t addr;
    uint32_t ipAddr;
    char msg[] = "Hola desde CC3235SF";

    sl_NetCfgInetAddr(SERVER_IP, &ipAddr);

    addr.sin_family = SL_AF_INET;
    addr.sin_port = sl_Htons(SERVER_PORT);
    addr.sin_addr.s_addr = ipAddr;

    if((sock = sl_Socket(SL_AF_INET, SL_SOCK_STREAM, 0)) < 0) {
        Display_printf(display, 0, 0, "Error socket: %d\n", sock);
        return;
    }

    if(sl_Connect(sock, (SlSockAddr_t*)&addr, sizeof(addr)) < 0) {
        Display_printf(display, 0, 0, "Error connect\n");
        sl_Close(sock);
        return;
    }

    sl_Send(sock, msg, strlen(msg), 0);
    sl_Close(sock);
}

/* 7. Main */
void main() {
    display = Display_open(Display_Type_UART, NULL);

    if(connectToWiFi() == 0) {
        tcpClientTask();
    }

    while(1);
}

我希望在我还是学生的时候您能帮助我、我希望能够更好地了解这项技术。

顺便说一句, 如果他们发现其他的东西是错误的,请告诉 我,我会非常感激。

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

    您好!

    您可以参考 SDK 中的任何示例以了解如何调用这些 API。

    例如,sl_Start() API 不提供您实现的回调函数。

    回调函数作为 user.h 头文件的一部分进行设置。

    我建议查看 network_terminal 示例以供参考。

    此致、

    Shlomi