feat: add a new 485 type weather station

This commit is contained in:
yarnom 2025-08-01 21:30:41 +08:00
parent d4bd14a91f
commit 53cea255ee

View File

@ -251,7 +251,7 @@ func ParseWH65LPData(data []byte) (*WH65LPData, error) {
// 2. 解析设备ID (第2字节 + 第22-23字节)
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))
// 3. 解析风向 (bits 16-24)
@ -273,7 +273,7 @@ func ParseWH65LPData(data []byte) (*WH65LPData, error) {
windSpeedRaw := uint16(data[6])
if !wd.WSPFlag {
// 10位风速
windSpeedRaw |= uint16(data[3]>>6) << 8
windSpeedRaw |= uint16((data[3]>>6)&0x03) << 8
}
wd.WindSpeed = float64(windSpeedRaw) / 8.0 * 0.51
@ -297,6 +297,11 @@ func ParseWH65LPData(data []byte) (*WH65LPData, error) {
pressureRaw &= 0x1FFFF // 只取17位
wd.Pressure = float64(pressureRaw) / 100.0
// 验证校验和
if !IsWH65LPData(data) {
return nil, fmt.Errorf("数据校验失败")
}
return wd, nil
}