And the answers to my questions are ...... ? Can't help if i don't know.
/Ingvar
Printable View
And the answers to my questions are ...... ? Can't help if i don't know.
/Ingvar
Oh- yes, sorry.
We are at about 300ft. Should be reading about 100meters or so. The GPS alt data 'wanders' so tenths of meters is a little silly, yes, but that is what is output.
The full range would want to support over 100,000ft in altitude.
TOm
Ok, you're building a spaceship, 100000 ft is high. I'd love to see this baby fly :)
First i think you need to look over your inputdata, methinks it's not properly extracted. I can't see any correlation between your data and 100(ish) metres, unless ofcourse it's already in tenths of ft(000D0Dhex=3341dec 3341*0,3048=1018.34 which would be close to your 100m).
Are you getting the data from a NMEA sentence($GPGGA) or is it a binary protocol? If it's NMEA you need to know that the data is separated by "," characters, they're not at a fixed position in the string. Atleast not towards the end of the string. This makes it difficult to extract and convert the data.
When you have your data properly extracted, the conversion would look something like this(pseudocode) ....
..... you could increase the resolution when "alt[2]" = 0 ......Code:R0.HIGHBYTE = 0 'Prepare system variables for DIV32
R0.LOWBYTE = alt[2]
R2.HIGHBYTE = alt[1]
R2.LOWBYTE = alt[0]
AltMetres = DIV32 10
Alt10Ft = AltMetres ** 21501 '21501/65536=0.32808
SEROUT blah..,blah..,["Altitude :",dec Alt10Ft, "0 ft",13,10]
.... you could ofcourse combine them .....Code:AltMetres.HIGHBYTE = alt[1]
AltMetres.LOWBYTE = alt[0]
AltFt = AltMetres ** 21501 '21501/65536=0.32808
SEROUT blah..,blah..,["Altitude :",dec AltFt, " ft",13,10]
/IngvarCode:IF alt[2] = 0 THEN
AltMetres.HIGHBYTE = alt[1]
AltMetres.LOWBYTE = alt[0]
AltFt = AltMetres ** 21501 '21501/65536=0.32808
SEROUT blah..,blah..,["Altitude :",dec AltFt, " ft",13,10]
ELSE
R0.HIGHBYTE = 0 'Prepare system variables for DIV32
R0.LOWBYTE = alt[2]
R2.HIGHBYTE = alt[1]
R2.LOWBYTE = alt[0]
AltMetres = DIV32 10
Alt10Ft = AltMetres ** 21501 '21501/65536=0.32808
SEROUT blah..,blah..,["Altitude :",dec Alt10Ft, "0 ft",13,10]
ENDIF
Thanks much!!
Apparently it is important for the system to report over 100k...
The data is binary, not NMEA. The 3 bytes are the altitude, and it is in tenths of a meter. (binary value in tenths of meters)
My challenge is that I have THREE bytes.. each with values that together equal the value I need.
Value is sent in these 3 bytes as LSB first, then NMSB, then MSB.
Does that help?
TG
The code i posted handles your THREE bytes, alt[0] to alt[2], when needed. Alt[0] = LSB, alt[2] = MSB. At high resolution(1ft) it will go to 21500ft, low res(10ft) will go to 215000ft.