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字节)
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user