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(¶ms);
params.instance->name = "httpTask";
params.priority = 1;
params.arg0 = 0;
params.stackSize = HTTPTASKSTACKSIZE;
httpTaskHandle = Task_create((Task_FuncPtr)httpTask, ¶ms, &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