网上找来的代码自己修改之后放到这里的。

参考地址:

http://www.pcppc.cn/kaifa/VBjiaocheng/kaifa_18010.html

http://www.itqoo.com/programme/ASPNET/200609/1489.html

http://topic.csdn.net/t/20060812/21/4945572.html

http://bbs.pdafans.com/viewthread.php?tid=154187

Imports System.Runtime.InteropServices

Public Class Form1

Private StrInfo As String = ""

Private StrX As String = ""

Private StrY As String = ""

Public Class dcb

Friend DCBlength As UInt32

Friend BaudRate As UInt32

Friend fBinary As UInt32

Friend fParity As UInt32

Friend fOutxCtsFlow As UInt32

Friend fOutxDsrFlow As UInt32

Friend fDtrControl As UInt32

Friend fDsrSensitivity As UInt32

Friend fTXContinueOnXoff As UInt32

Friend fOutX As UInt32

Friend fInX As UInt32

Friend fErrorChar As UInt32

Friend fNull As UInt32

Friend fRtsControl As UInt32

Friend fAbortOnError As UInt32

Friend fDummy2 As UInt32

Friend wReserved As UInt32

Friend XonLim As UInt32

Friend XoffLim As UInt32

Friend ByteSize As Byte

Friend Parity As Byte

Friend StopBits As Byte

Friend XonChar As Char

Friend XoffChar As Char

Friend ErrorChar As Char

Friend EofChar As Char

Friend EvtChar As Char

Friend wReserved1 As UInt16

End Class

_

Private Shared Function CreateFile _

(ByVal lpFileName As String, _

ByVal dwDesiredAccess As Integer, _

ByVal dwShareMode As Integer, _

ByVal lpSecurityAttributes As Integer, _

ByVal dwCreationDisposition As Integer, _

ByVal dwFlagAndAttributes As Integer, _

ByVal hTemplateFile As Integer) As Integer

End Function

_

Private Shared Function GetCommState _

(ByVal hFile As Integer, _

ByVal mdcb As dcb) As Integer

End Function

_

Private Shared Function SetCommState _

(ByVal hFile As Integer, _

ByVal mdcb As dcb) As Integer

End Function

_

Private Shared Function ReadFile _

(ByVal hFile As Integer, _

ByVal Buffer() As Byte, _

ByVal nNumberOfBytesToRead As Integer, _

ByRef lpNumberOfBytesRead As Integer, _

ByRef lpOverlapped As Integer) As Integer

End Function

_

Private Shared Function WriteFile _

(ByVal hFile As Integer, _

ByVal Buffer() As Byte, _

ByVal nNumberOfBytesToWrite As Integer, _

ByRef lpNumberOfBytesWritten As Integer, _

ByVal lpOverlapped As Integer) As Boolean

End Function

_

Private Shared Function CloseHandle _

(ByVal hObject As Integer) As Integer

End Function

Dim inoutfileHandler As Long

Dim numReadWrite As Integer

Dim t1 As System.Threading.Thread

Dim stopThread As Boolean = False

Dim pdcb As New dcb

Public Sub openPort()

Dim ioPort As Short = 4

inoutfileHandler = CreateFile("COM" & ioPort & ":", &HC0000000, 0, 0, 3, 0, 0)

'设置波特率

GetCommState(inoutfileHandler, pdcb)

pdcb.BaudRate.Parse("4800")

SetCommState(inoutfileHandler, pdcb)

stopThread = False

t1 = New Threading.Thread(AddressOf receiveLoop)

t1.Start()

End Sub

Public Sub receiveLoop()

Dim inbuff(300) As Byte

Dim retCode As Integer = ReadFile _

(inoutfileHandler, _

inbuff, _

inbuff.Length, _

numReadWrite, _

0)

Application.DoEvents()

While True

If retCode = 0 Or stopThread Then

Exit While

Else

Dim updateDelegate As New myDelegate(AddressOf displayReceivedMessage)

updateDelegate.Invoke _

(byteArrayToString(inbuff))

ReDim inbuff(300)

retCode = ReadFile(inoutfileHandler, inbuff, inbuff.Length, numReadWrite, 0)

Application.DoEvents()

End If

End While

End Sub

Function byteArrayToString(ByVal b() As Byte) As String

Dim str As String

Dim enc As System.Text.ASCIIEncoding

enc = New System.Text.ASCIIEncoding

