RT-Thread online packages -> IoT - internet of things -> netutils: Networking utilities for RT-Thread
Ping 工具
Ping 是一种网络诊断工具,用来测试数据包能否通过 IP 协议到达特定主机。估算与主机间的丢失数据包率(丢包率)和数据包往返时间(网络时延,Round-trip delay time)
Ping 工具依赖 lwIP,需要先在 Env 工具 开启 lwIP 的依赖才可见,步骤如下:
-> RT-Thread Components -> Network stack -> light weight TCP/IP stack -> Enable lwIP stack在 NetUtils 菜单栏使能 Ping 选项:
RT-Thread online packages -> IoT - internet of things -> netutils: Networking utilities for RT-Thread Enable Ping utilityPing 支持访问 IP 地址 或 域名 ,使用 Finsh/MSH 命令进行测试,大致使用效果如下:
Ping 域名
msh />ping rt-thread.org60 bytes from 116.62.244.242 icmp_seq=0 ttl=49 time=11 ticks60 bytes from 116.62.244.242 icmp_seq=1 ttl=49 time=10 ticks60 bytes from 116.62.244.242 icmp_seq=2 ttl=49 time=12 ticks60 bytes from 116.62.244.242 icmp_seq=3 ttl=49 time=10 ticksmsh />
Ping IP
msh />ping 192.168.10.1260 bytes from 192.168.10.12 icmp_seq=0 ttl=64 time=5 ticks60 bytes from 192.168.10.12 icmp_seq=1 ttl=64 time=1 ticks60 bytes from 192.168.10.12 icmp_seq=2 ttl=64 time=2 ticks60 bytes from 192.168.10.12 icmp_seq=3 ttl=64 time=3 ticksmsh />NTP 工具
NTP 是网络时间协议 (Network Time Protocol),它是用来同步网络中各个计算机时间的协议。在 RT-Thread 上实现了 NTP 客户端,连接上网络后,可以获取当前 UTC 时间,并更新至 RTC 中。
在 NetUtils 菜单栏使能 NTP 选项:
RT-Thread online packages -> IoT - internet of things -> netutils: Networking utilities for RT-Thread Enable NTP(Network Time Protocol) client获取 UTC 时间
UTC 时间 又称世界统一时间、世界标准时间、国际协调时间。北京时间为 UTC+8 时间,比 UTC 时间多 8 小时,或者理解为早 8 小时。
获取 UTC 时间函数原型为:time_t time_t ntp_get_time(void),返回值大于 0 则获取时间成功,等于 0 失败。
示例代码:
#include void main(void){ time_t cur_time; cur_time = ntp_get_time(); if (cur_time) { rt_kprintf("NTP Server Time: %s", ctime((const time_t*) &cur_time)); }}获取本地时间
本地时间比 UTC 时间多了时区的概念,例如:北京时间为东八区,比 UTC 时间多 8 个小时。在 menuconfig 中可以设置当前时区,默认为 8。
获取本地时间函数原型为: time_t ntp_get_local_time(void),返回值大于 0 则获取时间成功,等于 0 失败。该 API 使用方法与 ntp_get_time() 类似。
同步本地时间至 RTC
如果开启 RTC 设备,还可以使用下面的命令及 API 同步 NTP 的本地时间至 RTC 设备。
Finsh/MSH 命令效果如下:
msh />ntp_syncGet local time from NTP server: Sat Feb 10 15:22:33 2018The system time is updated. Timezone is 8.msh />同步本地时间至 RTC 函数原型为:time_t ntp_sync_to_rtc(void),返回值大于 0 成功,等于 0 失败。
注意事项
NTP API 方法执行时会占用较多的线程堆栈,使用时保证堆栈空间充足(≥1.5K)。
NTP API 方法不支持可重入,并发使用时,请注意加锁。
TFTP 工具
TFTP (Trivial File Transfer Protocol, 简单文件传输协议)是 TCP/IP 协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务,端口号为69,比传统的 FTP 协议要轻量级很多,适用于小型的嵌入式产品上。
RT-Thread 目前支持的是 TFTP 服务器。
TFTP 工具依赖 lwIP,需要先在 Env 工具 开启 lwIP 的依赖才可见,步骤如下:
-> RT-Thread Components -> Network stack -> light weight TCP/IP stack -> Enable lwIP stack在 NetUtils 菜单栏使能 TFTP 选项:
RT-Thread online packages -> IoT - internet of things -> netutils: Networking utilities for RT-Thread Enable TFTP(Trivial File Transfer Protocol) server