ThreadX 是一个实时操作系统(RTOS)内核,而 NetX 则是 Express Logic 提供的一个嵌入式 TCP/IP 网络栈,它经常与 ThreadX 一起使用来提供网络功能。在 ThreadX 和 NetX 中设置和获取 IP 地址通常涉及几个步骤。
设置 IP 地址
- 初始化 NetX:首先,你需要初始化 NetX 网络栈。这通常包括创建一个网络接口,并设置相关的参数,如 MAC 地址、MTU(最大传输单元)等。
- 配置 IP 实例:接下来,你需要配置一个 IP 实例。这通常涉及到创建一个 IP 实例,并将其与先前创建的网络接口关联起来。
- 设置 IP 地址:使用 NetX 提供的 API 来设置 IP 地址、子网掩码和默认网关。这些 API 通常包括
nx_ip_address_set
等。
示例代码(假设你已经有了 ip_ptr
指向 IP 实例的指针):
UINT status;/* 设置 IP 地址 */status = nx_ip_address_set(ip_ptr, 0, IP_ADDRESS(192, 168, 1, 10), IP_ADDRESS(255, 255, 255, 0));/* 检查状态 */if (status != NX_SUCCESS){/* 错误处理 */}
获取 IP 地址
要获取 IP 地址,你可以使用 NetX 提供的 API 来查询 IP 实例或网络接口的状态。
示例代码(假设你已经有了 ip_ptr
指向 IP 实例的指针):
NX_IP_ADDRESS ip_address;NX_IP_ADDRESS network_mask;/* 获取 IP 地址和子网掩码 */status = nx_ip_address_get(ip_ptr, &ip_address, &network_mask);if (status == NX_SUCCESS){/* 在这里,你可以使用 ip_address 和 network_mask 变量 */}else{/* 错误处理 */}
IP地址修改通知程序
在 IP 地址更改时通知应用程序, 务用于注册应用程序通知函数,每当 IPv4 地址更改时都会调用该回调函数函数。
VOID my_ip_changed(NX_IP *ip_instance, VOID *ptr)
{/* 根据需求可以写自己的应用代码 */}UINT status;status = nx_ip_address_change_notify(&ip_0, my_ip_changed, NX_NULL);
检查IP的状态
用于检查并选择性等待先前所创建 IP 实例的主网络接口的指定状态。 若要获取辅助接口的状态,应用程序应使用 nx_ip_interface_status_check 服务。
needed_status:所请求的 IP 状态,以位图形式定义,如下所示:
NX_IP_INITIALIZE_DONE (0x0001)
NX_IP_ADDRESS_RESOLVED (0x0002)
NX_IP_LINK_ENABLED (0x0004)
NX_IP_ARP_ENABLED (0x0008)
NX_IP_UDP_ENABLED (0x0010)
NX_IP_TCP_ENABLED (0x0020)
NX_IP_IGMP_ENABLED (0x0040)
NX_IP_RARP_COMPLETE (0x0080)
NX_IP_INTERFACE_LINK_ENABLED (0x0100)
status = nx_ip_status_check(&ip_0, NX_IP_LINK_ENABLED, &actual_status,
10);