str = enc.GetString(b, 0, b.Length())

Return str

End Function

Public Delegate Sub myDelegate(ByVal str As String)

Public Sub displayReceivedMessage(ByVal str As String)

If str.Length > 0 Then

'MessageBox.Show(str)

'MessageBox.Show(GetGPS(str, "X") & " " & GetGPS(str, "Y"))

StrInfo = StrInfo + str

StrX = GetGPS(str, "X")

StrY = GetGPS(str, "Y")

If StrX <> "" And StrX <> "-1" And StrX <> "V" Then

MessageBox.Show("成功获得数据 经度" & StrX & " 纬度" & StrY)

stopThread = True

CloseHandle(inoutfileHandler)

End If

End If

End Sub

Private Sub MnuOpenPort_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuOpenPort.Click

Call openPort()

End Sub

Private Sub MnuShow_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuShow.Click

TxtInfo.Text = StrInfo

TxtGPS.Text = StrX & " " & StrY

End Sub

Private Sub MnuClosePort_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnuClosePort.Click

stopThread = True

CloseHandle(inoutfileHandler)

End Sub

Private Function GetGPS(ByVal sGpsStr As String, ByVal sFindStr As String)

Dim HanderStr As String = "$GPRMC" 'GPS串头

Dim FindHander As Integer = sGpsStr.IndexOf(HanderStr)

If FindHander < 0 Then

Return "-1"

Else

sGpsStr = sGpsStr.Substring(FindHander, sGpsStr.Length - FindHander)

Dim ArryTmp() As String = sGpsStr.Split(",")

Try

If ArryTmp(2) = "V" Then

Return "V" '信号不好

Else

Select Case sFindStr

Case "X"    '返回经度

Return DM2DD(ArryTmp(5))

Case "Y"    '返回纬度

Return DM2DD(ArryTmp(3))

Case "T"

Return ArryTmp(9) & " " & ArryTmp(1)

Case "V"

Return Convert.ToString(Convert.ToDouble(ArryTmp(7)) * 1.852)

End Select

End If

Catch ex As Exception

Return "V"

End Try

End If

End Function

Public Function DM2DD(ByVal DegreeMinutes As String) As String

'转换NMEA协议的“度分”格式为十进制“度度”格式

Dim sDegree As String

Dim sMinute As String

Dim sReturn As String = ""

If DegreeMinutes.IndexOf(".") = 4 Then

DegreeMinutes = DegreeMinutes.Replace(".", "")

Dim sDegree1 As Double = Convert.ToDouble(DegreeMinutes.Substring(0, 2))

Dim sDegree2 As Double = Convert.ToDouble(DegreeMinutes.Substring(2, DegreeMinutes.Length - 2))

Dim sTmp As String = Convert.ToString(sDegree2 / 60)

sDegree2 = Convert.ToDouble(sTmp.Substring(0, sTmp.Length))

sDegree2 = sDegree2 / 10000

sDegree = Convert.ToString(sDegree1 + sDegree2)

If (sDegree.Length > 11) Then

sDegree = sDegree.Substring(0, 11)

End If

sReturn = sDegree

ElseIf DegreeMinutes.IndexOf(".") = 5 Then

DegreeMinutes = DegreeMinutes.Replace(".", "")

Dim sMinute1 As Double = Convert.ToDouble(DegreeMinutes.Substring(0, 3))

Dim sMinute2 As Double = Convert.ToDouble(DegreeMinutes.Substring(3, DegreeMinutes.Length - 2))

Dim sTmp As String = Convert.ToString(sMinute2 / 60)

sMinute2 = Convert.ToDouble(sTmp.Substring(0, sTmp.Length))

sMinute2 = sMinute2 / 10000

sMinute = Convert.ToString(sMinute1 + sMinute2)

If sMinute.Length > 10 Then

sMinute = sMinute.Substring(0, 10)

sReturn = sMinute

End If

End If

Return sReturn

End Function

End Class

