feat: add a new 485 type weather station
This commit is contained in:
parent
d4bd14a91f
commit
53cea255ee
@ -251,7 +251,7 @@ func ParseWH65LPData(data []byte) (*WH65LPData, error) {
|
|||||||
|
|
||||||
// 2. 解析设备ID (第2字节 + 第22-23字节)
|
// 2. 解析设备ID (第2字节 + 第22-23字节)
|
||||||
idLSB := data[1]
|
idLSB := data[1]
|
||||||
idMSB := uint32(data[22])<<8 | uint32(data[21])
|
idMSB := uint32(data[22]) | uint32(data[21])<<8
|
||||||
wd.StationID = fmt.Sprintf("%06X", (idMSB<<8)|uint32(idLSB))
|
wd.StationID = fmt.Sprintf("%06X", (idMSB<<8)|uint32(idLSB))
|
||||||
|
|
||||||
// 3. 解析风向 (bits 16-24)
|
// 3. 解析风向 (bits 16-24)
|
||||||
@ -273,7 +273,7 @@ func ParseWH65LPData(data []byte) (*WH65LPData, error) {
|
|||||||
windSpeedRaw := uint16(data[6])
|
windSpeedRaw := uint16(data[6])
|
||||||
if !wd.WSPFlag {
|
if !wd.WSPFlag {
|
||||||
// 10位风速
|
// 10位风速
|
||||||
windSpeedRaw |= uint16(data[3]>>6) << 8
|
windSpeedRaw |= uint16((data[3]>>6)&0x03) << 8
|
||||||
}
|
}
|
||||||
wd.WindSpeed = float64(windSpeedRaw) / 8.0 * 0.51
|
wd.WindSpeed = float64(windSpeedRaw) / 8.0 * 0.51
|
||||||
|
|
||||||
@ -297,6 +297,11 @@ func ParseWH65LPData(data []byte) (*WH65LPData, error) {
|
|||||||
pressureRaw &= 0x1FFFF // 只取17位
|
pressureRaw &= 0x1FFFF // 只取17位
|
||||||
wd.Pressure = float64(pressureRaw) / 100.0
|
wd.Pressure = float64(pressureRaw) / 100.0
|
||||||
|
|
||||||
|
// 验证校验和
|
||||||
|
if !IsWH65LPData(data) {
|
||||||
|
return nil, fmt.Errorf("数据校验失败")
|
||||||
|
}
|
||||||
|
|
||||||
return wd, nil
|
return wd, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user