Thread 中讨论的其他器件:CC3235SF
工具与软件:

虽然我的操作与这里的 WiFi-HTTP 应用完全相同、但是程序不起作用。 串行端口不显示任何内容、当我打开 html 页面时、它无法连接。 当我在调试模式下查看它时、程序被锁定在映像的 Display_Open 部分、错误 IDE 被锁定。
我请求您提供帮助以运行代码。 我们是基于 TI 的技术细节才买这款器件的、但是资源方面却有非常严重的问题。
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.
工具与软件:

虽然我的操作与这里的 WiFi-HTTP 应用完全相同、但是程序不起作用。 串行端口不显示任何内容、当我打开 html 页面时、它无法连接。 当我在调试模式下查看它时、程序被锁定在映像的 Display_Open 部分、错误 IDE 被锁定。
我请求您提供帮助以运行代码。 我们是基于 TI 的技术细节才买这款器件的、但是资源方面却有非常严重的问题。
我们真的买了一个产品,几乎没有资源。 应用现有资源时出现错误、未显示如何消除这些错误。 dev.ti.com/.../node 虽然我们严格按照这里的应用程序,它不会将 Mac 地址写入串行端口。 代码无法正常工作、指示灯不亮。 串行端口没有任何问题。 请帮帮我。
这意味着您连接到了 CC3235。
但是、您不会获得编程的页。
只需键入 http://mysimplelink.net?会发生什么情况
在这种情况下、您应该看到 ROM 页。
真的很奇怪。 我能想到的唯一下一个阶段是获取一些 NWP 日志。
这个论坛上有很多关于如何做到这一点的帖子。
portable.html 是您所刷写文件下 HTML 页面的名称。 您只需将页面名称更改为所需的任何名称即可。
对于 DNS、下面是将其更改为 mydomain 的代码片段。 您可以将其更改为您需要的值。
{
_u8 *domain_name = "www.mydomain.net";
_u8 *device_name = "mydomain";
int32_t RetVal ;
RetVal = sl_NetAppSet(SL_NETAPP_DEVICE_ID,SL_NETAPP_DEVICE_DOMAIN,strlen(domain_name),(_u8 *)domain_name);
if(RetVal < 0)
{
/* Handle Error */
UART_PRINT(
"Network Terminal - Unable to set device DNS, error %d\n", RetVal);
return(NULL);
}
RetVal = sl_NetAppSet(SL_NETAPP_DEVICE_ID,SL_NETAPP_DEVICE_URN, strlen(device_name), (_u8 *)device_name);
if(RetVal < 0)
{
/* Handle Error */
UART_PRINT(
"Network Terminal - Unable to set device URN, error %d\n", RetVal);
return(NULL);
}
}| SSID | BSSID | RSSI | 有何影响 |
| XXXXX | 00:5F:67:3F:44 | -64 | 1. |
| XXXXX | EC:BE:5F:C5:1D:1e | -50. | 1. |
| XXXXX | 18:48:59:18:09 | -69 | 1. |
| ... | ... | ... | ... |
我想以这种方式在 Web 服务器中获取数据。 这是我用于此目的的代码;
int32_t WifiGetCallback (uint8_t requestIdx、uint8_t * argcCallback、uint8_t ** argvCallback、SlNetAppRequest_t * netAppRequest){
char wifiData[2048];//用于保存要发送到客户端的 Wi-Fi 数据的缓冲区
SlWlanNetworkEntry_t * ap;
int32_t numNetworks = sl_WlanGetNetworkList (0、10、netEntries);//扫描最多10个网络
//启动 HTML 表
snprintf (wifiData、sizeof (wifiData)、
"
"
//循环扫描的网络、并以 HTML 格式设置数据
对于(int i = 0;i < numNetworks;i++){
AP = netEntries[i];
字符行[256];
snprintf (row、sizeof (row)、
"
//将行附加到表中
strncat (wifiData、row、sizeof (wifiData)- strlen (wifiData)- 1);
}
//关闭 HTML 表
strncat (wifiData、"
| SSID | BSSID | RSSI | 有何影响 |
|---|---|---|---|
| %s | %02x:%02x:%02x:%02x:%02x:%02x | %d | %d |
//准备 HTTP 响应
SlNetAppResponse_t 响应={
. STATUS = SL_NETAPP_HTTP_RESPONSE_200_OK、
.ResponseData.pPayload =(unsigned char *) wifiData、
.ResponseData.PayloadLen = strlen (wifiData)、
.ResponseData.Flags = 0、
};
//将 HTML 表发送到 Web 客户端
sl_NetAppSend (netAppRequest ->句柄、Response.ResponseData.PayloadLen、(unsigned char *) wifiData、0);
返回0;
}
但我无法将数据传输到 Web 服务器。
是的、我执行了您所说的操作、现在我可以在网络上查看这些值。 我现在只有一个问题。 这是。 问题是、我获得了10个 RSSI 值并将其打印到 Web 服务器。 然后我打开一个名为 xxx 的接入点、它从我的手机中捕获它。 这里没有问题。 问题是、虽然我关闭了此 xxx 接入点、但设备仍会将其视为打开并列出、我该如何解决此问题。
此外,我如何做一些像扫描所有捕获的访问点,而不是10。
谢谢你。
//为先前的扫描结果定义全局持久性结构
#define MAX_WIFI_ENTRIES 20.
SlWlanNetworkEntry_t previousEntry[MAX_WIFI_ENTRYS];
int previousEntryCount = 0;//跟踪有多少个有效条目
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 数组
memset (有效载荷、0、sizeof (有效载荷));
memset (currentEntries、0、sizeof (currentEntries);
//执行 Wi-Fi 扫描以获取当前接入点列表
状态= sl_WlanGetNetworkList (0、MAX_WIFI_ENTRIES、currentEntries);
如果(状态< 0){
//处理 Wi-Fi 扫描过程中的错误
sl_memcpy (pPayload、"Wi-Fi 扫描期间出错"、24);
pPayload +=24;
其他{
//按 RSSI 按降序对当前条目进行排序
qsort (currentEntries、status、sizeof (SlWlanNetworkEntry_t)、compareRSSI);
//将当前扫描结果与先前的条目进行比较、并生成有效载荷
int newEntryCount = 0;
对于(int i = 0;i < status;i++){
SlWlanNetworkEntry_t * ap =¤tEntrys[i];
如果(ap->RSSI >-60){
//将有效条目添加到有效负载
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]);
//跳过将其添加到新列表中
}
}
//更新之前的扫描
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_stop、sl_start 技术对其进行复位、因为这次它无法与 Web 服务器正常通信。 如何配置呼叫日志以检索每个循环中的最新数据。