【VB.net】GNSS单点定位程序

现在用VB.net的人也很少了,程序都是本科的时候写的,属于自学成才,很怀念当年熬夜写代码debug的自己,没人看也无所谓,算是给自己留个纪念。

1. 窗口界面

这个就个人风格很强烈了,我喜欢简洁的。
在这里插入图片描述

2.Form中的代码

Imports System.IO
Public Class Form1
    '*************************************************读取.o文件************************************************
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        OpenFileDialog1.InitialDirectory = "C:\Users\dell\Desktop\2019工作学习\GPS课程设计"
        OpenFileDialog1.Filter = "所有文件(*.*)|*.*"
        OpenFileDialog1.FilterIndex = 1
        OpenFileDialog1.RestoreDirectory = True
        If OpenFileDialog1.ShowDialog = DialogResult.OK Then
            TextFileName1.Text = OpenFileDialog1.FileName
        End If
        If TextFileName1.Text <> "" Then
            Dim fs As FileStream
            fs = New FileStream(TextFileName1.Text, FileMode.OpenOrCreate, FileAccess.Read)
            Dim sr As StreamReader
            sr = New StreamReader(fs)
            sum1 = sr.ReadToEnd
            sr.Close()
            fs.Close()
        End If
        Dim sum11(), sum12(), sum13(), sum14(), sum15() As String
        sum11 = Split(Trim(sum1), vbLf)
        Dim num, num2 As Integer
        Dim i, j, k As Integer
        '读取卫星的近似位置X0,Y0,Z0
        num = UBound(sum11)
        sum12 = Split(Trim(sum11(8)), "  ")
        X0 = CDbl(CDec(Trim(sum12(0))))
        Y0 = CDbl(CDec(Trim(sum12(1))))
        Z0 = CDbl(CDec(Trim(sum12(2))))
        '读取时间
        sum13 = Split(Trim(sum11(74)), "  ")
        ' 读取年月日时分秒
        Dim prn As String
        nian = CInt(sum13(0))
        yue = CInt(sum13(1))
        ri = CInt(sum13(2))
        ho = CInt(sum13(3))
        mi = CInt(sum13(4))
        se = CInt(sum13(5))
        '计算观测时刻瞬时历元 周内秒
        '计算这天是星期几
        Dim yc As Integer
        Dim mc As Integer
        Dim fc As Integer
        If IsRunnian(nian) Then
            mc = Val(Mid("512503514624", yue, 1))
        Else
            mc = Val(Mid("622503514624", yue, 1))
        End If
        yc = ((nian Mod 100) \ 4 + (nian Mod 100)) Mod 7
        fc = (yc + mc + ri) Mod 7
        t = fc * 24 * 3600 + ho * 3600 + mi * 60 + se
        '读取序列号PRN(为方便区分省略字母),本次读取10个
        prn = sum13(6)
        For i = 0 To 9
            sum14 = Split(Trim(prn), "G")
            prnn(i) = sum14(1 + i)
        Next
        '读取伪距row
        For j = 0 To 9
            sum15 = Split(Trim(sum11(76 + j * 2)), "  ")
            row(j) = CDbl(Replace(sum15(0), " ", ""))
        Next
    End Sub
    '*************************************************读取.n文件************************************************
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        OpenFileDialog1.InitialDirectory = "C:\Users\dell\Desktop\2019工作学习\GPS课程设计"
        OpenFileDialog1.Filter = "所有文件(*.*)|*.*"
        OpenFileDialog1.FilterIndex = 1
        OpenFileDialog1.RestoreDirectory = True
        If OpenFileDialog1.ShowDialog = DialogResult.OK Then
            TextFileName2.Text = OpenFileDialog1.FileName
        End If
        If TextFileName2.Text <> "" Then
            Dim fs As FileStream
            fs = New FileStream(TextFileName2.Text, FileMode.OpenOrCreate, FileAccess.Read)
            Dim sr As StreamReader
            sr = New StreamReader(fs)
            sum2 = sr.ReadToEnd
            sr.Close()
            fs.Close()
        End If
        Dim sum21(), sum22(), sum23(), sum24(), sum25(), sum26, sum27, sum28, sum29, sum30, sum31, sum32 As String
        sum21 = Split(Trim(sum2), vbLf)
        Dim num, num2 As Integer
        Dim i, j, k As Integer
        '读取 ALPHA ,BETA 
        sum22 = Split(Trim(sum21(3)), " ")
        sum23 = Split(Trim(sum21(4)), " ")
        For i = 0 To 3
            ALPHA(i) = CDec(sum22(i)) '将科学计数法转换成十进制
            BETA(i) = CDec(sum23(i))
        Next
        '********************************读取导航电文等参数*******************************
        'a0(9), a1(9), a2(9), IODE(9), Crs(9), dn(9), M0(9), Cuc(9), ee(9), Cus(9), sqrtA(9), TOE(9), Cic(9), omig(9), Cis(9), i0(9), Crc(9), w(9), omigp(9), II(9) 
        '将从O文件中读取的序列号与N文件匹配,然后读取对应的参数
        For i = 0 To 9
            For j = 8 To 87
                sum26 = Trim(sum21(j))
                sum24 = Split(Trim(sum21(j)), " ")
                num = Len(sum26)
                If sum24(0) = prnn(i) Then
                    year(i) = sum24(1)
                    mon(i) = sum24(2)
                    day(i) = sum24(3)
                    shi(i) = sum24(4)
                    fen(i) = sum24(5)
                    sum25 = Split(Trim(sum24(7)), ".")
                    miao(i) = sum25(0)
                    a0(i) = CDec(Trim(Mid(sum26, 23, 19)))
                    a1(i) = CDec(Trim(Mid(sum26, 42, 19)))
                    a2(i) = CDec(Trim(Mid(sum26, 61, 19)))
                    sum27 = sum21(j + 1)
                    IODE(i) = CDec(Trim(Mid(sum27, 4, 19)))
                    Crs(i) = CDec(Trim(Mid(sum27, 23, 19)))
                    dn(i) =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值