博文
怎样写一个GPS应用程序—介绍 2(2005-11-13 14:29:00)
摘要:这里有一个关于 $GPGSV 的语句:
$GPGSV,3,1,10,24,82,023,40,05,62,285,32,01,62,123,00,17,59,229,28*70
每条语句包含四部分内容,例如:第一部分是“24,82,023,40”,第二部分是“05,62,285,32”等等。每部分的第一个词为PRC,第二个词为卫星高程,跟着为方位角和信号强度。如果这个卫星信息用图来显示,那么就如图 1-1。
(图 1-1:$GPGSV语句的图形表示,中心点为当前位置,周边的圆标示水平面。)
这个语句里最重要的指标应该算是“信号躁声比(signal-to-noise ratio)”(以下简称为SNR)。这个数值标示卫星信号的接收率。我们知道,卫星是以相同的强度发射信号,但是传播过程中难免会遇到诸如树和墙之类的 障碍物,这样就影响了信号的识别。典型的SNR值在0到50之间,其中50表示非常好的信号。(SNR可以达到99,但是我还从来没有见过50以上的数据 哦。)。在图 1-1里,绿色卫星表示强信号,然而黄色卫星则为中等(在第二部分,我将提供一个方法来实现信号强度的分类)。卫星#1的信号完全被阻挡了。清单 1-7 说明了扩展读取卫星信息后的描述器。
清单 1-7:描述器添加了描述GPS卫星当前位置的功能。
'** Listing 1-7. Extracting satellite information
'*******************************************************
Public Class NmeaInterpreter
' Raised when the current location has changed
&......
怎样写一个GPS应用程序—介绍1(2005-11-13 14:28:00)
摘要:
怎样写一个GPS应用程序1—介绍
作者: YuL (http://www.cnblogs.com/yul/)
原文:How to Write a GPS Application - Introduction
作者:Jon Person 翻译:YuL (http://www.cnblogs.com/yul/)
需要什么样的GPS应用程序才能满足商业级的要求呢,像安装在车里的导航器一样?而且,GPS数据是怎么被解释,从而应用于实际工作中的呢?在这两部分里,我将和大家一起探讨这两个问题,并且给你编写商业级GPS应用程序必要的技巧,让专业的GPS设备能够更好的为你所用。
一句重要的语句
第一部分将探讨描述GPS原始数据的工作。实际上这个工作已经被国家舰船电子协会(下面简称NMEA,www.nmea.org)给简化了许多,该网站介 绍了一个正广泛应用于GPS主流设备的工业标准。为了给广大的开发人员一个良好的开端,我选择使用的一些VS.NET的源代码来自我的“GPS.NET Global Position SDK”组件。(为了简短这些代码,我去掉了诸如多线程和错误处理的部分。)
NMEA数据通过一个“逗号分隔的语句”来传递,这个语句包含的信息都基于语句的第一个单词。这里有五十种以上类型的语句,不过真正的一个描述仅仅需要处理少量的采集数据。最终常用的NMEA语句是“推荐最小”语句,它以“$GPRMC.”开头。这里有个一例子:
$GPRMC,040302.663,A,3939.7,N,10506.6,W,0.27,358.86,200804,,*1A
这条语句基本上包含了GPS应用程序所需的全部数据:纬度、经度、速度、方向、卫星时间、状态以及磁场变量。
第一步就是要写一个方法来解释NMEA数据,这个方法需要完成两件事:将每条语句分解为独立的单词,和检查首单词是否有效。清单 1-1 就是这个描述类的开始部分。
清单 1-1:一个NMEA描述的核心功能是将NMEA语句分解成单个的单词。
'** Listing 1-1. The core of an NMEA int......
VB GPS 编程源程序(2005-11-13 13:50:00)
摘要:
VB GPS 编程源程序
gisant 发表于 2005-3-18 9:31:56
Private Sub GPSComm_OnComm()
On Error GoTo ErrHdl
Dim oData As String
Dim aData() As String
Dim aDataLen As Integer
Dim counter1 As Integer
oData = CStr(GPSComm.Input)
If Mid(oData, 1, 1) <> "$" Then
Exit Sub
End If
aData = Split(oData, vbCrLf)
aDataLen = 8
For counter1 = 1 To aDataLen Step 1
If Len(aData(counter1)) < 6 Then
Exit For
......
VB 中调用 Word 拼写检查 (2005-10-15 12:15:00)
摘要:
VB 中调用 Word 拼写检查
作者:
评价:
上站日期: 2001-09-06
内容说明:
来源:
Function CheckSpell(IncorrectText as string) as string
Dim Word As Object, retText$
On Error Resume Next
' 建立对象并打开 WORD
Set Word = CreateObject("Word.Basic")
' 把需要检查的 STRING 放到 WORD
Word.AppShow
Word.FileNew
Word.Insert IncorrectText
' 运行 WORD 拼写检查
Word.ToolsSpelling
Word.EditSelectAll
' 取返回值
retText = Word.Selection$()
CheckSpell = Left$(retText, Len(retText) - 1)
'关闭文件并回到 VB 应用
Word.FileClose 2
Show
Set Word = Nothing
End Function
......
用VB控制EXCEL生成报表 (2005-10-15 12:15:00)
摘要:用VB控制EXCEL生成报表
作者:
评价:
上站日期: 2002-01-14
内容说明:
来源:
做为一种简捷、系统的 Windows应用程序开发工具,Visual Basic 5 具有强大的数据处理功能,提供了多种数据访问方法,可以方便地存取Microsoft SQL Server、Oracle、XBase等多种数据库,被广泛应用于建立各种信息管理系统。但是,VB缺乏足够的、符合中文习惯的数据表格输出功能,虽然使用Crystal Report控件及 Crystal Reports程序可以输出报表,但操作起来很麻烦,中文处理能力也不理想。Excel作为Micorsoft公司的表格处理软件在表格方面有着强大的功能,我们可用VB5编写直接控制Excel操作的程序,方法是用VB的OLE自动化技术获取Excel 97 的控制句柄,从而直接控制Excel 97的一系列操作。
下面给出一个实例:
首先建立一个窗体(FORM1)在窗体中加入一个DATA控件和一按钮,引用Microsoft Excel类型库:从"工程"菜单中选择"引用"栏;选择Microsoft Excel 8.0 Object Library;选择"确定"。
在FORM的LOAD事件中加入:
Data1.DatabaseName = 数据库名称
Data1.RecordSource = 表名
Data1.Refresh
在按钮的CLICK事件中加入
Dim Irow, Icol As Integer
Dim Irowcount, Icolcount As Integer
Dim Fieldlen() "存字段长度值
Dim&nb......
自动开始上次关机时关闭的应用 (2005-10-15 12:13:00)
摘要:
自动开始上次关机时关闭的应用
作者:
评价:
上站日期: 2001-09-04
内容说明:
来源:
两点关键:
1 检测是 Windows 关闭引起的 QueryUnload 事件。
2 改写 Software\Microsoft\Windows\CurrentVersion\RunOnce
声明:
Declare Function RegCloseKey Lib "advapi32.dll" Alias "RegCloseKey" (ByVal hKey As Long) As Long
Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData ......
如何取得计算机的所有字体(2005-10-15 12:07:00)
摘要:如何取得计算机的所有字体
作者:
评价:
上站日期: 2001-09-04
内容说明:
来源:
取得屏幕字型:
Dim I As Long
For I = 0 To Screen.FontCount - 1
Combo1.AddItem Screen.Fonts(I)
Next
取得打印机字型:
Dim I As Long
For I = 0 To Printer.FontCount - 1
Combo2.AddItem Printer.Fonts(I)
Next
......
如何让文本框只接受数字?(2005-10-15 12:06:00)
摘要:如何让文本框只接受数字?
作者:
评价:
上站日期: 2001-09-01
内容说明:
来源:
使用如下代码,在文本框的按键事件中加入:
Private Sub Textl_KeyPress(KeyAscii As Integer)
If keyAscii> =33 Then
If KeyAscii< =vbkey9 And KeyAscii> =vbKey0 Then
Else '把KeyAscii设为0就是取消输 入。
KeyAscii=0
MsgBox ”不要输入数字!”
End If
End If
End Sub
注意:KeyAscii键值与KeyCode 相同,我们可以查看KeyCode值,不 过有些KeyCode键值必须在 KeyDown和KeyUp中才有效,在 KeyPress的KeyAscii中没用。利用 KeyAscii=0的方式在KeyPress中有 用,但在KeyDown中让KeyCode=0 就不行了。
......
VB中利用WinRAR进行文件压缩(2005-10-15 11:55:00)
摘要:VB中利用WinRAR进行文件压缩
作者:
评价:
上站日期: 2001-09-01
内容说明:
来源:
一些数据库文件(如Access文件)在远程传输过程中可能由于文件比较大而影响传递效果。如果进行压缩以后再传递,会减少传递时间,避免意外的发生,同时也保证了传递效果。我们在压缩文件时,最常用的压缩工具为WinRar和Winzip,笔者在VB编程过程中利用WinRar工具来压缩数据库文件,并完成远程传输,十分方便,在此向大家介绍一下。用WinZip的方法类似。
一、Shell函数
Shell函数是VB中的内部函数,它负责执行一个可执行文件,返回一个Variant(Double),如果成功的话,代表这个程序的进程ID,若不成功,则会返回0。
Shell的语法:Shell(PathName[,WindowStyle])。
PathName 为必需参数。类型为String,它指出了要执行的程序名,以及任何需要的参数或命令行变量,也可以包括路径名。
WindowStyle为可选参数。Integer类型,指定在程序运行时窗口的样式。WindowStyle有以下这些值。
常量 值 描述
VbHide 0 窗口被隐藏,且焦点会移到隐式窗口。
VbNormalFocus 1 窗口具有焦点,且会还原到它原来的大小和位置。
VbMinimizedFocus 2 窗口会以一个具有焦点的图标来显示(缺省值)。
VbMaximizedFocus 3 窗口是一个具有焦点的最大化窗口。
VbNormalNoFocus 4 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动。
VbMinimizedNoFocus 6 窗口会以一个图标来显示,而当前活动的窗口仍然保持活动。
二、关于WinRar的用法
主要介绍以下如何在Wi......
浅谈用VB6.0编写BO程序 (2005-10-15 11:50:00)
摘要:浅谈用VB6.0编写BO程序
作者: 洪杭迪
评价:
上站日期: 2001-09-01
内容说明:
来源:
BO又称“特洛伊木马”, 是在美国一次黑客技术讨论会上由一个黑客组织推出的。它其实是一种客户机/服务器程序,其利用的原理就是:在本机直接启动运行的程序拥有与使用者相同的权限。因此如果能够启动服务器端(即被攻击的计算机)的服务器程序,就可以使用相应的客户端工具客户程序直接控制它了。下面来谈谈如何用VB来实现它。
使用VB建立两个程序,一个为客户端程序Client,一个为服务器端程序systry。
在Client工程中建立一个窗体,加载WinSock控件,称为tcpClient,协议选择TCP,再加入两个文本框,用以输入服务器的IP地址或服务器名,然后建立一个按钮,按下之后就可以对连接进行初始化了,代码如下:
Private Sub cmdConnect_Click()
If Len(Text1.Text) = 0 And Len(Text2.Text) = 0 Then
MsgBox ("请输入主机名或主机IP地址。")
Exit Sub
Else
If Len(Text1.Text) > 0 Then
tcpClient.RemoteHost = Text1.Text
Else
tcpClient.RemoteHost = Text2.Text
End If
End If
tcpClient.Connect
Timer1.Enabled = True
End Sub
连接建立之后就可以使用DataArrival事件处理所收到的数据了。&......