Hi All
I have a FOIF GPS Base and Rover. I have set up the Base over a known point and sent the known coordinates to the Base. The Channel, Radio Frequency, Correction Type, etc. are all the same on the Base and the Rover. I then send a command to start the Base and transmit corrections. The problem that I have is that the GGA NMEA string does not give me the Age, which means that the Rover is not getting corrections from the Base.
Here I switch to the Base, configure the base and start the Base:
Next I do the same for the Rover:
Here I check if the Base is transmitting and it is:
Here I parse the NMEA Strings:
Everything seems to work fine except that I am not getting a "Fix" and the "Age" stays on "0".
Any push will be appreciated.
Thanks
Michael Papenhagen
I have a FOIF GPS Base and Rover. I have set up the Base over a known point and sent the known coordinates to the Base. The Channel, Radio Frequency, Correction Type, etc. are all the same on the Base and the Rover. I then send a command to start the Base and transmit corrections. The problem that I have is that the GGA NMEA string does not give me the Age, which means that the Rover is not getting corrections from the Base.
Here I switch to the Base, configure the base and start the Base:
B4X:
Sub SwitchToBase As ResumableSub
CGlobals.BT.SendDataToDevice("SET,DEVICE.SYS_MODE.BASE" & CRLF)
Sleep(250)
CGlobals.BT.SendDataToDevice("UNLOGALL" & CRLF)
Sleep(250)
CGlobals.BT.SendDataToDevice("GETALL" & CRLF)
Sleep(250)
CGlobals.BT.SendDataToDevice("SET,DEVICE.CUR_LANGUAGE,ENGLISH" & CRLF)
Sleep(250)
Return 1
End Sub
Sub SetBasePosition As ResumableSub
Dim tmpStr As String = Engine.Lon & "|" & Engine.Lat & "|" & CGlobals.GpsZ0
CGlobals.BT.SendDataToDevice("SET,GPS.BASE.POSITION,REPEAT," & tmpStr)
Sleep(250)
Return 1
End Sub
Sub ConfigBase As ResumableSub
ProgressDialogShow2("Configuring Base...", False)
' Base system configuration
CGlobals.BT.SendDataToDevice("SET,DEVICE.SYS_MODE,BASE" & CRLF)
Sleep(250)
' GPS settings
CGlobals.BT.SendDataToDevice("SET,GPS.ELE_MASK," & CGlobals.DF(77) & CRLF)
Sleep(250)
CGlobals.BT.SendDataToDevice("SET,GPS.BASE.SITE_ID," & CGlobals.DF(45) & CRLF)
Sleep(250)
' Radio settings
CGlobals.BT.SendDataToDevice("SET,RADIO.FREQUENCY," & CGlobals.BaseRQ & CRLF)
Sleep(250)
CGlobals.BT.SendDataToDevice("SET,RADIO.CHANNEL," & CGlobals.BaseRC & CRLF)
Sleep(250)
CGlobals.BT.SendDataToDevice("SET,RADIO.POWER," & CGlobals.BasePM & CRLF)
Sleep(250)
' RTK settings
CGlobals.BT.SendDataToDevice("SET,GPS.BASE.DIFF_TYPE," & CGlobals.BaseC & CRLF)
Sleep(250)
CGlobals.BT.SendDataToDevice("SET,DEVICE.CUR_DATALINK" & CGlobals.BaseCT & CRLF)
Sleep(250)
CGlobals.BT.SendDataToDevice("SET,DEVICE.RTK.RECORD_RAW,NO" & CRLF)
Sleep(250)
' Device settings
CGlobals.BT.SendDataToDevice("SET,DEVICE.CUR_LANGUAGE,ENGLISH" & CRLF)
Sleep(250)
' Enable GNSS systems
CGlobals.BT.SendDataToDevice("SET,GPS.GPS,ENABLE" & CRLF)
Sleep(250)
CGlobals.BT.SendDataToDevice("SET,GPS.BEIDOU,ENABLE" & CRLF)
Sleep(250)
CGlobals.BT.SendDataToDevice("SET,GPS.GLONASS,ENABLE" & CRLF)
Sleep(250)
CGlobals.BT.SendDataToDevice("SET,GPS.GALILEO,ENABLE" & CRLF)
Sleep(250)
ProgressDialogHide
Return 1
End Sub
Next I do the same for the Rover:
B4X:
Sub ConfigRover As ResumableSub
ProgressDialogShow2("Configuring Rover...",False)
CGlobals.BT.SendDataToDevice ("SET,DEVICE.SYS_MODE,ROVER" & CRLF)
Sleep(250)
CGlobals.BT.SendDataToDevice("SET,DEVICE.RTK.MODE,ROVER" & CRLF)
Sleep(250)
CGlobals.BT.SendDataToDevice ("SET,GPS.ELE_MASK," & CGlobals.DF(77) & CRLF) 'Elevation Mask
Sleep(250)
CGlobals.BT.SendDataToDevice ("SET,RADIO.FREQUENCY," & CGlobals.RoverRQ & CRLF) 'Frequency
Sleep(250)
CGlobals.BT.SendDataToDevice ("SET,RADIO.CHANNEL," & CGlobals.RoverRC & CRLF) 'Channel
Sleep(250)
CGlobals.BT.SendDataToDevice ("SET,RADIO.POWER," & CGlobals.RoverPM & CRLF) 'Radio Power
Sleep(250)
CGlobals.BT.SendDataToDevice ("SET,GPS.BASE.DIFF_TYPE," & CGlobals.RoverC & CRLF)
Sleep(250)
CGlobals.BT.SendDataToDevice ("SET,DEVICE.CUR_DATALINK" & CGlobals.RoverCT & CRLF) 'Data Link
Sleep(250)
CGlobals.BT.SendDataToDevice ("SET,DEVICE.RTK.RECORD_RAW,NO" & CRLF)
Sleep(250)
CGlobals.BT.SendDataToDevice ("SET,DEVICE.CUR_LANGUAGE,ENGLISH" & CRLF)
Sleep(250)
' Enable GNSS systems
CGlobals.BT.SendDataToDevice("SET,GPS.GPS,ENABLE" & CRLF)
Sleep(250)
CGlobals.BT.SendDataToDevice("SET,GPS.BEIDOU,ENABLE" & CRLF)
Sleep(250)
CGlobals.BT.SendDataToDevice("SET,GPS.GLONASS,ENABLE" & CRLF)
Sleep(250)
CGlobals.BT.SendDataToDevice("SET,GPS.GALILEO,ENABLE" & CRLF)
Sleep(250)
ProgressDialogHide
' CGlobals.BT.SendDataToDevice("GET,DEVICE.RTK.STATUS" & CRLF)
' Sleep(250)
' CGlobals.BT.SendDataToDevice("GET,DEVICE.RTK.STATUS" & CRLF)
' Sleep(250)
'
' Log(CGlobals.BT.ReadData)
Return 1
End Sub
Sub SwitchToRover As ResumableSub
CGlobals.BT.SendDataToDevice("UNLOGALL" & CRLF)
Sleep(250)
CGlobals.BT.SendDataToDevice("SET,DEVICE.CUR_LANGUAGE,ENGLISH" & CRLF)
Sleep(250)
' CGlobals.BT.SendDataToDevice("SET,DEVICE.STOPBASE" & CRLF)
' Sleep(250)
CGlobals.BT.SendDataToDevice("SET,GPS.BASE.AUTO_BASE,NO" & CRLF)
Sleep(250)
CGlobals.BT.SendDataToDevice("SET,DEVICE.RECORD.PDOP_THRESHOLD,99.0" & CRLF)
Sleep(250)
CGlobals.BT.SendDataToDevice("SET,GPS.BASE.PDOP_THRESHOLD,99.0" & CRLF)
Sleep(250)
CGlobals.BT.SendDataToDevice("SET,NETWORK.UPLOADGGA,0" & CRLF)
Sleep(250)
CGlobals.BT.SendDataToDevice("SET,NETWORK.RESET" & CRLF)
Sleep(250)
CGlobals.BT.SendDataToDevice("SET,DEVICE.SYS_MODE,ROVER" & CRLF)
Sleep(250)
Return 1
End Sub
Here I check if the Base is transmitting and it is:
B4X:
Sub MonitorBaseTransmission
' CGlobals.BT.SendDataToDevice("UNLOGALL" & CRLF)
' Sleep(250)
' Get Base Height
CGlobals.BT.SendDataToDevice("GET,DEVICE.ANT_HEIGHT" & CRLF)
Sleep(250)
Dim BaseHgt As String = CGlobals.BT.ReadData
If BaseHgt.Contains("DEVICE.ANT_HEIGHT") Then
Dim Parts() As String = Regex.Split(",", BaseHgt)
Try
' Find the part that contains "F" (feet marker)
Dim heightPart As String = ""
For Each part As String In Parts
If part.Contains("F") Then
heightPart = part
Exit
End If
Next
If heightPart <> "" Then
' Extract numeric value before "F"
Dim value As String = heightPart.Substring2(0, heightPart.IndexOf("F"))
' Remove any trailing asterisk if present
If value.Contains("*") Then
value = value.Substring2(0, value.IndexOf("*"))
End If
If IsNumber(value) Then
Label29.Text = NumberFormat2(value/1000, 1, 3, 3, False)
Else
Log("Invalid height value: " & heightPart)
End If
Else
Label29.Text = "0.000"
End If
Catch
Label29.Text = "0.000"
End Try
End If
' For Foif A60, we can also check radio status
CGlobals.BT.SendDataToDevice("GET,RADIO.STATUS" & CRLF)
Sleep(250)
Dim RadioStatus As String = CGlobals.BT.ReadData
If RadioStatus.Contains("0300") Then
Label32.Text="OK"
Else If RadioStatus.Contains("0301") Then
Label32.Text="Unsupported"
Else If RadioStatus.Contains("0302") Then
Label32.Text="Initialize Fail"
Else If RadioStatus.Contains("0303") Then
Label32.Text="Not Ready"
Else If RadioStatus.Contains("0304") Then
Label32.Text="Awaiting Command"
Else If RadioStatus.Contains("0309") Then
Label32.Text="Error Transmitting"
Else If RadioStatus.Contains("0311") Then
Label32.Text="Freq Out Of Range"
End If
'Get RTK Status
CGlobals.BT.SendDataToDevice("GET,DEVICE.RTK.STATUS" & CRLF)
Sleep(250)
Dim RTKStatus As String = CGlobals.BT.ReadData
If RTKStatus.Contains("0601") Then
Label23.Text="Pending"
Else If RTKStatus.Contains("0602") Then
Label23.Text="Transmitting"
Else If RTKStatus.Contains("0603") Then
Label23.Text="Stopped"
Engine.Lat=CGlobals.DF(47)
Engine.Lon=CGlobals.DF(48)
CGlobals.GpsZ0=CGlobals.DF(49)
Select Case CGlobals.DF(31)
Case 1
'Leica
Case 2
'Emlid
' Wait For (Emlid.StartBase) Complete (i12 As Int)
Case 3,4,5,10
'Foif, Rinonav,E-Survey,StoneX
Wait For (Foif.StartBase) Complete (i12 As Int)
Sleep(250)
Case 6
'Tersus
Case 7
'Geomax
Case 8
'Comnav
Case 9
'CHC
End Select
End If
'Link Status
CGlobals.BT.SendDataToDevice("GET,DEVICE.CUR_DATALINK" & CRLF)
Sleep(250)
Dim LinkStatus As String = CGlobals.BT.ReadData
If LinkStatus.Contains("NETWORK") Then
Label26.Text="Network"
Else If LinkStatus.Contains("UHF") Then
Label26.Text="UHF"
Else If LinkStatus.Contains("EXT") Then
Label26.Text="External"
Else If LinkStatus.Contains("BLUE") Then
Label26.Text="Bluetooth"
Else If LinkStatus.Contains("DUAL") Then
Label26.Text="Dual"
Else If LinkStatus.Contains("NO_DATALINK") Then
Label26.Text="No Datalink"
End If
'Battery Status
CGlobals.BT.SendDataToDevice("GET,DEVICE.POWER_LEVEL" & CRLF)
Sleep(250)
Dim BatteryStatus As String = CGlobals.BT.ReadData
If BatteryStatus.Contains("DEVICE.POWER_LEVEL") Then
Dim Parts() As String = Regex.Split(",", BatteryStatus)
Try
' Get the value before the asterisk
Dim BatteryPart As String = Parts(4)
If BatteryPart.Contains("*") Then
BatteryPart = BatteryPart.SubString2(0, BatteryPart.IndexOf("|"))
End If
If IsNumber(BatteryPart)=True Then
Dim batteryValue As Int = BatteryPart
If batteryValue >= 5 And batteryValue <= 100 Then
Label28.Text = batteryValue & "%"
End If
End If
Catch
Label28.Text = "Error"
End Try
End If
' Get Expire date
CGlobals.BT.SendDataToDevice("GET,DEVICE.EXPIRE_DATE" & CRLF)
Sleep(150)
Dim ExpDate As String = CGlobals.BT.ReadData
If ExpDate.Contains("DEVICE.EXPIRE_DATE") Then
Dim Parts() As String = Regex.Split(",", ExpDate)
Try
' Find the part containing the date (8 digits)
Dim DatePart As String = ""
For i = 0 To Parts.Length - 1
If Parts(i).Length >= 8 And IsNumber(Parts(i).SubString2(0, 8)) Then
DatePart = Parts(i).SubString2(0, 8)
Exit
End If
Next
If DatePart.Length > 0 Then
Dim Year As String = DatePart.SubString2(0, 4)
Dim Month As String = DatePart.SubString2(4, 6)
Dim Day As String = DatePart.SubString2(6, 8)
If Year>2024 Then
Label35.Text = Day & "\" & Month & "\" & Year
End If
End If
Catch
Label35.Text = "Unknown"
End Try
End If
'Get the Radio Frequency
CGlobals.BT.SendDataToDevice("GET,RADIO.FREQUENCY" & CRLF)
Sleep(250)
Dim FreqStatus As String = CGlobals.BT.ReadData
If FreqStatus.Contains("RADIO.FREQUENCY") Then
Dim Parts() As String = Regex.Split(",", FreqStatus)
Try
' Get the value before the asterisk
Dim FreqPart As String = Parts(4)
If FreqPart.Contains("*") Then
FreqPart = FreqPart.SubString2(0, FreqPart.IndexOf("*"))
End If
If IsNumber(FreqPart) = True Then
If FreqPart>439 And FreqPart<471 Then
Label37.Text = NumberFormat2(FreqPart, 1, 3, 3, False) '& " MHz"
End If
End If
Catch
Label37.Text = "Error"
End Try
End If
'Get the Radio Channel
CGlobals.BT.SendDataToDevice("GET,RADIO.CHANNEL" & CRLF)
Sleep(250)
Dim ChannelStatus As String = CGlobals.BT.ReadData
If ChannelStatus.Contains("RADIO.CHANNEL") Then
Dim Parts() As String = Regex.Split(",", ChannelStatus)
Try
'Find the part containing the channel number
For i = 0 To Parts.Length - 1
Dim part As String = Parts(i)
If part.Contains("*") Then
part = part.SubString2(0, part.IndexOf("*"))
End If
If IsNumber(part) Then
Dim channelValue As Int = part
If channelValue >= 1 And channelValue <= 8 Then
Label39.Text = channelValue
Exit
End If
End If
Next
Catch
Label39.Text = "Error"
End Try
End If
If Label23.Text = "Transmitting" And RadioStatus.Contains("OK") Then
Label33.TextColor = Colors.Black
Label33.Text = "Base Active And Transmitting"
Else
Label33.TextColor = Colors.Red
Label33.Text = "Base Transmission Issue"
End If
End Sub
Here I parse the NMEA Strings:
B4X:
Sub Class_Globals
Dim Gps_String As String
Dim I As Int
Dim sText() As String
Dim myfields() As String
Dim got_an_error As Boolean
Dim error_msg As String
'
' GGA variables
'
Dim UTC_time As String
' Dim latitude As Double
Dim lat_type As String
' Dim longitude As Double
Dim long_type As String
' Dim quality As String
' Dim height_MSL As Double
Dim geoidal_sepn As Double
Dim height_units As String
' Dim age As Int
Dim ref_stn As String
'
' GSA variables
'
Dim mode As String
Dim current_mode As String
Dim sat_prn(12) As Int
Dim num_sat_prn As Int
' Public pdop As Double
' Dim hdop As Double
' Dim vdop As Double
'
' GST variables
'
Dim lat_error As Double
Dim long_error As Double
Dim horz_error As Double
Dim height_error As Double
'
' RMC variables
'
Dim rmc_status As String
Dim speedOG As Double
Dim trackMG As Double
Dim rmc_date As String
Dim magvar As Double
Dim dirn_magvar As String
Dim modeind As String
Dim Geo As Geodesy
End Sub
'Initializes the object. You can add parameters to this method if needed.
Public Sub Initialize
Geo.Initialize
End Sub
Sub CheckGPS(A As String) ''(myval As Boolean)
Dim I, sCount As Int
Gps_String=A
''current_string = "None"
sText = Regex.Split(CRLF, Gps_String)
I=0
sCount=Regex.Split(CRLF,Gps_String).Length
For I=0 To sCount-1
Try
Select Case sText(I).SubString2(3,6)
Case "GGA"
Parse_GGA
Case "GSA"
Parse_GSA
Case "GST"
Parse_GST
Case "RMC"
End Select
Catch
Log(LastException)
End Try
Next
End Sub
Sub Parse_GGA
'
' parses a GGA string
'
Dim myval1, myval2 As Double
' Dim mystr As String
myfields = Regex.Split(",",sText(I))
If(myfields.Length < 14) Then
Return
End If
'
' check if we actually have data
'
CGlobals.Status = "No GPS"
got_an_error = False
error_msg="no error"
'
Try
If myfields(2)="" Then Return
UTC_time=myfields(1).SubString2(0,2) & ":" & myfields(1).SubString2(2,4) & ":" & myfields(1).SubString2(4,6)
myval1=myfields(2).SubString2(0,2)
myval2=myfields(2).SubString(2)
myval2=myval2/60.0
CGlobals.Lat=Round2(myval1+myval2,12)
lat_type=myfields(3)
myval1=myfields(4).SubString2(0,3)
myval2=myfields(4).SubString(3)
myval2=myval2/60.0
CGlobals.Lon=Round2(myval1+myval2,12)
long_type=myfields(5)
CGlobals.Status=""
If(myfields(6)="0") Then
CGlobals.Status="No GPS"
End If
If(myfields(6)="1") Then
CGlobals.Status="GPS"
End If
If(myfields(6)="2") Then
CGlobals.Status="DGPS"
End If
If(myfields(6)="4") Then
CGlobals.Status="Fix"
End If
If(myfields(6)="5") Then
CGlobals.Status="Float"
End If
'
CGlobals.SatNo=myfields(7)
If IsNumber(myfields(8))=True Then CGlobals.HDOP=myfields(8) Else CGlobals.HDOP=0
CGlobals.LevHgt=myfields(9)
height_units=myfields(10)
geoidal_sepn=myfields(11)
'
If(myfields(13) <> "") Then
CGlobals.Age=myfields(13)
Else
CGlobals.Age=0
End If
'
ref_stn="??"
If(myfields(14) <> "") Then
If(myfields(14).substring2(0,4) = "0100") Then
ref_stn = "VBS"
End If
If(myfields(14).substring2(0,4) = "1000") Then
ref_stn = "HP"
End If
If(myfields(14).substring2(0,4) = "1008") Then
ref_stn = "XP"
End If
If(myfields(14).substring2(0,4) = "1016") Then
ref_stn = "HP & XP"
End If
End If
CheckCoords
Catch
error_msg=LastException.Message
'
End Try
'
End Sub
Sub Parse_GSA
'
' parses a GSA string
'
Dim isat As Int
myfields = Regex.Split(",",sText(I))
If(myfields.length < 17) Then
Return
End If
'
Try
'
mode=myfields(1)
If(mode="M") Then
mode="Manual"
Else
mode="Automatic"
End If
If(myfields(2)="1") Then
current_mode="No fix"
Else If (myfields(2)="2") Then
current_mode="2D fix"
Else If (myfields(2)="3") Then
current_mode="3D fix"
End If
'
num_sat_prn=0
For isat=1 To 12
sat_prn(isat-1)=0
If(myfields(isat+2)<>"") Then
num_sat_prn=num_sat_prn+1
sat_prn(isat-1)=myfields(isat+2)
End If
Next
'
CGlobals.Pdop=0.0
CGlobals.Hdop=0.0
CGlobals.Vdop=0.0
'
If(myfields(15)<>"") Then
CGlobals.Pdop=myfields(15)
End If
If(myfields(16)<>"") Then
CGlobals.Hdop=myfields(16)
End If
If(myfields(17)<>"") Then
CGlobals.Vdop=myfields(17).SubString2(0,3)
End If
Catch
End Try
End Sub
Sub Parse_GST
Dim i1 As Int
myfields = Regex.Split(",",sText(I))
If(myfields.Length < 8) Then
Return
End If
Try
i1=myfields(8).IndexOf("*")
myfields(8)=myfields(8).SubString2(0,i1)
If (myfields(6) <> "") Then
lat_error = myfields(6)
lat_error=100.0*lat_error
lat_error = Round2(lat_error,1)
Else
lat_error = 0
End If
CGlobals.LatError= myfields(6)
If (myfields(7) <> "") Then
long_error = myfields(7)
long_error=100.0*long_error
long_error = Round2(long_error,1)
Else
long_error = 0
End If
CGlobals.LonError= myfields(7)
If (myfields(8) <> "") Then
height_error = myfields(8)
height_error=100.0*height_error
height_error = Round2(height_error,1)
Else
height_error = 0
End If
CGlobals.HgtError= myfields(8)
'
' calc horizontal error
'
horz_error = Sqrt((lat_error * lat_error) + (long_error * long_error))
horz_error = Round2(horz_error, 1)
Catch
End Try
End Sub
Sub Parse_RMC
'
' parses an RMC string
'
Dim myval1, myval2 As Double
' Dim mystr As String
myfields = Regex.Split(",",sText(I))
If(myfields.Length < 12) Then
Return
End If
'
' check if we actually have data
'
got_an_error = False
error_msg="no error"
'
Try
UTC_time=myfields(1).SubString2(0,2) & ":" & myfields(1).SubString2(2,4) & ":" & myfields(1).SubString2(4,6)
'
' status=myfields(2)
' If(status="A") Then
' status="Valid"
' Else
' status="Warning"
' End If
'
myval1=myfields(3).SubString2(0,2)
myval2=myfields(3).SubString(2)
myval2=myval2/60.0
CGlobals.Lat=Round2(myval1+myval2,7)
lat_type=myfields(4)
'
myval1=myfields(5).SubString2(0,3)
myval2=myfields(5).SubString(3)
myval2=myval2/60.0
CGlobals.Lon=Round2(myval1+myval2,7)
long_type=myfields(6)
'
speedOG=myfields(7)
trackMG=myfields(8)
' date=myfields(9)
magvar=myfields(10)
dirn_magvar=myfields(11)
If(myfields(12) = "A") Then
modeind="Autonomous"
Else If (myfields(12)="D") Then
modeind="Differential"
Else If (myfields(12)="N") Then
modeind="Data not valid"
End If
'
Catch
error_msg=LastException.Message
'
End Try
'
End Sub
Sub CheckCoords
' If CGlobals.Li=2 And (CGlobals.DF(50)=3 Or CGlobals.DF(31)=3 Or CGlobals.DF(50)=2 Or CGlobals.DF(31)=2) And lat_type="S" Then
' If CGlobals.lat>0 Then
' CGlobals.lat=0-CGlobals.lat
' End If
' End If
Select Case CGlobals.DF(50),CGlobals.DF(31)
Case 1
'Leica
Case 2
'Emlid
Case 3,4,5,10
'Foif, RinoNav, E-Survey, StoneX
CGlobals.lat=0-CGlobals.lat
Case 6
'Tersus
' Log(CGlobals.lat & " " & CGlobals.Lon)
CGlobals.lat=0-CGlobals.lat
' CGlobals.lat=CGlobals.lat/1000
' CGlobals.Lon=CGlobals.lon/1000
Case 7
'Geomax
Case 8
'ComNav
Case 9
'CHC
End Select
Geo.Get_point_to_Local(CGlobals.Lat ,CGlobals.Lon)
' Log(Engine.Y & " " & Engine.X & " " & CGlobals.LevHgt)
Select Case CGlobals.Code
Case 20,70
'Fix A Point, Calibrate NMEA
CGlobals.Y3=CGlobals.Y3 + Engine.Y
CGlobals.X3=CGlobals.X3 + Engine.X
CGlobals.Z3 = CGlobals.Z3 + CGlobals.LevHgt - CGlobals.GPSPH
CGlobals.Count=CGlobals.Count+1
Case 1,2,3,4,10,21,22
'Setout
CGlobals.Y3=NumberFormat2(Engine.Y,1,3,3,False)
CGlobals.X3=NumberFormat2(Engine.X,1,3,3,False)
CGlobals.Z3 = CGlobals.LevHgt - CGlobals.GPSPH
CGlobals.Z3 = NumberFormat2(CGlobals.Z3,1,3,3,False)
Case 31,32,33,86,87
'Topo
CGlobals.Y3=NumberFormat2(Engine.Y,1,3,3,False)
CGlobals.X3=NumberFormat2(Engine.X,1,3,3,False)
CGlobals.Z3 = CGlobals.LevHgt - CGlobals.GPSPH
CGlobals.Z3 = NumberFormat2(CGlobals.Z3,1,3,3,False)
Case 40,41,42,43,50
'Batterboards
CGlobals.Y3=NumberFormat2(Engine.Y,1,3,3,False)
CGlobals.X3=NumberFormat2(Engine.X,1,3,3,False)
CGlobals.Z3 = CGlobals.LevHgt - CGlobals.GPSPH
CGlobals.Z3 = NumberFormat2(CGlobals.Z3,1,3,3,False)
Case 60,61,62,63,67,70,71,90,91,92,93,94,300
'Elevations
CGlobals.Y3=NumberFormat2(Engine.Y,1,3,3,False)
CGlobals.X3=NumberFormat2(Engine.X,1,3,3,False)
CGlobals.Z3 = CGlobals.LevHgt - CGlobals.GPSPH
CGlobals.Z3 = NumberFormat2(CGlobals.Z3,1,3,3,False)
End Select
CGlobals.X3=CGlobals.X3 + CGlobals.XCorr
CGlobals.Y3=CGlobals.Y3 + CGlobals.YCorr
CGlobals.Z3=CGlobals.Z3 + CGlobals.ZCorr
End Sub
Everything seems to work fine except that I am not getting a "Fix" and the "Age" stays on "0".
Any push will be appreciated.
Thanks
Michael Papenhagen