2017-05-28 23:03:03 +00:00
|
|
|
#! /usr/bin/awk -f
|
|
|
|
|
|
2017-06-18 21:32:20 +00:00
|
|
|
BEGIN {
|
2025-03-12 15:34:22 +00:00
|
|
|
maxP = 1050
|
2018-07-21 13:22:42 +00:00
|
|
|
minP = -100
|
2017-06-18 21:32:20 +00:00
|
|
|
}
|
|
|
|
|
|
2017-05-28 23:03:03 +00:00
|
|
|
/^H/{ t=$2 }
|
|
|
|
|
|
|
|
|
|
/^P/ {
|
|
|
|
|
Word1 = strtonum($2)
|
|
|
|
|
Word2 = strtonum($3)
|
|
|
|
|
Word3 = strtonum($4)
|
|
|
|
|
Word4 = strtonum($5)
|
|
|
|
|
D1 = strtonum($6)
|
|
|
|
|
D2 = strtonum($7)
|
|
|
|
|
|
|
|
|
|
if (D2<10) next
|
|
|
|
|
|
|
|
|
|
C1 = rshift(Word1, 1)
|
|
|
|
|
C2 = or(lshift(and(Word3, 0x3f), 6), and(Word4, 0x3f))
|
|
|
|
|
C3 = rshift(Word4, 6)
|
|
|
|
|
C4 = rshift(Word3, 6)
|
|
|
|
|
C5 = or(lshift(and(Word1, 1), 10), rshift(Word2, 6))
|
|
|
|
|
C6 = and(Word2, 0x3f)
|
|
|
|
|
|
|
|
|
|
UT1 = 8*C5+20224
|
|
|
|
|
dT = D2 - UT1
|
|
|
|
|
Temperature = 0.1*(200 + dT*(C6+50)/1024)
|
|
|
|
|
|
|
|
|
|
OFF = C2*4 + ((C4-512)*dT)/4096
|
|
|
|
|
SENS = C1 + (C3*dT)/1024 + 24576
|
|
|
|
|
X = (SENS * (D1-7168))/16384 - OFF
|
|
|
|
|
Pressure = 0.1*(X*10/32 + 2500)
|
|
|
|
|
|
2017-06-18 21:32:20 +00:00
|
|
|
if (Pressure >= minP && Pressure <= maxP) {
|
2025-03-12 15:34:22 +00:00
|
|
|
printf "P%s %u %6.2f %7.2f\n", $1, t, Temperature, Pressure
|
2017-06-18 21:32:20 +00:00
|
|
|
}
|
2017-05-28 23:03:03 +00:00
|
|
|
}
|