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 代码、该代码可以正常运行。 当我键入 mysimplelink.net/portable.html 时、Web 服务器在我的浏览器中打开。 我在 STA 模式下运行器件、在此模式下、当我键入192.168.1.15/portable.html 而不是 mysimplelink.net/portable.html 时、html 网络服务器将打开。 我不想这样做、因为设备的 IP 地址可能会不断变化、用户无法知道这一点。
我想在不需要 IP 地址的情况下通过 Web 服务器或 Windows 窗体应用程序发送数据。 我不知道该怎么做、你能指导我吗。
您好!
我想我们在这里讨论这个主题。 但似乎你不相信我的答案。 请等待其他用户的回答、但不要期望其他答案。
1月
我相信您的答案。 我希望你们为我提供最快的解决方案指导。 我用 Visual Studio 在 Windovs 窗体应用程序中编写了一个代码。 但这里我使用的是 IP 地址。 我不应该这样做。
我要在这里放一段代码。
请尝试
{
//将 GET 请求发送到设备的 IP 地址
HttpResponseMessage 响应=等待 client.GetASYNC ("">">http://192.168.1.94/wifi");)
if (!response.IsSuccessStatusCode)
{
///如果有一个不成功的状态代码(如404)则记录错误
ListBox1.items.clear();
ListBox1.items.Add ("错误:"+响应。 状态代码);
}
设计
{
//将响应内容作为字符串
string responseData =等待 Response.Content.ReadAsStringASYNC();
//在 ListBox 中显示 Wi-Fi 结果
DisplayWifiResults (responseData);
}
}
catch (HttpRequestException e)
{
//处理连接或请求错误(例如网络问题、404错误)
ListBox1.items.clear();
ListBox1.items.Add ("连接错误:"+ e. 信息);
}
}
您好!
如果要创建自己的 FindDevice 软件、有多种选择:
上面的代码在这个主题中用处不大。
Btw1:在"我的"手册中、我有这一章:
如何确定器件 IP 地址
客户端模式下设备的 IP 地址可从 DHCP 服务器获取、也可手动设置为静态 IP。 最终用户不能配置接入点模式的 IP 地址、并将其设置为192.168.3.1。 无论选择哪种模式、器件的 IP 地址都可以通过多种方法确定。
•短按 MODE 按钮后、器件 LCD 显示屏上会显示 IP 地址。 如果 IP 地址显示为0.0.0.0、则表示未分配 IP 地址。 任一设备未连接到 WiFi 网络或 WiFi 传感器无法从 DHCP 服务器获取 IP 地址。
•可以通过在软件 Comet Vision 或软件 TSENSOR 中搜索选项来查找 IP 地址。 此软件可从制造商网页免费下载。
•WiFi 传感器的本地 IP 地址可显示在 Comet Cloud 或 Comet Database 中。 为了能够利用此功能、需要将 WiFi 传感器连接到该平台。
•当设备处于客户端模式且使用 DHCP 时、基础设施接入点/路由器的 Web 界面可以显示 IP 地址。 这可能因接入点/路由器型号而异。
Btw2: 这是以 CC3220SF 运行的器件示例。
1月
如果我要使用 UDP 发送数据、即使用您建议的第二种方法、我需要在 CC3235SF 软件中进行哪些更改。
您好!
您需要在 CC32xx 上运行 UDP 服务器。 很遗憾、CC32xx SDK 中没有 UDP 服务器示例、我无法向您提供我的代码。 但在互联网上可以找到如何运行 BSD UDP 服务器的示例。
1月
例如、您认为在需要4个设备将数据打印到服务器的应用中使用 UDP 是否合理?
您好!
根据应用需求、可在 UDP 或 TCP 之间进行选择以与服务器进行通信。
选择 UDP 协议适合时间敏感型通信、其中小封包丢失不是音频或视频流之类的问题。 UDP 的另一个优点是可以发送广播。 这意味着您可以发送一个数据包、可由多个客户端接收(例如、多节点通信或同步)。 最后一点是 UDP 可以实现比 TCP 更高的性能(吞吐量)。 但例如、如果您想与本地网络(例如在云端)之外的服务器进行通信、最好使用 TCP (或高于 TCP 的协议、如 HTTP (s)))来获得更好的可靠性。
请记住、CC32xx 同时支持多达16个套接字。 这意味着您可以创建同时支持多个协议的代码。 例如、用于查找设备的 UDP 广播、通过 HTTPS 与云服务器的通信、用于本地通信的 TCP、...
上述答案仅描述"软件"选项如何确定 IP 地址。 但您可以选择硬件选项、例如显示 IP 地址 LCD 显示屏、或使用其他无线通信(如 BLE 或 NFC)。 特别是、如果设备内有足够的 NFC 天线空间、NFC 是用于器件设置和配置的廉价好选择。 例如、STM 的 NFC EEPROM 的成本低于1美元。
1月
好的、我会向您提出一个问题。 器件不接收除端口地址80以外的端口地址。 设备只能在端口地址80上工作、还是我可以提供所需的地址?
您好!
您可以"几乎"使用任何 TCP/UPD 端口。 端口不能被 NWP (WiFi 协处理器)占用、例如、使用 NWP 网络服务器时、无法在代码内打开 TCP 端口80。 或者、当模块处于 AP 模式且启用了内部 DNS 服务器时、您将无法在代码 UDP 端口53内部打开。 在这里、我将讨论器件内部的侦听端口(当 CC32xx 用作服务器时)、而不是客户端(远程)端口。
BTW ...当你说"地址"这个词通常是指 IP 地址。 端口称为"port"或"UDP port"/"TCP port"。
1月
首先、感谢您的回答、它具有启发性。
我要问的是、在本例中、能否在 WIFI-HTTP 代码中更改 STA 模式的端口号。 这是可行的吗? static int32_t ConfigureHttpServer()
{
int32_t RetVal = 0;
uint16_t primaryPortNumber = 80;//要设置的主要端口号
uint16_t secondaryPortNumber = 8081;//如果需要、还可以设置辅助端口号
//停止 HTTP 服务器
RetVal = sl_NetAppStop (SL_NETAPP_HTTP_SERVER_ID);
Display_printf (display、0、0、"[HTTP 服务器任务] HTTP 服务器已停止");
//设置 HTTP 主端口号
retVal = sl_NetAppSet (SL_NETAPP_HTTP_SERVER_ID、SL_NETAPP_HTTP_PRIMARY_PORT_NUMBER、sizeof (primaryPortNumber)、(uint8_t *)&primaryPortNumber);
if (retVal < 0)
{
Display_printf (display、0、0、"[HTTP 服务器任务]未能设置 HTTP 主端口。 错误:%d"、返回值;
Return RetVal;//如果出现错误、则退出
}
Display_printf (display、0、0、"[HTTP 服务器任务] HTTP 主端口设置为%d"、primaryPortNumber);
//如果您还想设置次端口、则可以添加此部件
RetVal = sl_NetAppSet (SL_NETAPP_HTTP_SERVER_ID、SL_NETAPP_HTTP_secondary_port_number、sizeof (secondaryPortNumber)、(uint8_t *)&secondaryPortNumber);
if (retVal < 0)
{
Display_printf (display、0、0、"[HTTP 服务器任务]未能设置 HTTP 辅助端口。 错误:%d"、返回值;
Return RetVal;//如果出现错误、则退出
}
Display_printf (display、0、0、"[HTTP 服务器任务] HTTP 辅助端口设置为%d"、secondaryPortNumber);
//重新启动 HTTP 服务器
RetVal = sl_NetAppStart (SL_NETAPP_HTTP_SERVER_ID);
Display_printf (display、0、0、"[HTTP 服务器任务] HTTP 服务器 Re 已启动、RetVal=%d"、RetVal);
返回值;
}我写了这样的代码,它是否有意义?
您好!
是的、该代码对于 NWP http 服务器端口的设置看起来是合理的。 可能不需要设置用于 HTTPS 服务器的辅助端口。 HTTP 服务器默认使用端口80、您不需要将其更改为使用端口80。
1月
我使显示80 84的设备变为82。 我为两个设备提供相同的 IP 地址。 我在 Visual Studio 中编写了一个代码,从这两个设备获取数据,但它只获取其中一个。
您好!
我不确定我是否理解正确。
您将两个处于 STA 模式的 CC3325器件同时连接到同一网络(WLAN)。 您为两个 CC3325器件设置了相同的静态地址。 这种说法是否正确?
我有点"害怕"你的答案。
1月
是的、我提供了相同的静态 IP 地址。 我更改了不同的端口号。 我正在尝试用我的 Visual Studio 代码从这两个设备获取数据。 这是不可能的?
您好!
您不能在同一网络中有两台设备使用相同的 IP 地址。 设置静态 IP 地址时、需要根据 LAN (正确的子网范围等)设置静态 IP 地址。 这意味着您不能将静态 IP 地址"硬编码"到您的产品中、静态地址需要由产品的最终用户设置(或使用 DHCP)。
我几乎感到"震惊"的是,你试图在多个设备上使用相同的 IP 地址。 这是相当基本的知识 IP 网络如何工作。 任何尝试开发网络设备的人都必须毫无例外地知道这一点。
1月
我问你这样的事情是否可行、这是一个问题吗? 我们无法通过不同的端口号读取具有相同 IP 地址的设备。 比如给我一个 ID;
您好!
IP 地址在同一子网中必须始终是唯一的。 这就是为什么存在 DHCP 来简化分配网络内部 IP 地址的原因。 端口允许在同一设备上同时运行多个服务、但无法区分网络上的多个设备。
1月
这是一个非常解释性的信息、谢谢。 最后、我想介绍一下我要开发的应用。
我想以 STA 模式将4个 cc3235sf 器件连接到同一接入点网络。 然后我想写一个 Visual Studio 代码。 这个 Visual Studio 代码将接收和显示来自这4个设备的数据。
为此、我将使用 WIFI-HTTP 代码的基础结构。 我针对该项目尝试使用该 WiFi-HTTP 代码的方法将是最简单、最有用的方法。
我知道您提到了 MDNS 和 UDP。
但是,我是这方面的初学者,我需要迅速完成项目。
您能告诉我需要以最简单的方式遵循的方法和方法吗?
谢谢你。
您好!
如果要在 PC 上使用 CC32xx 的 HTTP 服务器和 HTTP 客户端、除了在 PC 应用中设置 IP 地址外、没有其他选择。 您可以手动设置 IP (例如在基础架构路由器/DHCP 服务器上显示 IP)。 其他选项可以使用 mDNS (您自己的发现协议)、也可以仅向网络上的"所有"设备发送 http 请求、然后尝试查找您的设备(网络管理员对此类方法不满意)。
为何需要使用 CC32xx 作为服务器? 为什么不使用 CC32xx 作为客户端、而不将值发送到互联网上的本地服务器或服务器? 配置过程中可以配置本地服务器地址。 如果使用互联网上的服务器、则可以在您的 CC32xx 代码中对该服务器的 DNS 地址进行硬编码。
您所描述的是寻找某种学校项目。
1月
"为何需要使用 CC32xx 作为服务器? 为什么不使用 CC32xx 作为客户端、而不将值发送到互联网上的本地服务器或服务器? 配置过程中可以配置本地服务器地址。 如果使用互联网上的服务器、则可以在您的 CC32xx 代码中对该服务器的 DNS 地址进行硬编码。"
事实上,如果用户不需要输入任何 IP 地址来获取数据,当你这么说,这也适用于我。
如何执行此操作的步骤是什么。
您好!
例如、您可以创建自己的服务器代码(使用 PHP、。 net 等)将它们公开到 Internet 服务器中。 CC32xx 可以通过 TI HTTP 客户端库将数据发送至此服务器。 在 CC32xx SDK 中、您可以找到 HTTP GET 演示。 您可以调整此演示并更改"获取"以发布数据内容。 您可以在 SDK \ docs\ns\NS_API_Reference.html 找到此库的文档。
1月
你好;当我检查 READY HTTP-GET 示例时、它似乎是通过 http GET 请求与 example.com 进行通信。 但它在该代码中无法正常工作。 错误! 串行端口上的代码=-30错误。
您好!
我不确定您的错误代码-30的来源是什么。 HTTP 库应返回错误代码、如-3001、-3002等 您应该使用调试器来确定正在发生什么情况。
1月
非常感谢您的回答、但我仍然不明白我应该使用哪种方法。 你说了很多选择和可能性,但我不明白。 我唯一的要求是你给出更清楚的答案。 当然你不需要。
在我的系统中、将有100个 cc3235sf 连接到同一个访问指针。 由于器件上没有 LCD 等、或者没有串行端口、用户将无法看到器件接收到的 IP 地址。
用户希望编写 Windows 窗体应用程序。 它将显示通过从100个设备接收 RSSI 值而从100个设备接收到的数据。 我不知道该怎么做,因为他不知道 IP 地址。 mDNS 需要适用于 Windows 的其他应用程序、因此我们无法使用它。 能否向我解释一下我应该做的最好的方法以及我应该做什么。
我说过,你不必这样做,但如果你这样做,我会非常感谢你。
您好!
为什么不在 Windows 应用中实施 mDNS? 如果您能够做到这一点、您将能够继续使用您设计的系统。 唯一的区别是将 mDNS 发送到网络上的发现设备。
1月
在我的研究中、我发现为了在 Windows 上使用 mdns、我必须安装一个像 Bonjour 这样的软件。 用户不会接受这样的东西。
您好!
我认为不需要它使用第三方应用。 您可以 在支持 mDNS 的情况下使用一些.Net 库。 在开发过程中使用第三方应用可能很有用、但之后您将在 CC32xx 端正确启用 mDNS、可以在 Windows 应用中实施 mDNS。
1月
我会将 mdns 集成到现有 wifi -http 代码中。 然后,他们将以这种方式与我的 Visual Studio 代码通信。
您好!
在 CC32xx 中实现 mDNS 涉及启用 mDNS 服务。 SWRU455中介绍了 mDNS。
您将使用 mDNS 查找网络中设备的 IP 地址、然后可从 Windows 客户端应用的 CC32xx 网络服务器读取值。
1月
您发送的文档中有与 mdns 相关的代码块、但我不知道如何根据我自己的代码调整这些代码块。 是否有可以用于此目的的资源?
您好!
应在初始化代码(启用 NWP 的代码)中的某个位置添加 mDNS 使能代码。
BTW……在此论坛上、您可以在 CC3220和 CC3235找到许多与 mDNS 相关的线程。
1月
#define SERVICE_NAME "_WIFI_SCAN._tcp.local"// mDNS 服务名称
#define MAX_SCAN_SIZE 200 //最大 Wi-Fi 扫描条目数
#define MAX_MDNS_TEXT_LENGTH //最大 mDNS 文本长度
SlWlanNetworkEntry_t previousEntry[MAX_SCAN_SIZE];
int previousEntryCount = 0;
void updateMdnsService (const char * mdnsText){
int32_t status;
const uint16_t portNumber = 8080;// HTTP 访问端口(如果需要)
const uint32_t TTL = 120;//存活时间(秒)
uint32_t options = SL_NETAPP_MDNS_OPTIONS_IS_NOT_PERSISTENT | SL_NETAPP_MDNS_IPV4_ONLY_SERVICE;
//动态更新 mDNS 服务文本
状态= sl_NetAppMDNSRegisterService ((const signed char *) service_name、strlen (service_name)、
(const signed char *) mdnsText、strlen (mdnsText)、
端口号、TTL、选项);
if (status !=0){
Display_printf (display、0、0、"[mDNS]未能更新 mDNS 服务:%d"、status);
其他{
Display_printf (display、0、0、"[mDNS] Service 使用 Wi-Fi 扫描数据进行了更新。");
}
}
#define MAX_SCAN_SIZE 200 // Tahmini en fazla Wi-Fi ağı sayısı
int32_t wifiGetCallback (uint8_t requestIdx、uint8_t * argcCallback、uint8_t ** argvCallback、SlNetAppRequest_t * netAppRequest){
SlWlanNetworkEntry_t * currentEntries = NULL;
int32_t status;
char *有效载荷= NULL;
char * pPayload = NULL;
int entryCount = 0;
char mdnsText[MAX_MDNS_TEXT_LENGTH];//用于保存 mDNS 文本数据的缓冲区
char * pMdnsText = mdnsText;
//清除缓冲区中的 mDNS 文本
memset (mdnsText、0、MAX_MDNS_TEXT_LENGTH);
//当前条目的动态内存分配
currentEntries =(SlWlanNetworkEntry_t *) malloc (MAX_SCAN_SIZE * sizeof (SlWlanNetworkEntry_t));
如果(!currentEntries){
//内存分配失败、发送错误消息
有效载荷=(char *) malloc (50 * sizeof (char));//为错误消息分配
if (有效载荷){
sl_memcpy (有效载荷、"存储器分配失败"、25);
sl_NetAppSend (netAppRequest ->句柄、strlen (有效载荷)、(unsigned char *)有效载荷、0);
空闲(有效载荷);
}
返回-1;
}
//获取 Wi-Fi 网络列表
状态= sl_WlanGetNetworkList (0、MAX_SCAN_SIZE、currentEntries);
如果(状态< 0){
//准备 Wi-Fi 扫描失败的错误响应
有效载荷=(char *) malloc (50 * sizeof (char));//为错误消息分配
if (有效载荷){
sl_memcpy (有效载荷、"Wi-Fi 扫描期间出错"、24);
sl_NetAppSend (netAppRequest ->句柄、strlen (有效载荷)、(unsigned char *)有效载荷、0);
空闲(有效载荷);
}
sl_memcpy (mdnsText、"Wi-Fi 扫描期间的错误"、24);//也发送 mDNS 错误
其他{
//确定找到的条目数
entryCount = STATUS;
//为通过 HTTP 发送的有效载荷进行动态内存分配
有效载荷=(char *) malloc (2048 * sizeof (char));//根据需要调整大小
如果(!有效载荷){
//内存分配失败、发送错误消息
sl_memcpy (有效载荷、"存储器分配失败"、25);
sl_NetAppSend (netAppRequest ->句柄、strlen (有效载荷)、(unsigned char *)有效载荷、0);
免费(currentEntries);
返回-1;
}
memset (有效载荷、02048);//清除有效载荷缓冲区
ploady =有效载荷;
//按 RSSI 对当前条目进行排序
qsort (currentEntries、entryCount、sizeof (SlWlanNetworkEntry_t)、compareRSSI);
//为当前扫描网络准备有效载荷
对于(int i = 0;i < entryCount;i++){
SlWlanNetworkEntry_t * ap =¤tEntrys[i];
//检查 SSID、如果为空则指定"NULL"
char *ssid =(strlen ((char *) ap->ssid)>0)? (char *) ap->SSID:"NULL";
//检查 BSSID、如果不可用、则指定"NULL"
Char BSSID[18];
if (ap->bssid[0]== 0 && ap->bssid[1]== 0 && ap->bssid[2]== 0 &&
ap->bssid[3]== 0 && ap->bssid[4]== 0 && ap->bssid[5]== 0){
sprintf (BSSID、"NULL");
其他{
sprintf (BSSID、"%02x:%02x:%02x:%02x:%02x:%02x:%02x"、
ap->bssid[0]、ap->bssid[1]、ap->bssid[2]、
ap->bssid[3]、ap->bssid[4]、ap->bssid[5]);
}
// RSSI 检查
字符 RSSI[5];
sprintf (RSSI、"%d"、ap->RSSI);
//通道检查
CHAR 通道[5];
sprintf (频道、"%d"、ap->Channel);
//格式化 HTTP 响应的有效负载
pPayload += sprintf (pPayload、"|%s |%s |%s |\n"、SSID、BSSID、RSSI、CHANNEL);
//打印到调试控制台
Display_printf (display、0、0、"|%s |%s |%s |%s |\n"、SSID、BSSID、RSSI、频道);
//添加到 mDNS 文本以显示前3个网络
如果(I < 3){
char entryText[80];
snprintf (entryText、sizeof (entryText)、"SSID=%s;RSSI=%d;CH=%d|"、
strlen ((char *) ap->SSID)> 0? (char *) ap->SSID:"Unknown"、
AP->RSSI、ap->Channel);
strncat (pMdnsText、entryText、MAX_MDNS_TEXT_LENGTH - strlen (pMdnsText)- 1);
}
}
//以 NULL 终止 HTTP 响应的有效负载
*pPayload ='\0';
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);
//使用 Wi-Fi 扫描结果更新 mDNS 服务
updateMdnsService(mdnsText);
}
//空闲分配的内存
免费(currentEntries);
空闲(有效载荷);
返回0;
}
#define MDNS_SERVICE_NAME "http"//示例服务名称
#define MDNS_SERVICE_TYPE "_http._tcp.local"//服务类型、例如 HTTP
#define MDNS_HOST_NAME"my_DEVICE"
#define MDNS_SERVICE_PORT 80
int32_t startMdnsService(){
int32_t status;
//设置 mDNS 主机名
状态= sl_NetAppSet (SL_NETAPP_DEVICE_ID、SL_NETAPP_DEVICE_URN、strlen (MDNS_HOST_NAME)、(uint8_t *) MDNS_HOST_NAME);
如果(状态< 0){
Display_printf (display、0、0、"[mDNS]未能设置 mDNS 主机名:%d"、status);
返回状态;
}
//确保在重新注册之前停止 mDNS 服务
状态= sl_NetAppStop (SL_NETAPP_MDNS_ID);
如果(状态< 0){
Display_printf (display、0、0、"[mDNS]无法停止先前的 mDNS 服务:%d"、status);
返回状态;
}
//注册 mDNS 服务
status = sl_NetAppMDNSRegisterService ((const signed char *) MDNS_SERVICE_TYPE、
strlen (MDNS_SERVICE_TYPE)、
(const signed char *) MDNS_SERVICE_NAME、
strlen (MDNS_SERVICE_NAME)、
mDNS_SERVICE_PORT、0120);// TTL = 120秒
如果(状态< 0){
Display_printf (display、0、0、"[mDNS]未能注册 mDNS 服务:%d"、status);
返回状态;
}
Display_printf (display、0、0、"[mDNS] mDNS 服务已成功启动");
返回0;
}
我这样意识到了 mdns 代码,但我仍然无法通过 my_divece 进行通信。 我的 mdns 代码中是否有错误或缺失?
您好!
我不能在不对其进行调试的情况下回顾这么大的代码。 我没有时间执行这些操作、甚至没有准备好开发环境来调试采用最新 SDK 和 CCS 的 CC3235。 代码的调试将由您决定。
但我在您的上面任何地方都看不到通过 sl_NetAppStart (SL_NETAPP_MDNS_ID)启用 mDNS 服务的代码;
1月
但是、我以前曾在许多公司工作过。 ST、Nuvoton、Microchip、当我尝试使用他们的产品时、公司官员亲自照顾我、帮助我启动和运行项目。 我期望 TI 能够提供这些、但只有您能帮助我。 我希望 TI 官员提供帮助、但他们忽视了我。
非常感谢。
您好!
第一步、需要在 CC32xx 中启用 mDNS、并使用 Bonjour 浏览器等第三方 mDNS 应用进行测试。 之后、您可以搜索的 mDNS 库。 NET 并在您的 VS 应用中实施 mDNS。
我不认为 TI 工程师会忽略您。 但您不能期望他们为您编写代码或为您创建如何将其解决方案用于项目的精确分步指南。 他们还期望终端用户了解计算机网络如何工作的基本知识、就像 I 一样。我作为开发人员工作了15年、从未见过能够为我编写代码的半导体公司。 TI、NXP、STM、ADI 和 ONSemi 的员工也是如此(NXP 和 ONSemi 的员工中我都有朋友(这些公司在同一个16k 镇上拥有研发和晶圆厂)、并且我们并不是一家小公司。
1月
因此,在这样做之后,购买设备的用户是否需要在需要使用自己的系统检索数据时安装其他应用程序,如 Bonjour ? 大多数情况下、出于安全原因、用户不想安装其他应用程序。
您好!
您可以在 Visual Studio 创建的应用中实现对 mDNS 的支持。 将不需要使用第三方应用程序。 但此类第三方应用在项目的开发阶段非常有用。
1月
我很抱歉,我一直很累。 我正在从像您这样的经验丰富的人那里学习如何做、我非常感谢您的参与。
最后,我现在需要确定一个方法,我非常不定.
1-)正如我说过的、我会给用户100张 cc3235sf 卡、用户将通过 Visual Studio 或其他软件从这100张卡接收数据。 用户更喜欢在不使用设备 IP 地址的情况下执行此操作。
根据此偏好、是否足以将 mdns 集成到我的 wifi-http 代码中。 然后、他可以通过将 mdns 集成到 Visual Studio 或其他软件中来获取数据。
2-)认为你理解我想做什么,你有一个更实用的方式建议吗? 如果你说我会这样做、你能告诉我吗?
最后、我希望您回答这两个问题
谢谢你
您好!
您为最终用户提供100台设备。 在第一阶段、您的客户需要将设备配置到他们的网络中(这意味着为他们的网络设置 SSID 和密码到设备中)。 当设备成功连接到网络时、他可以运行 PC 应用程序。 此 PC 应用将使用 mDNS 搜索可用器件、并开始使用 HTTP GET 从这些器件读取数据。
这种方法应该能够正常工作。 可能最好为每个器件设置唯一的 mDNS 地址。 这可以在生产阶段完成。
也许有更好的方法来执行这项任务,但我恐怕你会用这种方法来挣扎。 在 CC32xx 内使用 HTTP 服务器与 mDNS 似乎是合理的方法。
1月
我有一个新问题要问您。 现在发送到 Wi-Fi 网络
#define SSID_NAME "FiberHGW_ZTGT2P_5GHz"
/*安全类型(开放或 WEP 或 WPA_WPA2)*/
#define SECURITY_TYPE SL_WLAN_SEC_TYPE_WPA_WPA2
/*安全 AP 的密码*/
#define SECURITY_KEY "bUDePdKrNb"
我将连接此信息。 但只有 SSID 和密码。 我想使用 SSID、用户名和密码与我的客户建立联系。 提供这一点。 如果可能、我们如何做到这一点。
您好!
如果您正在讨论 EAP 安全(WPA2-EAP、WPA3-EAP)、则说明 CC3235支持此安全类型。 但 CC3235对用于 RADIUS 身份验证的 TLS 1.0有限制。 要能够使用 EAP 安全功能、您需要有支持 EAP 安全功能的 WiFi 网络(例如 RADIUS 服务器)。 有关如何使用 EAP 安全性的更多详细信息、请参阅 SWRU455。
但是启用 EAP 安全可能非常棘手(正确的网络设置、将证书和 CA 文件上载到 CC32xx 器件)。 我根据您之前的问题为您推荐。 请勿尝试使用 EAP 安全功能。
1月
通过这种方式、我想通过输入 WPA2-entreprise 的 SSID、密码和用户名来连接到网络、但设备未连接到网络。 代码如下所示。 这是什么原因。
#define SSID_NAME "TLNYS"
/*安全类型(开放或 WEP 或 WPA_WPA2)*/
#define SECURITY_TYPE SL_WLAN_SEC_TYPE_WPA_ENT
/*安全 AP 的密码*/
#define SECURITY_KEY "Mcr0C0ntr0llrS:)"
#define USER_KEY "micro"
SlWlanSecParams_t secParams ={0};
SlWlanSecParamsExt_t secParamsExt ={0};// WPA2-Enterprise için EK 参数
secParams。 KEY =(signed char *) security_key;//Şifre
secParams。 KeyLen = strlen (SECURITY_KEY);
secParams。 类型= SECURITY_TYPE;
// Eğer WPA2-Enterprise (Kullanıcı adı ve şifre) kullanılıyorsa ayarları yap
如果(SECURITY_TYPE = SL_WLAN_SEC_TYPE_WPA_ENT)
{
secParamsExt。 User =(signed char *) user_key;// Kullanıcı adı
secParamsExt。 UserLen = strlen (USER_KEY);
secParamsExt。 AnonUser = NULL;// Anonim kullanıcı yoksa boş bırakılabilir
secParamsExt。 AnonUserLen = 0;
secParamsExt。 EapMethod = SL_WLAN_ENT_EAP_METHOD_PEAP0_MSCHAPv2;// EAP yöntemi PEAP/MSCHAPv2
}
Retc = Network_IF_ConnectAP (SSID_NAME、secParams、&secParamsExt);
如果(Retc < 0)
{
Display_printf (display、0、0、"[HTTP 服务器任务]未能连接到 AP");
while (1);
}
您好!
很难说出您无法使用 WPA2-EAP 进行连接的原因。 有关更多详细信息、请参阅 RADIUS 服务器上的日志。
要使用 EAP 模式 PEAP0-MSCHAPv2进行连接、您需要在 CC32xx 中设置正确的时间、并在 sFlash 中上传 CA 文件、或者禁用针对 CA 文件的服务器身份验证(参数设置为0、而不是 SWRU455中所述的1)。 在 RDIUS 服务器端、需要正确配置用户配置文件、并且需要允许使用 TLS 1.0 (这一点很重要!)、因为 CC32xx 不支持用于 EAP 安全的 TLS 1.1和 TLS 1.2。
1月
我去了一家公司、我的计算机通过输入用户名和密码直接连接到公司的访问点。
因此、我认为该公司的互联网没有安全证书。
后来、当我想连接设备时、该设备没有收到 IP。 我无法在我自己的系统上尝试此操作、因为您不是支持 WPA2-Enterprise 的路由器。
您好!
需要由管理员提供。 使用不带 CA 文件的 PEAP0-MSCHAPv2毫无意义、因为这会带来安全风险。
如果没有支持 EAP (IEEE 802.1X)的硬件、如何调试 EAP 安全性? 您需要使接入点能够连接到 RADIUS 服务器。 之后您可以将 FreeRADISU 运行到您的计算机或 Raspberry Pi。 正确配置 FreeRADIUS 服务器并非易事(在 Linux 计算机上安装 FreeRADIUS、配置用户列表、正确配置 EAP 扩展、通过 OpenSSL 生成证书等)。
正如我在前面的答案中所说、CC32xx 仅支持 EAP 安全 TLS 1.0。 在许多公司部署时、这可能会成为问题。 许多大公司不再允许使用 TLS 1.0。 即使 FreeRADIUS 3.x 默认也不支持 TLS 1.0、需要在/mods-enabled/eap 和选项 ls_min_version ="1.0"处启用。
1月
如果公司网络不支持 TLS 1.0、我将如何找到解决方案。 如果我切换到另一个模块、那么我将无法使用 cc3235sf。
它还表示它支持 TLS 1.0以外的 TLS 网络。
您好!
否 这适用于不适用于 EAP 的套接字。 对于 EAP、仅如我所说、TLS 1.0受支持。
1月
我要使用的网络使用 PEAP。 这种大小写模式是否也有问题
您好!
TLS 1.0至 EAP 安全限制适用于所有 EAP 方法。 我不确定 Cisco FAST_*方法、但很少使用这些方法。
如果网络使用 PEAP EAP 方法、但不允许 TLS 1.0、则无法使用 EAP 安全将 CC3235连接到这些网络、您对此不能采取任何措施。
1月