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.

[参考译文] MSP-EXP432E401Y:HTTP/HTTPS 示例静态 IP 问题

Guru**** 2398695 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1033969/msp-exp432e401y-http-https-example-static-ip-problems

器件型号:MSP-EXP432E401Y
Thread 中讨论的其他器件:SysConfig

大家好、TI 社区、

我之前的帖子设置为错误地解决了。 我找不到设置为未解析的内容、因此无法发布此新帖子。

总结了使用静态 IP 设置时的 HTTP 示例

  • 不适用于 TI-RTOS 线程。 仅 Pthread
  • 每个 HTTP 调用需要2-3秒
  • 线程类型的高优先级失败


这具有 pthread 优先级10以及 TI RTOS 任务优先级10

我更喜欢使用 TI-RTOS 线程类型而不是 pthread。 我认为实施应该可以互换。 为什么情况不是这样?

我在创建下面的 httpTask 或 httpThread 之前调用此函数。 我进行了一些修改、通过传递 Config 句柄并在 SysConfig 中将其设置为挂钩来在链接的帖子中进行了回答

void setDNS(void* hCfg){

    uint32_t dns;

    // Manually add the DNS server
    dns = inet_addr("192.168.86.1");

    CfgAddEntry(hCfg, CFGTAG_SYSINFO, CFGITEM_DHCP_DOMAINNAMESERVER,
                    0, sizeof(dns), (unsigned char *)&dns, 0);
}




现在、对于 pthread 和 TI-RTOS 任务优先级设置为1的情况。

TI-RTOS 任务:
// Task Initialisation
Error_Block eb;
Error_init(&eb);
Task_Params params;
Task_Handle httpTaskHandle;

Task_Params_init(&params);
params.instance->name = "httpTask";
params.priority = 1;
params.arg0 = 0;
params.stackSize = HTTPTASKSTACKSIZE;

httpTaskHandle = Task_create((Task_FuncPtr)httpTask, &params, &eb);

if (httpTaskHandle == NULL) {
    /* Error: could not create NDK stack thread */
    Display_printf(display, 0, 0,
                    "netIPAddrHook: Task_create() failed\n");
    while(1);
}

createTask = false;

// HTTP Task Thread Implementation

ret = HTTPClient_setHeader(httpClientHandle,
HTTPClient_HFIELD_REQ_USER_AGENT, USER_AGENT,
strlen(USER_AGENT) + 1, HTTPClient_HFIELD_PERSISTENT);

if (ret < 0) {
    printError("httpTask: setting request header failed", ret);
}

for(int index = 0; index < 2; ++index){

    Task_sleep(3000);

    ret = HTTPClient_connect(httpClientHandle, HOSTNAME, 0, 0);

    if(ret >= 0) break;
}

if (ret < 0) {
    printError("httpTask: connect failed", ret);
}



pthread (主题):

 /* Set priority and stack size attributes */
pthread_attr_init(&attrs);
priParam.sched_priority = 1;

detachState = PTHREAD_CREATE_DETACHED;
retc = pthread_attr_setdetachstate(&attrs, detachState);
if (retc != 0) {
    Display_printf(display, 0, 0,
            "netIPAddrHook: pthread_attr_setdetachstate() failed\n");
    while (1);
}

pthread_attr_setschedparam(&attrs, &priParam);

retc |= pthread_attr_setstacksize(&attrs, HTTPTASKSTACKSIZE);
if (retc != 0) {
    Display_printf(display, 0, 0,
            "netIPAddrHook: pthread_attr_setstacksize() failed\n");
    while (1);
}

retc = pthread_create(&thread, &attrs, httpThread, 0);
if (retc != 0) {
    Display_printf(display, 0, 0,
            "netIPAddrHook: pthread_create() failed\n");
    while (1);
}

createTask = false;


// Sleep from unistd library
ret = HTTPClient_setHeader(httpClientHandle,
        HTTPClient_HFIELD_REQ_USER_AGENT, USER_AGENT,
        strlen(USER_AGENT) + 1, HTTPClient_HFIELD_PERSISTENT);
            
if (ret < 0) {
    printError("httpTask: setting request header failed", ret);
}

for(int index = 0; index < 2; ++index){

    sleep(3);

    ret = HTTPClient_connect(httpClientHandle, HOSTNAME, 0, 0);

    if(ret >= 0) break;
}


if (ret < 0) {
    printError("httpTask: connect failed", ret);
}


[CORTEX_M4_0] Network Added: 
If-1:192.168.86.220

Sending a HTTP GET request to 'http://www.google.com/'

HTTP Response Status Code: 200

.. Payload here but removed for simplicity

Received 13433 bytes of payload