java获取gps 串口_从串口读取GPS数据
网上找来的代码自己修改之后放到这里的。
参考地址:
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数据相关推荐
- Java 实现日志文件监听并读取相关数据
Java 实现日志文件监听并读取相关数据 项目需求 由于所在数据中台项目组需要实现监听文件夹或者日志文件并读取对应格式的脏数据的需求,以便在文件.文件夹发生变化时进行相应的业务流程:所以在这里记录下相 ...
- java 打开url连接访问不了,android 应用Java自带的HttpURLConnection 连接网络 读取返回数据...
android 使用Java自带的HttpURLConnection 连接网络 读取返回数据 @Override protected void onCreate(Bundle savedInstanc ...
- java 根据分隔符从后往前读取文件数据
java 根据分隔符从后往前读取文件数据 思路 从前往后比较简单,使用Scanner的sc.useDelimiter(delimiter); 就可以. 从后往前 百度了半天似乎java没有从后往前读的 ...
- java获取电脑配置_使用Java获取cao作系统和硬件信息
距离上一次写博客已经过去2个半的月份了,也是工作忙,也是懒,也是在积攒文章吧,反正就是许久没有写了,本次分享一个用Java获取cao作系统和硬件信息的组件,在十一假期之前就准备分享的,然这些详细的参数 ...
- java获取url文件格式_本地文件/url获取文件类型
package com.cjw.baidu.ocr; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringU ...
- java通过url获取网页内容_Java语言通过URL读取网页数据并保存到本地文件(代码实例)...
本文主要向大家介绍了Java语言通过URL读取网页数据并保存到本地文件(代码实例),通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. Java通过URL读取网页数据并保存到本地文件(代码 ...
- java获取首字母_【Java】获取中文首字母
获取中文首字母 有时候,比如微信上根据名字拼音首字母排序并检索.那么用Java获取中文首字母是怎么实现的呢? 代码 不多说,直接上代码:(写个工具类) public class FirstCharUt ...
- java获取随机数方法_《Java语言程序设计》Java获取随机数方法
<Java语言程序设计>Java获取随机数方法 在Java中我们可以使用java.util.Random类来产生一个随机数发生器.它有两种形式的构造函数,分别是Random()和Rando ...
- python从sqlserver提取数据_通过Python读取sqlserver数据写成json文件的总结
最近在做将sqlserver的数据迁移到redshift上面,然后再做的过程当中出现了很多问题.(通过sqlserver 读取数据,然后写成json文件然后长传到S3上面,然后通过S3copy的形式将 ...
- gps电文解析matlab,MATLAB读取GPS的RINEX格式的导航电文
文件用UltraEdith32打开如下: 2.11 NAVIGATION DATA G (GPS) RINEX VERSION / TYPE DAT2RINW 3.10 001 1 16APR08 9 ...
最新文章
- 防火墙产品原理与应用:NAT支持的特殊协议
- 【错误记录】Mac 中 IntelliJ IDEA 运行 Python 程序报错 ( No module named ‘numpy‘ )
- pt-online-schema-change中update触发器的bug
- EL表达式从数组 Map List集合取值
- 佛缘——宝华山隆昌寺之行
- C++ 面向对象(数据封装)
- SpringSecurity案例之把资源交给OAuth2的资源服务管理
- Java高级开发面试,java泛型下界通配符
- HDFS客户端的权限错误:Permission denied
- 真香!AirPods Pro美国全网脱销,网友:而我内心却毫无波澜
- ae正在发生崩溃_adobe AE cc2015 打开后崩溃 然后就自动关闭 怎么解决
- 将JQuery框架集成到SharePoint 2010中
- 中文翻译The Django Book
- NS2 学习笔记—— AODV协议分析
- 丛书【数据库面试笔试宝典】已在京东、淘宝、天猫等各大电子商城销售
- 网络安全之主动攻击和被动攻击
- 序列化-Kryo的使用详解
- 企业微信调试H5页面
- 现在计算机怎样读硬盘端口,组装电脑之硬盘识别篇
- 工厂IT人员如何自学ERP系统
热门文章
- 计算机在线作业4,计算机在线作业4
- 雨流法工具箱rainflow进行疲劳分析教程(含雨流法rainflow工具箱下载及安装教程)
- php程序设计2 a卷,php程序设计试卷A.doc
- 学完计算机的感想300,计算机培训的心得体会
- MPLAB X IDE v6.00_项目属性(Projiect Properties)_无法更改设置
- 美洽系统怎么获取未读消息
- 超详细轮播图,让你彻底明白轮播图!
- CAD数据集导出DWG,风格对照表的使用
- 2013-9-7中文幽默演讲比赛-我的演讲之路
- 关于辞职创业的思考(完整)