java获取gps 串口_从串口读取GPS数据相关推荐

  1. Java 实现日志文件监听并读取相关数据

    Java 实现日志文件监听并读取相关数据 项目需求 由于所在数据中台项目组需要实现监听文件夹或者日志文件并读取对应格式的脏数据的需求,以便在文件.文件夹发生变化时进行相应的业务流程:所以在这里记录下相 ...

  2. java 打开url连接访问不了,android 应用Java自带的HttpURLConnection 连接网络 读取返回数据...

    android 使用Java自带的HttpURLConnection 连接网络 读取返回数据 @Override protected void onCreate(Bundle savedInstanc ...

  3. java 根据分隔符从后往前读取文件数据

    java 根据分隔符从后往前读取文件数据 思路 从前往后比较简单,使用Scanner的sc.useDelimiter(delimiter); 就可以. 从后往前 百度了半天似乎java没有从后往前读的 ...

  4. java获取电脑配置_使用Java获取cao作系统和硬件信息

    距离上一次写博客已经过去2个半的月份了,也是工作忙,也是懒,也是在积攒文章吧,反正就是许久没有写了,本次分享一个用Java获取cao作系统和硬件信息的组件,在十一假期之前就准备分享的,然这些详细的参数 ...

  5. java获取url文件格式_本地文件/url获取文件类型

    package com.cjw.baidu.ocr; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringU ...

  6. java通过url获取网页内容_Java语言通过URL读取网页数据并保存到本地文件(代码实例)...

    本文主要向大家介绍了Java语言通过URL读取网页数据并保存到本地文件(代码实例),通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. Java通过URL读取网页数据并保存到本地文件(代码 ...

  7. java获取首字母_【Java】获取中文首字母

    获取中文首字母 有时候,比如微信上根据名字拼音首字母排序并检索.那么用Java获取中文首字母是怎么实现的呢? 代码 不多说,直接上代码:(写个工具类) public class FirstCharUt ...

  8. java获取随机数方法_《Java语言程序设计》Java获取随机数方法

    <Java语言程序设计>Java获取随机数方法 在Java中我们可以使用java.util.Random类来产生一个随机数发生器.它有两种形式的构造函数,分别是Random()和Rando ...

  9. python从sqlserver提取数据_通过Python读取sqlserver数据写成json文件的总结

    最近在做将sqlserver的数据迁移到redshift上面,然后再做的过程当中出现了很多问题.(通过sqlserver 读取数据,然后写成json文件然后长传到S3上面,然后通过S3copy的形式将 ...

  10. gps电文解析matlab,MATLAB读取GPS的RINEX格式的导航电文

    文件用UltraEdith32打开如下: 2.11 NAVIGATION DATA G (GPS) RINEX VERSION / TYPE DAT2RINW 3.10 001 1 16APR08 9 ...

最新文章

  1. 防火墙产品原理与应用:NAT支持的特殊协议
  2. 【错误记录】Mac 中 IntelliJ IDEA 运行 Python 程序报错 ( No module named ‘numpy‘ )
  3. pt-online-schema-change中update触发器的bug
  4. EL表达式从数组 Map List集合取值
  5. 佛缘——宝华山隆昌寺之行
  6. C++ 面向对象(数据封装)
  7. SpringSecurity案例之把资源交给OAuth2的资源服务管理
  8. Java高级开发面试,java泛型下界通配符
  9. HDFS客户端的权限错误:Permission denied
  10. 真香!AirPods Pro美国全网脱销,网友:而我内心却毫无波澜
  11. ae正在发生崩溃_adobe AE cc2015 打开后崩溃 然后就自动关闭 怎么解决
  12. 将JQuery框架集成到SharePoint 2010中
  13. 中文翻译The Django Book
  14. NS2 学习笔记—— AODV协议分析
  15. 丛书【数据库面试笔试宝典】已在京东、淘宝、天猫等各大电子商城销售
  16. 网络安全之主动攻击和被动攻击
  17. 序列化-Kryo的使用详解
  18. 企业微信调试H5页面
  19. 现在计算机怎样读硬盘端口,组装电脑之硬盘识别篇
  20. 工厂IT人员如何自学ERP系统

热门文章

  1. 计算机在线作业4,计算机在线作业4
  2. 雨流法工具箱rainflow进行疲劳分析教程(含雨流法rainflow工具箱下载及安装教程)
  3. php程序设计2 a卷,php程序设计试卷A.doc
  4. 学完计算机的感想300,计算机培训的心得体会
  5. MPLAB X IDE v6.00_项目属性(Projiect Properties)_无法更改设置
  6. 美洽系统怎么获取未读消息
  7. 超详细轮播图,让你彻底明白轮播图!
  8. CAD数据集导出DWG,风格对照表的使用
  9. 2013-9-7中文幽默演讲比赛-我的演讲之路
  10. 关于辞职创业的思考(完整)