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:WIFI-HTTP 代码在 STA 模式下不起作用

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

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1423321/launchxl-cc3235sf-wifi-http-code-does-not-work-in-sta-mode

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

工具与软件:

WIFI-HTTP 代码在 STA 模式下不起作用。 我将其置于 STA 模式。 设备获取 IP 地址。 例如、其地址为192.168.10.145。 我将已连接网络的 DNS 设置设置设置为192.168.10.1、但当我在浏览器中键入 mysimplelink.net 时、它无法连接到此地址。

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

    您好!

    否 在 STA 模式下、它无法通过这种方式工作。 CC32xx 无法影响其他 DNS 服务器。 这不是 CC32xx 的问题、但它来自于 TCP/IP 网络和 DNS 的工作原理。 在 STA 模式下、您可以将 mDNS 与.local 地址一起使用、但客户端计算机需要支持 mDNS。 Windows、Linux、Android 和 iOS 采用不同的 mDNS 方法。 这意味着不存在普遍做法。

    1月

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

    大家好、我的问题实际上就是这个。 您知道现成的 WIFI-HTTP 代码、对吧? 在该代码中、mysimplelink.net 会连接到地址、并且可以执行许多操作。
    问题是代码在 AP 模式下非常成功地运行。 但当我将代码置于 STA 模式时、我在浏览器中键入 mysimplelink.net 地址时将无法连接。 键入设备收到的 IP 地址时可以进行连接。 造成此问题的原因是什么以及我实际要寻找的解决方案是什么  

    代码:  

    void * httpserverThread (void * pvParameters)

    mq_attr 属性;
    int32_t msgqRetVal;
    int32_t retc = 0;
    pthread_t spawn_thread =(pthread_t) NULL;
    pthread_attr_t pAttrs_spawn;
    结构 sched_param priParam;

    spi_init();

    /* NWP günlüğü*/
    MAP_PinTypeUART (PIN_62、PIN_MODE_1);
    /*为 UART 输出配置显示模块*/
    display_init();

    Display = Display_open (Display_Type_、SNLULL);
    if (display == NULL){
    /*无法打开显示模块*/
    while (1);
    }

    /*使用 CC3x20接口初始化 SlNetSock 层*/
    /*我们正在使用优先级5 */
    SlNetIF_init (0);
    SlNetIF_ADD (SLNETIF_ID_1、"CC32xx"、(const If_Config_*表皮357)&SlNetIfConfigWifi、/* PRIORITY*/ 5);
    SlNetSock_init (0);
    SlNetUtil_init (0);

    /*创建 sl_Task */
    pthread_attr_init (&pAttrs_spawn);
    priparam.sched_priority = spawn_task_priority;
    retc = pthread_attr_setschedparam (&pAttrs_spawn、&priParam);
    retc |= pthread_attr_setstacksize (&pAttrs_spawn、TASKSTACKSIZE);
    retc |= pthread_attr_setdetachstate (&pAttrs_spawn、pthread_create_detached);

    retc = pthread_create (&spawn_thread、&pAttrs_spawn、sl_Task、NULL);

    如果(Retc < 0)

    /*处理错误*/
    Display_printf (display、0、0、"[HTTP 服务器任务]无法创建 SimpleLink 任务");
    while (1);
    }

    Retc = sl_Start (0、0、0);
    如果(Retc < 0)

    /*处理错误*/
    Display_printf (display、0、0、"[HTTP 服务器任务] sl_Start failed");
    while (1);
    }

    setScanPolicy();
    /*将设备信息输出到 UART 终端*/
    DisplayBanner (application_name、application_version);

    Retc = SL_Stop (SL_STOP_TIMEOUT);
    如果(Retc < 0)

    /*处理错误*/
    Display_printf (display、0、0、"[HTTP 服务器任务] sl_Stop failed");
    while (1);
    }

    /*关闭红色 LED */
    GPIO_WRITE (CONFIG_GPIO_LED_0、CONFIG_GPIO_LED_OFF);

    /*重置机器的状态*/
    network_if_ResetMCUStateMachine();

    /*启动驱动程序*/
    // retc = Network_if_InitDriver (ROLE_AP);
    Retc = Network_IF_InitDriver (ROLE_STA);
    如果(Retc < 0){
    Display_printf (display、0、0、"[HTTP 服务器任务]未能启动 SimpleLink 设备"、retc);
    }

    //将器件设置为在 STA 模式下使用 DHCP 模式
    Int ret = SL_NetCfgSet (SL_Netcfg_IPV4_STA_ADDR_MODE、SL_Netcfg_ADDR_DHCP、0、0);
    如果(ret < 0){
    display_printf (display、0、0、"Failed to set DHCP mode");
    while (1);
    }

    //连接至 Wi-Fi (STA 模式)
    SlWlanSecParams_t secParams ={0};
    secParams。 KEY =(signed char *) security_key;
    secParams。 KeyLen = strlen (SECURITY_KEY);
    secParams。 类型= SECURITY_TYPE;

    Retc = Network_IF_ConnectAP (SSID_NAME、secParams);
    如果(Retc < 0){
    Display_printf (display、0、0、"[HTTP 服务器任务]未能连接到 AP");
    while (1);
    }

    //等待 IP 获取、然后再启动 HTTP 服务器
    如果(IS_IP_ACQUIRED (g_ulStatus)){
    display_printf (display、0、0、"[HTTP 服务器任务] ip acquided、starting HTTP server");

    //检索和打印 SSID (网络名称)
    display_printf (display、0、0、"Connected to network:%s"、g_ucConnectionSSID);

    //检索 IP 地址
    unsigned long ipaddr、subMask、gateway、DNS;
    int32_t retc = Network_if_IpConfigGet (&ipaddr、&subMask、&gateway、&DNS);
    如果(Retc < 0){
    Display_printf (display、0、0、"Failed to get IP configuration");
    其他{
    //打印 IP 地址
    Display_printf (DISPLAY、0、0、"IP Address:%d.%d.%d.%d"、
    SL_IPV4_BYTE (ipaddr、3)、SL_IPV4_BYTE (ipaddr、2)、SL_IPV4_BYTE (ipaddr、 1)、SL_IPV4_BYTE (ipaddr、0));

    if (DNS != 0 && DNS != 0xFFFFFFFFF){//确保有效的 DNS
    Display_printf (DISPLAY、0、0、"DNS 地址:%d.%d.%d.%d"、
    SL_IPV4_BYTE (DNS、3)、SL_IPV4_BYTE (DNS、2)、SL_IPV4_BYTE (DNS、 1)、SL_IPV4_BYTE (DNS、0));
    其他{
    Display_printf (DISPLAY、0、0、"DNS 地址不可用或无效");
    }

    // IP 获取后启动 HTTP 服务器
    ConfigureHttpServer();
    其他{
    Display_printf (display、0、0、"[HTTP 服务器任务]正在等待 IP 地址...");
    while (! IS_IP_ACQUIRED (g_ulStatus){
    usleep (1000);//等待获取 IP
    }

    //检索和打印 SSID (网络名称)
    display_printf (display、0、0、"Connected to network:%s"、g_ucConnectionSSID);

    //检索 IP 地址
    unsigned long ipaddr、subMask、gateway、DNS;
    int32_t retc = Network_if_IpConfigGet (&ipaddr、&subMask、&gateway、&DNS);
    如果(Retc < 0){
    Display_printf (display、0、0、"Failed to get IP configuration");
    其他{
    //打印 IP 地址
    Display_printf (DISPLAY、0、0、"IP Address:%d.%d.%d.%d"、
    SL_IPV4_BYTE (ipaddr、3)、SL_IPV4_BYTE (ipaddr、2)、SL_IPV4_BYTE (ipaddr、 1)、SL_IPV4_BYTE (ipaddr、0));

    //打印 DNS 地址
    if (DNS != 0 && DNS != 0xFFFFFFFFF){//确保有效的 DNS
    Display_printf (DISPLAY、0、0、"DNS 地址:%d.%d.%d.%d"、
    SL_IPV4_BYTE (DNS、3)、SL_IPV4_BYTE (DNS、2)、SL_IPV4_BYTE (DNS、 1)、SL_IPV4_BYTE (DNS、0));
    其他{
    Display_printf (DISPLAY、0、0、"DNS 地址不可用或无效");
    }

    // IP 获取后启动 HTTP 服务器
    ConfigureHttpServer();
    }

    如果(Retc < 0)

    Display_printf (display、0、0、"[HTTP 服务器任务]未能启动 SimpleLink 设备"、retc);
    }

    /*初始化 http 消息的邮箱*/
    ATTR.MQ_maxmsg = 1;/*队列大小*/
    attr.mq_msgsize = sizeof (SlNetAppRequest_t*);/*消息的大小*/
    httpserverMPuet = mq_open ("httpserver msg q"、O_creat、0、&attr);
    if (httpserverQueue == NULL)

    display_printf (display、0、0、"[HTTP 服务器任务]无法创建 msg 队列");
    while (1);
    }

    Retc = ConfigureHttpServer();
    如果(Retc < 0)

    /*处理错误*/
    Display_printf (display、0、0、"[HTTP 服务器任务]配置 HTTP 服务器失败");
    while (1);
    }
    //开始时间同步

    initHttpserverDB();

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

    您好!

    在 CC32xx 端没有解决方案。 唯一的方法是更改 DNS 服务器内的 DNS 记录。

    其他选项可以使用 mDNS、但这不是通用的解决方案。 因为操作系统和操作系统版本不同(例如、某些版本的 Windows 10用于解析.local 地址 LLMNR 协议某些版本 mDNS 等)

    1月

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

    在 CC32xx 端没有解决方案。 唯一的方法是更改 DNS 服务器内的 DNS 记录。

    这话具体是什么意思? 您是指更改我的 DNS 地址。 例如、如果我的 cc3235sf 器件的 IP 地址为192.168.10.145、DNS 应是多少。 你说的是这样的东西吗?

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

    您好!

    这来自于计算机网络的基本工作原理。 CC32xx 器件或其他网络器件无法执行此操作。

    网络中 DNS 服务器的工作方式和配置方式取决于网络基础结构。 有时 DHCP 服务器配置为使用 DHCP 主机名(选项12)作为 DNS 服务器的主机名。 例如、如果客户端主机名是"my_CC3235"、则基础设施可以创建类似"my_CC3235.xxxxx"的 DNS 记录。 但这取决于您的基础设施、而不是 CC32xx。

    1月

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

    首先、感谢您的回答。
    但是、我对什么是解决方案而不是我的问题感兴趣。
    我需要解决这些问题。 我需要使用该 wifi-http 结构。 如何通过解决此问题来使用此结构。 解决方案是什么?
    我可以将代码与代码相关的代码发送给您。
    请让我们为我的问题找到一个解决方案。

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

    在 AP 模式下键入 mysimplelink.net/example.html 时、html 页面随即打开并能正常工作。 我无法在 sta 模式下执行相同的操作。 当我 example.html 在 STA 模式下键入192.168.10.145/STA 时、将会打开 html 页面。 我不明白我在哪里出了问题。 实际上、代码显示它在 sta 模式下工作。 唯一的问题是我想用这种方式访问 html 页面 mysimplelink.net/example.html 而不输入 IP 地址  

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

    您好!

    解决此问题的方法是根据网络基础设施的设置、而不是 CC32xx 端。 CC32xx 的任何代码行都无法完全解决此问题。 唯一可以尝试使用的方法是使用 mDNS 并解析地址 xxx.local。 但这在许多情况下不起作用。

    SWRU455第10章介绍了 CC32xx 的 mDNS 功能

    1月

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

    首先、感谢您的回答。
    但是、我对什么是解决方案而不是我的问题感兴趣。
    我需要解决这些问题。 我需要使用该 wifi-http 结构。 如何通过解决此问题来使用此结构。 解决方案是什么?
    我可以将代码与代码相关的代码发送给您。
    请让我们为我的问题找到一个解决方案。

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

    您好!

    多次询问相同的问题不能解决您的问题。 唯一可以尝试的就是使用 mDNS。 但您会发现、这种方法远不理想。

    也许你应该阅读一些课程的 TCP/IP 网络和 DNS(我的建议是书 TCP/IP 从 Heather Osterloh )。 您会意识到的、为什么您的问题没有简单的解决方案。

    1月

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

    我无法切换到 TCP/IP 协议。 我现在无法实施这个解决方案。 我需要根据当前的条款和条件解决这一问题。 感谢您的建议。
    有时很难理解为何 TI 官员不处理问题。
    谢谢您的回答。

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

    您好!

    HTTP 只是 TCP/IP 之上的协议。 这意味着对于 HTTP、您使用的是 TCP/IP。

    • 正如我所说、解决方案是在网络基础设施方面、而不是在 CC32xx 方面。
    • 在 CC32xx 上只能尝试使用 mDNS 来解析 mysimplelink.local 等地址。 但这并不是在所有情况下都起作用。
    • 当您将 IP 地址发送到您的云服务器并根据您的外部 IP 显示该服务器上的 IP 地址时、可能存在其他方法、但这并不理想。
    • 您可以创建自己的客户端应用程序、以便在网络上查找设备并使用此类 IP 打开 Web 浏览器。 许多网络设备制造商都是这样使用的。
    • 或者、您可以公开您自己的 RFC 标准、等待批准并在广泛的操作系统和 Web 浏览器中实施。 这可能需要8-10年的时间。

    TI 关心客户的问题。 但是你在要求解决目前没有解决方案的事情。 不仅是 TI 的制造商、也是其他制造商的制造商。

    请回答我的问题。 您购买 IP 摄像机并将其连接到网络。 IP 摄像机使用 DHCP。 您要打开此摄像机的网页。 如何才能做到这一点? 如何确定 IP 摄像机的 IP 地址?

    1月

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

    您好;
    首先,没有任何规则,每个人都将有你的经验或知识。 因此、这里有一个刚开始与 TI 合作的人。 你给解决方案的建议,就像你面前的人已经掌握了一切。
    我不希望有什么东西不存在。 我不认为这种情况没有解决办法。 因为当您在 Web 浏览器中键入设备接收到的 IP 地址时、系统将正常工作。 但是,当你尝试连接域名时,系统不工作,我认为没有解决这个问题的办法。
    你给我提供了非常广泛的建议。 然而,我不是一个知道这里一切的人。 如果我是一个知道一切的人,我不会问任何问题。
    因此、我希望您能更具体地回答问题、并通过代码或具体示例回答问题。 当然,你没有义务这样做。

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

    您好!

    我认为,如果你想开发网络(WiFi)设备是强制性的,至少有基本的知识如何计算机网络工作。

    我说过。 你可以尝试 mDNS、也许它能在你的情况下正常工作。 或者、您可以创建本机应用程序(适用于 Windows、Android、iOS)、该应用程序可以在网络上找到您的设备、并在使用许多网络设备制造商时打开设备网页。 或者、如果您的设备有 LCD 显示屏、则在 LCD 上显示 IP 地址或使用 IP 地址显示二维码。 但是、正如我多次说过的、当器件基于 DNS 连接到网络时、没有标准和通用的解决方案。 如果你不相信我,只是找到一些不同的网络设备的手册,并做你自己的研究。

    1月

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

    我不明白的是、为什么当器件在 AP 模式下正常工作时、STA 模式下会出现 DNS 问题。   

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

    您好!

    在 AP 模式下、由 CC32xx 的 DNS 服务器提供服务。 但在 STA 模式下、您的网络中使用的是 DNS 服务器。 而且您的 DNS 服务器对您的 CC32xx 器件一无所知。 某些 DHCP 服务器可以通过使用 DHCP 时 CC32xx 报告的主机名(CC32xx 设置中的现场 URN)在您的网络上配置 DNS 服务器。 但这取决于您的网络基础设施。

    1月