请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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);
}
我希望在我还是学生的时候您能帮助我、我希望能够更好地了解这项技术。
顺便说一句, 如果他们发现其他的东西是错误的,请告诉 我,我会非常感激。