更新时间:2024-09-04 02:13:21下载pdf
本文介绍如何使用 MCU 通用协议接入为设备获取天气数据。天气服务是智能设备最重要的功能之一,涂鸦 MCU 标准协议接入可通过 Wi-Fi 模组和 Wi-Fi & 蓝牙双模模组获取到相关的天气数据。
模组连接到云端后,MCU 可通过发送指令启用天气获取功能,开启成功后模组会定时将天气数据下发到 MCU。
天气数据的地区是基于配网手机所在的经纬度。
天气数据功能涉及多个协议指令:
命令字 | 命令说明 |
---|---|
0x20 | 打开获取天气数据功能 |
0x21 | 下发天气数据 |
0x34(子命令 0x03) | 主动获取天气 |
设备完成初始化后,调用该指令开启天气数据功能,模组收到后返回功能开启结果。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x20 |
数据长度 | 2 | N((L+K)+(L+K)…) |
数据 | n |
L: 0x06 K: w.pm25 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:请求参数 w.temp
,w.pm25
,数据区内容为:L:0x06 K:w.temp
,L:0x06 K:w.pm25
。
55 aa 03 20 00 0e 06 77 2e 74 65 6d 70 06 77 2e 70 6d 32 35 80
支持预报的参数在获取时,需要添加上需要预报的数据天数,最多可支持获取 7 天内的数据。
示例:
w.humidity, w.date.1
:获取当天的空气湿度预报数据w.humidity, w.date.7
:获取以当天为开始,7 天内的空气湿度预报数据不支持预报的数据,获取时不可添加上天数内容。
示例:w.pm2.5
当获取的参数是和时间有关的参数时,需要搭配 t.unix
或者 t.local
使用,表示需要获取的参数数据是按照格林时间还是本地时间。
示例:
L: 0x0b K: w.sunRise
L: 0x0b K: w.date.7
L: 0x06 K: t.unix
模组返回的日出时间为格林时间。时间格式:年-月-日 时:分
。
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x20 |
数据长度 | 2 | 0x0002 |
数据 | 2 |
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例: 55 aa 00 20 00 02 01 00 22
在开启天气数据功能且设备已连接到云端后,模组定时下发天气数据。开启获取天气功能后会立即下发一次,后续以 30 分钟的间隔下发。
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x21 |
数据长度 | 2 | N((LKTLV)+(LKTLV)+…) |
数据 | Data |
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例: 以 w.temp: 15
, w.humidity: 23
, w.pm25: 27
, w.conditionNum: 120
为例。
天气服务 | 编码 16 进制 | 返回天气数据 | 编码 16 进制 |
---|---|---|---|
w.temp | 77 2E 74 65 6D 70 | 15 | 00 00 00 0F |
w.humidity | 77 2E 68 75 6D 69 64 69 74 79 | 23 | 00 00 00 17 |
w.pm25 | 77 2E 70 6D 32 35 | 27 | 00 00 00 1B |
w.conditionNum | 77 2E 63 6F 6E 64 69 74 69 6F 6E 4E 75 6D | 120 | 31 32 30 |
55 AA 00 21 00 40 01 06 77 2E 74 65 6D 70 00 04 00 00 00 0F 0A 77 2E 68 75 6D 69 64 69 74 79 00 04 00 00 00 17 06 77 2E 70 6D 32 35 00 04 00 00 00 1B 0E 77 2E 63 6F 6E 64 69 74 69 6F 6E 4E 75 6D 01 03 31 32 30 5B
MCU 返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x21 |
数据长度 | 2 | 0x0000 |
数据 | 0 | 无 |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 00 21 00 00 20
w.temp
和 w.pm25
,返回 w.temp
,返回参数少于请求参数,请仔细检查请求参数名是否正确。在实际应用中,有些产品需求在半个小时主动发送的天气服务基础上,想要拥有主动获取天气服务数据的能力,即用户主动获取天气服务相关数据。
0x21
的下发天气数据的命令。MCU 发送
字段 | 长度 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x03 |
命令字 | 1 | 0x34 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 0x03(子命令) |
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 03 34 00 01 03 3a
模组返回
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55aa |
版本 | 1 | 0x00 |
命令字 | 1 | 0x34 |
数据长度 | 2 | 0x0002 |
数据 | 1 | 0x03(子命令) |
1 | 执行结果:
|
|
校验和 | 1 | 从帧头开始,按字节求和,得出的结果对 256 求余 |
示例:55 aa 00 34 00 02 03 00 38
扩展功能示例基于 MCU SDK 应用展开。
打开 WEATHER_ENABLE
宏定义,开启天气服务功能。
#define WEATHER_ENABLE //打开天气功能
然后根据项目需求,配置需要的天气服务类型数目、设置天气预报的天数。
/******************************************************************************
是否开启天气功能
如需要请开启该宏,并在 protocol.c 文件内 weather_open_return_handle 与 weather_data_user_handle 两个用户处理函数中实现显示等代码
此两函数内 #err 提示,完成函数后请删除该 #err
开启天气功能,串口数据缓存区的大小要开大一些
******************************************************************************/
//#define WEATHER_ENABLE //打开天气功能
#ifdef WEATHER_ENABLE
/* 在 protocol.c 文件中 weather_choose 数组中可调整,然后将打开服务的类型数目写到此宏定义 */
#define WEATHER_CHOOSE_CNT 4 //选择的需要天气服务类型的数目
/* 在打开天气服务时,可以设置此宏定义选择天气预报的天数,1 表示当天天气(不需要预报可设置为 1),最多为 7 天(不可以设置成 0 或大于 7) */
#define WEATHER_FORECAST_DAYS_NUM 1 //设置天气预报的天数
#endif
打开获取天气数据功能函数 mcu_open_weather()
定义在 protocol.c
文件中,作用是 MCU 主动发送打开获取天气数据功能指令,打开天气服务。
应用步骤:
MCU 自行调用 mcu_open_weather()
函数,打开获取天气数据功能。
在串口接收数据处理函数 data_handle()
中,收到模组发来的打开结果后,调用打开天气功能返回用户自处理函数 weather_open_return_handle()
接收判断,并做下一步处理。
/**
* @brief mcu 打开天气服务
* @param Null
* @return Null
*/
void mcu_open_weather(void)
{
int i = 0;
char buffer[13] = {0};
unsigned char weather_len = 0;
unsigned short send_len = 0;
weather_len = sizeof(weather_choose) / sizeof(weather_choose[0]);
for(i=0;i<weather_len;i++) {
buffer[0] = sprintf(buffer+1,"w.%s",weather_choose[i]);
send_len = set_wifi_uart_buffer(send_len, (unsigned char *)buffer, buffer[0]+1);
}
#error "请根据提示,自行完善打开天气服务代码,完成后请删除该行"
/*
//当获取的参数有和时间有关的参数时(例如日出日落),需要搭配 t.unix 或者 t.local 使用,需要获取的参数数据是按照格林时间还是本地时间
buffer[0] = sprintf(buffer+1,"t.unix"); //格林时间 或使用 buffer[0] = sprintf(buffer+1,"t.local"); //本地时间
send_len = set_wifi_uart_buffer(send_len, (unsigned char *)buffer, buffer[0]+1);
*/
buffer[0] = sprintf(buffer+1,"w.date.%d",WEATHER_FORECAST_DAYS_NUM);
send_len = set_wifi_uart_buffer(send_len, (unsigned char *)buffer, buffer[0]+1);
wifi_uart_write_frame(WEATHER_OPEN_CMD, MCU_TX_VER, send_len);
}
void data_handle(unsigned short offset)
{
......
case WEATHER_OPEN_CMD: //打开天气服务返回
weather_open_return_handle(wifi_data_process_buf[offset + DATA_START], wifi_data_process_buf[offset + DATA_START + 1]);
break;
......
}
weather_open_return_handle
在 protocol.c
中实现,您需实现该函数。
/**
* @brief 打开天气功能返回用户自处理函数
* @param[in] {res} 打开天气功能返回结果
* @ref 0:失败
* @ref 1:成功
* @param[in] {err} 错误码
* @return Null
* @note MCU 需要自行实现该功能
*/
void weather_open_return_handle(unsigned char res, unsigned char err)
{
#error "请自行完成打开天气功能返回数据处理代码,完成后请删除该行"
unsigned char err_num = 0;
if(res == 1) {
//打开天气返回成功
}else if(res == 0) {
//打开天气返回失败
//获取错误码
err_num = err;
}
}
如果已开启 Wi-Fi 模组自处理模式(WIFI_CONTROL_SELF_MODE
宏),模组在 Wi-Fi 连接成功后会主动打开天气服务功能。相关功能函数在 system.c
中实现。
case WIFI_STATE_CMD: //Wi-Fi 工作状态
wifi_work_state = wifi_data_process_buf[offset + DATA_START];
wifi_uart_write_frame(WIFI_STATE_CMD, MCU_TX_VER, 0);
#ifdef WEATHER_ENABLE
if(wifi_work_state == WIFI_CONNECTED && isWoSend == 0) { //当 Wi-Fi 连接成功,打开天气数据且仅一次
mcu_open_weather();
isWoSend = 1;
}
#endif
break;
调试助手示意图如下:
天气数据解析函数 weather_data_raw_handle()
定义在 system.c
文件中,作用是接收模组发来天气数据。
应用步骤:
当模组有天气数据下发时,串口接收数据处理函数 data_handle()
中会收到模组发来的天气数据。
data_handle()
将调用天气数据解析函数 weather_data_raw_handle()
。
void data_handle(unsigned short offset)
{
......
case WEATHER_DATA_CMD: //天气数据下发
total_len = (wifi_data_process_buf[offset + LENGTH_HIGH] << 8) | wifi_data_process_buf[offset + LENGTH_LOW];
weather_data_raw_handle((unsigned char *)wifi_data_process_buf + offset + DATA_START, total_len);
break;
......
}
weather_data_raw_handle()
函数在 system.c
中实现,并调用weather_data_user_handle()
函数将对应的天气数据传给用户处理。
/**
* @brief 天气数据解析
* @param[in] {p_data} 接收数据指针
* @param[in] {data_len} 接收数据长度
* @return Null
*/
static void weather_data_raw_handle(const unsigned char p_data[], unsigned short data_len)
{
int i = 1;
int can_len = 0;
char can[15] = {0};
char day = 0;
int type1 = 0;
unsigned char value_string[100] = {0};
int val_cnt = 0;
int val_len = 0;
if(p_data[0] != 1 | | data_len < 1) {
//接收失败
}else {
if(data_len < 4) {
//数据为空
}
while (i < data_len) {
can_len = p_data[i];
my_memset(can, '\0', 15);
my_memcpy(can, p_data + i + 1, can_len - 2);
day = p_data[i + can_len] - '0';
type1 = p_data[i + 1 + can_len];
if(type1 != 0 && type1 != 1) {
return;
}
my_memset(value_string, '\0', 100);
val_cnt = i + 1 + can_len + 1;
val_len = p_data[val_cnt];
if (type1 == 0) { //int32
weather_data_user_handle(can+2, type1, p_data+val_cnt+1, day);
}
else if(type1 == 1) { //string
my_memcpy(value_string, p_data + val_cnt + 1, val_len);
weather_data_user_handle(can+2, type1, value_string, day);
}
i += 1 + can_len + 1 + 1 + val_len;
}
wifi_uart_write_frame(WEATHER_DATA_CMD, 0, 0);
}
}
天气数据处理函数 weather_data_user_handle()
为天气数据用户处理,您需实现该函数中的数据处理。
/**
* @brief 天气数据用户自处理函数
* @param[in] {name} 参数名
* @param[in] {type} 参数类型
* @ref 0:int 型
* @ref 1:string 型
* @param[in] {data} 参数值的地址
* @param[in] {day} 哪一天的天气,0:表示当天,取值范围:0~6
* @ref 0:今天
* @ref 1:明天
* @return Null
* @note MCU 需要自行实现该功能
*/
void weather_data_user_handle(char *name, unsigned char type, const unsigned char *data, char day)
{
#error "这里仅给出示例,请自行完善天气数据处理代码,完成后请删除该行"
int value_int;
char value_string[50];//由于有的参数内容较多,此处默认为 50。您可以根据定义的参数,可以适当减少该值
my_memset(value_string, '\0', 50);
//首先获取数据类型
if(type == 0) { //参数是 INT 型
value_int = data[0] << 24 | data[1] << 16 | data[2] << 8 | data[3];
}else if(type == 1) {
my_strcpy(value_string, data);
}
//注意要根据所选参数类型,获取参数值
if(my_strcmp(name, "temp") == 0) {
printf("day:%d temp value is:%d\r\n", day, value_int); //int 型
}else if(my_strcmp(name, "humidity") == 0) {
printf("day:%d humidity value is:%d\r\n", day, value_int); //int 型
}else if(my_strcmp(name, "pm25") == 0) {
printf("day:%d pm25 value is:%d\r\n", day, value_int); //int 型
}else if(my_strcmp(name, "condition") == 0) {
printf("day:%d condition value is:%s\r\n", day, value_string); //string 型
}
}
调试助手示意图如下:
主动获取天气函数 request_weather_serve()
定义在 mcu_api.c
文件中,作用是 MCU 发送主动获取天气功能指令,主动请求天气服务数据。
应用步骤:
打开 MODULE_EXPANDING_SERVICE_ENABLE
宏定义,开启模组拓展服务功能。
#define MODULE_EXPANDING_SERVICE_ENABLE //开启模组拓展服务功能
MCU 主动调用 request_weather_serve()
函数,发送主动获取天气功能指令请求天气服务数据。
/**
* @brief 主动请求天气服务数据
* @param Null
* @return Null
* @note MCU 需要自行调用该功能
*/
void request_weather_serve(void)
{
unsigned short send_len = 0;
send_len = set_wifi_uart_byte(send_len, 0x03);
wifi_uart_write_frame(MODULE_EXTEND_FUN_CMD, MCU_TX_VER, send_len);
}
串口接收数据处理函数 data_handle()
中,会收到模组发来的回复结果后,并调用模组拓展功能函数 open_module_time_serve_result()
接收判断,并做下一步处理。
void data_handle(unsigned short offset)
{
......
#ifdef MODULE_EXPANDING_SERVICE_ENABLE
case MODULE_EXTEND_FUN_CMD: //模组拓展服务
total_len = (wifi_data_process_buf[offset + LENGTH_HIGH] << 8) | wifi_data_process_buf[offset + LENGTH_LOW];
open_module_time_serve_result((unsigned char *)(wifi_data_process_buf + offset + DATA_START), total_len);
break;
#endif
......
}
open_module_time_serve_result()
函数在 protocol.c
中实现,您需实现该函数。
/**
* @brief 打开模块时间服务通知结果
* @param[in] {value} 数据缓冲区
* @param[in] {length} 数据长度
* @return Null
* @note MCU 需要自行实现该功能
*/
void open_module_time_serve_result(const unsigned char value[], unsigned short length)
{
......
case 0x03: { //子命令,主动请求天气服务数据
if(0x02 != length) {
//数据长度错误
return;
}
if(value[1] == 0) {
//成功
}else {
//失败
}
}
break;
......
}
调试助手示意图如下:
天气数据参数 | 含义 | 中国大陆 | 其他国家或地区 | 是否支持预报 | 长度 | 十六进制 |
---|---|---|---|---|---|---|
w.temp | 大气温度,单位:摄氏度 ℃ | 支持 | 支持 | 支持 7 天内数据,中国大陆地区不支持 | 6 | 77 2e 74 65 6d 70 |
w.humidity | 空气湿度 | 支持 | 支持 | 支持 7 天内数据 | 10 | 77 2e 68 75 6d 69 64 69 74 79 |
w.conditionNum | 天气概况数字编码 | 支持 | 支持 | 支持 7 天内数据 | 14 | 77 2e 63 6f 6e 64 69 74 69 6f 6e 4e 75 6d |
w.pressure | 大气气压,单位:毫巴 mbar | 支持 | 支持 | 支持 7 天内数据,中国大陆地区不支持 | 10 | 77 2e 70 72 65 73 73 75 72 65 |
w.realFeel | 体感温度 | 支持 | 支持 | 不支持 7 天内数据 | 10 | 77 2e 72 65 61 6c 46 65 65 6c |
w.uvi | 紫外线指数 | 支持 | 支持 | 支持 7 天内数据 | 5 | 77 2e 75 76 69 |
w.sunrise | 日出 | 支持 | 支持 | 支持 7 天内数据 | 9 | 77 2e 73 75 6e 72 69 73 65 |
w.sunset | 日落 | 支持 | 支持 | 支持 7 天内数据 | 8 | 77 2e 73 75 6e 73 65 74 |
t.unix | 格林时间,搭配日出(w.sunrise )和日落(w.sunset )使用 |
- | - | - | 6 | 74 2e 75 6e 69 78 |
t.local | 本地时间,搭配日出(w.sunrise )和日落(w.sunset )使用 |
- | - | - | 7 | 74 2e 6c 6f 63 61 6c |
w.windSpeed | 风速,单位:米/秒(m/s) | 支持 | 支持 | 支持 7 天内数据 | 11 | 77 2e 77 69 6e 64 53 70 65 65 64 |
w.windDir | 风向 | 支持 | 支持 | 支持 7 天内数据 | 9 | 77 2e 77 69 6e 64 44 69 72 |
w.windLevel | 风级 | 仅中国大陆地区支持 | 不支持 | 支持 7 天内数据 | 11 | 77 2e 77 69 6e 64 4c 65 76 65 6c |
w.aqi | 空气质量指数,采用美国 EPA 标准:0 ~ 500 | 支持 | 支持 | 仅有当天数据 | 5 | 77 2e 61 71 69 |
w.rank/w.quality | 详细 AQI 实况及全国排名 | 仅中国大陆地区支持 | 不支持 | 仅有当天数据 | 6 | 77 2e 72 61 6e 6b / 77 2e 71 75 61 6c 69 74 79 |
w.pm10 | 可吸入颗粒物 PM10,单位:µg/m³ | 支持 | 支持 | 仅有当天数据 | 6 | 77 2e 70 6d 31 30 |
w.pm25 | 细颗粒物 PM2.5,单位:µg/m³ | 支持 | 支持 | 仅有当天数据 | 6 | 77 2e 70 6d 32 35 |
w.o3 | 臭氧浓度,单位:µg/m³ | 支持 | 支持 | 仅有当天数据 | 4 | 77 2e 6f 33 |
w.no2 | 二氧化氮浓度,单位:µg/m³ | 支持 | 支持 | 仅有当天数据 | 5 | 77 2e 6e 6f 32 |
w.co | 一氧化碳浓度,单位:µg/m³ | 支持 | 支持 | 仅有当天数据 | 4 | 77 2e 63 6f |
w.so2 | 二氧化硫浓度,单位:µg/m³ | 支持 | 支持 | 仅有当天数据 | 5 | 77 2e 73 6f 32 |
w.thigh | 最高温度,单位:摄氏度 ℃ | 支持 | 支持 | 仅有预报数据 | 7 | 77 2e 74 68 69 67 68 |
w.tlow | 最低温度,单位:摄氏度 ℃ | 支持 | 支持 | 仅有预报数据 | 6 | 77 2e 74 6c 6f 77 |
w.date.n | 需要预报的天数,用 n 来表示天数,要求 1 ≤ n ≤ 7 |
支持 | 支持 | - | 8 | 77 2e 64 61 74 65 2e 6e |
w.currdate | 实时天气获取 | 支持 | 支持 | - | 10 | 77 2e 63 75 72 72 64 61 74 65 |
WindDir
风向字段为风向简码。详细编码表请参考 附录五。
w.conditionNum
表示天气情况编码。详细编码表请参考 附录四。
大气气压单位说明:
1 毫巴(mbar)= 1 百帕斯卡(hPa),即 1mbar = 100pa = 1hpa。
例如,中国大陆地区的墨迹天气数据单位是百帕斯卡(hPa)。
是否支持预报:携带 w.date.n
字段时,返回预报数据。
是否支持实时:当携带 w.date.n
字段访问时,若需要实时天气数据,请携带 w.currdate
字段。具体实时数据的访问方式,请参考 天气预报服务功能示例。
标识 | 描述 | 类型 | 长度 | 十六进制 |
---|---|---|---|---|
c.area | 区县或城市名称 | 字符串 | 6 | 63 2e 61 72 65 61 |
c.city | 城市名称 | 字符串 | 6 | 63 2e 63 69 74 79 |
c.province | 省 | 字符串 | 10 | 63 2e 70 72 6f 76 69 6e 63 65 |
当天气服务访问时返回的数据仅有城市服务字段,且内容为空时,则说明设备无经纬度信息,无法获取天气数据。可打开手机应用的获取定位功能后,重新进行设备配网。
标识 | 描述 | 类型 | 是否支持实时 | 是否支持预报 |
---|---|---|---|---|
w.temp | 温度 | 整数 | 是 | 仅中国大陆地区不支持 |
w.humidity | 湿度 | 整数 | 是 | 是 |
w.conditionNum | 天气概况数字编码 | 字符串 | 是 | 是 |
w.pressure | 气压 | 整数 | 是 | 仅中国大陆地区不支持 |
w.realFeel | 温度实感 | 整数 | 是 | 否 |
w.uvi | 紫外线指数 | 整数 | 是 | 是 |
w.windDir | 风向 | 字符串 | 是 | 是 |
w.windLevel | 风等级 | 整数 | 仅中国大陆地区支持 | 否 |
w.windSpeed | 风速 | 字符串,数据格式为 1.0;0.5 | 是 | 是 |
w.sunrise | 日出时间 | 字符串,数据格式为 2017-04-24 05:24 | 是 | 是 |
w.sunset | 日落时间 | 字符串,数据格式为 2017-04-24 18:32 | 是 | 是 |
w.aqi | 空气质量指数 | 整数 | 是 | 否 |
w.pm25 | PM 2.5 | 整数 | 是 | 否 |
w.so2 | 二氧化硫浓度 | 整数 | 是 | 否 |
w.rank/w.quality | 空气评分 | 字符串,数据格式为 447/609 | 仅中国大陆地区支持 | 否 |
w.pm10 | PM 10 | 整数 | 是 | 否 |
w.o3 | 臭氧(O3)浓度 | 整数 | 是 | 否 |
w.no2 | 二氧化氮(NO2)浓度 | 整数 | 是 | 否 |
w.co | 一氧化碳(CO)浓度 | 整数 | 是 | 否 |
w.qualityLevel | 空气质量评分等级 | 整形 | 是 | 否 |
w.thigh | 最高温度 | 整形 | 否 | 是 |
w.tlow | 最低温度 | 整形 | 否 | 是 |
1.0;0.9
。w.date.n
字段访问时,若需要实时天气数据请携带 w.currdate
字段。具体实时数据的访问方式,请参考 天气预报服务功能示例。w.date.n
字段时,返回预报数据。编码表示(ASCII 码) w.conditionNum |
十六进制 | 天气状况 |
---|---|---|
120 | 31 32 30 | 晴 |
101 | 31 30 31 | 大雨 |
102 | 31 30 32 | 雷暴 |
103 | 31 30 33 | 沙尘暴 |
104 | 31 30 34 | 小雪 |
105 | 31 30 35 | 雪 |
106 | 31 30 36 | 冻雾 |
107 | 31 30 37 | 暴雨 |
108 | 31 30 38 | 局部阵雨 |
109 | 31 30 39 | 浮尘 |
110 | 31 31 30 | 雷电 |
111 | 31 31 31 | 小阵雨 |
112 | 31 31 32 | 雨 |
113 | 31 31 33 | 雨夹雪 |
114 | 31 31 34 | 尘卷风 |
115 | 31 31 35 | 冰粒 |
116 | 31 31 36 | 强沙尘暴 |
117 | 31 31 37 | 扬沙 |
118 | 31 31 38 | 小到中雨 |
119 | 31 31 39 | 大部晴朗 |
121 | 31 32 31 | 雾 |
122 | 31 32 32 | 阵雨 |
123 | 31 32 33 | 强阵雨 |
124 | 31 32 34 | 大雪 |
125 | 31 32 35 | 特大暴雨 |
126 | 31 32 36 | 暴雪 |
127 | 31 32 37 | 冰雹 |
128 | 31 32 38 | 小到中雪 |
129 | 31 32 39 | 少云 |
130 | 31 33 30 | 小阵雪 |
131 | 31 33 31 | 中雪 |
132 | 31 33 32 | 阴 |
133 | 31 33 33 | 冰针 |
134 | 31 33 34 | 大暴雨 |
136 | 31 33 36 | 雷阵雨伴有冰雹 |
137 | 31 33 37 | 冻雨 |
138 | 31 33 38 | 阵雪 |
139 | 31 33 39 | 小雨 |
140 | 31 34 30 | 霾 |
141 | 31 34 31 | 中雨 |
142 | 31 34 32 | 多云 |
143 | 31 34 33 | 雷阵雨 |
144 | 31 34 34 | 中到大雨 |
145 | 31 34 35 | 大到暴雨 |
146 | 31 34 36 | 晴朗 |
风向简码(字符串) | 十六进制 | 描述 |
---|---|---|
N | 4e | 北 |
NNE | 4e 4e 45 | 东北偏北 |
NE | 4e 45 | 东北 |
ENE | 45 4e 45 | 东北偏东 |
E | 45 | 东 |
ESE | 45 53 45 | 东南偏东 |
SE | 53 45 | 东南 |
SSE | 53 53 45 | 东南偏南 |
S | 53 | 南 |
SSW | 53 53 57 | 西南偏南 |
SW | 53 57 | 西南 |
WSW | 57 53 57 | 西南偏西 |
W | 57 | 西 |
WNW | 57 4e 57 | 西北偏西 |
NW | 4e 57 | 西北 |
NNW | 4e 4e 57 | 西北偏北 |
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