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.

[参考译文] CC3235SF:WiFi sl_WlanGetNetworkList 函数出现故障。

Guru**** 2478765 points
Other Parts Discussed in Thread: CC3235SF

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1417731/cc3235sf-wifi-sl_wlangetnetworklist-function-is-malfunctioning

器件型号:CC3235SF

工具与软件:

大家好、我正在使用 sl_WlanGetNetworkList 函数进行访问点扫描、并读取 SSI、RSSI 等值。 我的问题是此函数显示关闭的访问点仍处于打开状态。
我编写了以下代码来解决此问题、但没有成功。

int32_t wifiGetCallback (uint8_t requestIdx、uint8_t * argcCallback、uint8_t ** argvCallback、SlNetAppRequest_t * netAppRequest){
SlWlanNetworkEntry_t currentEntris[MAX_WIFI_ENTRYS];
int32_t status;
char 有效载荷[1024];//根据需要调整大小
char * pPayload =有效载荷;

//清除之前的有效载荷和重置 currentEntries 数组
//在 wifiGetCallback 函数内

//清除之前的有效载荷和重置 currentEntries 数组
memset (有效载荷、0、sizeof (有效载荷));
memset (currentEntries、0、sizeof (currentEntries);

//获取 Wi-Fi 网络列表
状态= sl_WlanGetNetworkList (0、MAX_WIFI_ENTRIES、currentEntries);

如果(状态< 0){
sl_memcpy (pPayload、"Wi-Fi 扫描期间出错"、24);
pPayload +=24;
其他{
qsort (currentEntries、status、sizeof (SlWlanNetworkEntry_t)、compareRSSI);

//在当前扫描中为网络准备有效载荷
int newEntryCount = 0;
对于(int i = 0;i < status;i++){
SlWlanNetworkEntry_t * ap =&currentEntrys[i];
如果(ap->RSSI >-80){
//将有效条目添加到有效负载
pPayload += sprintf (pPayload、"|%s |%02x:%02x:%02x:%02x:%02x:%02x |%d |%d |\n"、
ap->ssid、ap->bssid[0]、ap->bssid[1]、ap->bssid[2]、
ap->bssid[3]、ap->bssid[4]、ap->bssid[5]、ap->RSSI、ap->Channel);

Display_printf (display、0、0、
"|%s |%02x:%02x:%02x:%02x:%02x:%02x |%d |%d |\n\r"、
ap->ssid、ap->bssid[0]、ap->bssid[1]、ap->bssid[2]、
ap->bssid[3]、ap->bssid[4]、ap->bssid[5]、
AP->RSSI、ap->Channel);

newEntryCount++;
}
}

//从上一次扫描中删除关闭的接入点
for (int i = 0;i < previousEntryCount;i++){
bool found= false;
对于(int j = 0;j < status;j++){
//将每个先前条目的 BSSID 与当前条目进行比较
if (memcmp (previousEntry[i])。 BSSID、currentEntry[j]。 BSSID、sizeof (previousEntry[i]。 BSSID))= 0){
found = true;//访问点仍然存在
休息;
}
}
如果(!found){
//此网络在之前的扫描中、但现在已关闭
Display_printf (display、0、0、"Access point %02x:%02x:%02x:%02x:%02x:%02x:%02x 已关闭并将被删除\n"、
PreviousEntries [我]。 BSSID[0]、previousEntry[i]。 BSSID[1]、previousEntry[i]。 BSSID[2]、
PreviousEntries [我]。 BSSID[3]、previousEntry[i]。 BSSID[4]、previousEntry[i]。 BSSID[5]);

//通过移动其余条目、从先前的已完成项中删除
for (int k = i;k < previousEntryCount - 1;k++){
previousEntries[k]= previousEntries[k + 1];
}
previousEntryCount--;//减少有效条目的计数
i --;//删除元素后调整索引
}
}

//将当前条目复制到先前的条目以进行下一次扫描
memcpy (previousEntries、currentEntries、sizeof (currentEntries);
previousEntryCount = newEntryCount;
}

*pPayload ='\0';// NULL 终止有效载荷

uint16_t metadataLen = prepareGetMetadata (0、strlen (payload)、HttpContentocrataLen List_Text 窝);
sl_NetAppSend (netAppRequest ->句柄、metadataLen、gMetaBuffer、sl_NETAPP_Request_Response_flags_Continuation | sl_NETAPP_Request_Response_flags_metadata);
sl_NetAppSend (netAppRequest ->句柄、strlen (有效载荷)、(unsigned char *)有效载荷、0);//发送最终的有效载荷
返回0;

}


sl_start 用于关闭和打开 WiFi 网络或 sl_stop 等方法、会使代码变得非常繁重、并中断与网络服务器的通信。 我想展示始终处于活动状态的网络。 如何实现这一点。

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

    您好!

    符合预期。 您需要设置扫描间隔策略- sl_WlanPolicySet (SL_WLAN_POLICY_SCAN、SL_WLAN_SCAN_POLICY (1、1)……)

    请勿将扫描策略设置为低于5秒的值、而不要超过5秒调用 sl_WlanGetNetworkList() 对于 CC3235、最好调用 sl_WlanGetExtNetworkList () API。

    1月

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

    您能演示一下如何做这个吗?  

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

    我应该在这里调用这个 sl_WlanPolicySet 函数。  

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

    您好!

    请参阅SWRU455 并搜索 SL_WLAN_POLICY_SCAN

    在 sl_Start()之后的初始化代码处。

    1月

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

    大家好、我该如何读取数据速率值并将其打印到串行端口上?  

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

    您好!

    我不明白您的问题。

    1月

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

    我想问的是、 cc3235sf 的数据速率值的最大值为54Mbps。 我怎么能知道我是否以这种速度工作。 我希望器件以最低50Mbps 的速率工作。 我需要进行什么设置吗? 或者这是自动确定的东西吗  

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

    您好!

    没有用于此用途的 SL_ API。 调制和速度由内部算法自动选择。

    您不能预期 CC3235会继续以50Mbps 的吞吐量进行传输。 在数据表中:

    应用吞吐量:
    –UDP:16 Mbps、TCP:13 Mbps
    –峰值:72 Mbps

    1月

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

    该器件消耗的电流非常高。 我看到该器件具有低功耗模式。 如何在软件中激活此功能。 是否有可用的示例  

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

    您好!

    您的代码需要设计为低功耗。 请观看此视频:https://training.ti.com/simplelink-wi-fi-cc32xx-power-management-framework

    请输入新问题、请始终打开新主题。 不要在多个线程中提出同一个问题。

    1月