博文

NMEA-0183报文格式(2005-09-30 12:57:00)

摘要:NMEA-0183报文格式

字符串(ASCII字符)格式如下:
$XXXX,XX,XX,XX,……*hh<CR><LF>
$:串头
XXXX: 串头
XX:数据字段,字母或数字
XX:数据字段,字母或数字
XX:数据字段,字母或数字
,:逗号
……
*:星号,串尾
hh:$与*之间所有字符代码的校验和,(注意:校验和h为半Byte校验,*后第1个h表示高4位校验和,第2个h表示低4位校验和。得到校验值后,再转换成ASCII字符。)
<CR>:0DH,回车控制符
<LF>:0AH,换行控制符
......

阅读全文(4650) | 评论:0

利用VB 实现短消息收发(2005-09-29 20:21:00)

摘要:利用VB 实现短消息收发
摘要:近来,笔者用VB 开发了一套PC 机上的短消息收发软件,本文根据笔者的实际开发经
验整理而得。文中介绍了在计算机上实现短消息收发的模式,重点描述了PDU 模式,包括
PDU 模式下的UCS2 编码、解码原理,以及发送与接收PDU 串的编制方式,在此基础上介绍
了利用VB 中的MSCOMM 控件,实现短消息收发的核心程序。
关键字:短消息收发、PDU 模式、UCS2 编解码、UNICODE 码、AT 指令、MSCOMM 控件
正文:
现在,短消息收发软件得到越发广泛的应用,从政府机关、学校到广大的传媒机构,
直至诸多的企事业单位,颇受使用者欢迎。首先,手机用户的普及为这类软件的出现提供了
可能,而使用这类软件,与人们传统惯用的打电话、发电子邮件等通讯方式相比,有独到的
优点,它能将信息及时送达对方,不会像查收信件(或电邮)存在时间上的延误,也不存在
类似于打电话占线或无人接听之类的烦恼;短消息收发软件可以实现消息收发双方的实时交
互,用它还可以实现消息的群体发送或定时发送等。最近,笔者尝试用VB 来开发一套实现
短消息收发功能的信息系统。至提笔之时,整套系统已经开发完毕。鉴于篇幅的原因,笔者
不可能将整个系统一一尽数,而只能将开发过程中与短消息收发功能相关的一些技术要点和
心得体验与众读者进行分享。
一、短消息收发的实现模式
目前,计算机串口上连接GSM MODEM,用它向手机发送短消息,是比较适合于小型项目
开发的一种实现模式。这种方法要求对AT 指令集和串口编程比较熟悉。在开发过程中笔者
使用的是索尼爱立信公司的GM29 模块。
这种方法收发短消息又分三种模式:BLOCK 模式、TEXT 模式和PDU 模式。BLOCK 模式已
是昔日黄花,现在用的很少了; TEXT 模式则只能发送ASCII 码,它不能发送中文的UNICODE
码——确切地讲,从技术上来说是可以用于发送中文短消息的,但是国内的手机基本上不支
持;而PDU 模式开发起来则较为复杂,它需要编写专门的函数来将文本转换为PDU 格式,但
PDU 模式被所有手机支持,可以使用任何字符集,它也是手机默认的编码方式。笔者在开发
中正......

阅读全文(5294) | 评论:0

用VB 实现GPS 信息处理2(2005-09-29 20:19:00)

摘要:2. 2. 4  ShowData 过程

该过程具体实现GPS 信息在文本框区显示、采集的功能,它通过添加数据到txt Term 控件的Text 属性,过滤控制字符,如空格、回车、换行, 并且写数据到一个打开的记录文件。空格符从它的左侧删除,在Text 属性, 或

者从传递字符串中;换行符将被修改为回车; txt Term 控件的Text 属性的尺寸也被监视,使它不能超过MAX2TERMSIZE 的要求。其实现过程如下:

Private Static Sub ShowData ( Term As Control , Data As String)

On Error GoTo Handler

Const MAXTERMSIZE = 16000

Dim TermSize As Long , i

’以下为显示GPS 信息时用的变量

Dim InString As String

Dim Utils As New CParseUtils

Dim tempStr As String

Dim n As Integer

Dim cnt As Integer

’确定现存的文本不会太大

TermSize = Len ( Term. Text )

If TermSize > MAXTERMSIZE Then

 Term. Text = Mid $( Term. Text , 4097)

 TermSize = Len ( Term. Text )

End If

’指到txt Term 的数据的结尾处

Term. SelStart = TermSize

’过滤/ 处理空格符

Do

 i = InStr (Data , Chr $(8) )

 If i Then

   If i = 1 Then

    Term. SelStart = TermSize - 1

    Term. SelLength = 1

阅读全文(2593) | 评论:0

用VB 实现GPS 信息处理1(2005-09-29 20:18:00)

摘要:用VB 实现GPS 信息处理
0  引 言

目前,GPS 已在许多行业和领域得到广泛应用,但就如何将GPS 有关信息读入计算机以便进一步处理和应用,仍是大家普遍关心的问题。虽然目前GPS 接收仪的种类、功能各有差异,而且使用的通讯协议也比较多,但许多GPS 生产商都遵循NMEA0183 协议,并且这些GPS 都提供串行通讯接口。笔者试图从分析GPS 通讯NMEA0183 协议入手,以计算机实时读取、显示、存储、回放GPS信息为例,探讨用VB 实现GPS 信息处理的一些方法。

1  GPS 通讯的NMEA 协议

GPS 的通讯协议比较多,其中NMEA (National Ma2rine Electronics Association) , 0183 协议为GPS 接收机和其他航海电子产品的导航数据输出格式,是目前普遍使用且为大多数生产商遵循的协议之一,以下为其基本通讯参数及报文格式。

1. 1  GPS 串行通讯参数

波特率= 4800 ;无奇偶校验;数据位= 8 ;停止位= 1

1. 2  NMEA 0183 报文格式

NMEA 0183 协议报文的语句串(ASCII 字符) 格式全部信息可如下表示[1] :

$AAXXX,ddd. . . ddd , 3 hh < CR > < LF >

具体内容为:

$ 串头,表示串开始

AA  识别符

XXX 语句名

ddd &#8943;ddd  数据字段,字母或数字

,   逗号

3  星号,串尾

hh  $与3 之间所有字符代码的校验和

< CR >  回车控制符

< LF >  换行控制符

1. 3  报文示例说明

在具体的GPS 应用中,不需要用到NMEA 的全部信息,而是根据具体的工作,从中选取所需的信息,忽略其他信息。在文献[ 1 ]中,给出了用NMEA0813 的$GPGGA语句的数据格式及示例,文中以GPS 推荐的最短数据$GPRMC 语句为例,具体讨论协议串中各数据段内容......

阅读全文(2287) | 评论:0

VB使用WinSock设计网络五子棋(2005-09-29 14:17:00)

摘要: VB使用WinSock设计网络五子棋

   Visual Basic 6.0中文企业版为Windows环境下的网络开发提供了强大的工具,Winsock控件就是其中之一。利用 WinSock 控件可以与远程计算机建立连接,Winsock包含有用户数据文报协议 (UDP)和传输控制协议 (TCP)。可用这两种协议来建立客户与服务器应用程序来进行通数据交换。WinSock 控件解决了以往应用VB编程时网络中应用程序之间无法实现点对点通信的难题。用户仅通过设置属性并借助事件处理就能够轻而易举地连接到一个远程的计算机上,而且只用两个方法就可以实现数据交换其中Senddata方法用于发送数据;Getdata方法用来取数据。 

   一、Winsock的编程基础 

  1.TCP协议:TCP(Transfer Control Protocol)是传输控制协议的简称,是基于连接的协议,在数据传输之前必须先建立连接。通过TCP协议建立的是客户/服务器通信方式。 

    2.UDP协议: UDP(User Data Protocol)是用户数据文报协议的简称,两台计算机之间的传输类似于传递邮件;两者之间没有明确的连接,可作为服务器,也可作为客户机。 

使用UDP协议建立对等通信和通过TCP建立客户/服务器通信的方法略有不同,它不需要建立客户和服务器,而是建立对等通信。 

    3. Winsock属性: 

    LocalPort:返回或者设置所用到的本端口;如果指定的是端口 0,就使用一个随机端口。 

    Protocol:返回或设置Winsock所用的协议是TCP或UDP。 

阅读全文(4307) | 评论:0

人生最可怕的18件大事,大家都小心点 (2005-09-29 13:02:00)

摘要:1星期五晚上修剪指甲就会失恋. 2,据说,如果注视著裂开的镜子,就会被吸到镜子里去.如果在合并的镜子里,看到的第十三张脸的眼睛是闭著的话,那这个人不久就会魂归西天了. 3,半夜两点不可以照镜子,否则会看到自己以外的人.  4,听说准考证的号码要是可以被七或三整除,那就一定可以考上(感觉跟机率好像有关. 5,据说要是一对情侣分别站在树的左右两边探出脸来照相的话,将来一定会分手;即使结了婚也会离婚. 6,据说要是在房间的四面墙壁都贴满海报的话,就比较容易被鬼压床.这是因为幽灵无法从房间出去的缘故.睡前看著房间的四个角落之後再睡,就会被鬼压床无法动弹. 7,浴室天花板的四个角落有很多幽灵,据说它们趁人在洗头的时候杀人(我正好是站著洗头==). 8,看到灵车或丧礼要把自己的姆指藏起来,否则父母会死得很悲惨,也有人说如果不暂时停止呼吸也不好.(倒是曾有个人骑脚踏车的时候看到灵车,结果为了把姆指藏起来而把双手放开,结果连人带车摔倒了==¦¦). 9,耳朵深处要是觉得搔痒,隔天就有好事;早上史是左边耳朵痒,当天就有好事(好像不管怎样都是好事嘛@@). 10,很多人在说话却忽然静下来的时候,听说是天上有天使经过,可是,也有人说是恶魔经过.  11,据说,长头发的人比较容易看到幽灵(聚灵吗==?). 12,晚上背靠著墙壁念书的话,会有一个老婆婆从墙壁中跑出来,拍念书的人背膀二次.这次绝不能回头,不然头会被她砍掉. 13,如果二十岁之前都没看到幽灵,那就一辈子都不会看到.同样的,如果二十岁之前都没有被鬼压过,就一辈子不会有了. 14,如果看到短尾的猫就会失恋;星期六下午如果看节黑色的猫就会有不好的事发生;看到黑色的猫如果不倒退三步的话,就会发生不幸的事. 15,如果指甲上出现白色斑点?就会有人赠送你想要的礼物. 16,早上缝制东西的话,会发生不祥的事. 17,过上九点一直盯著天花板看时,窗户会传来「咚!咚」的声音,这时如果不问:「请问是哪位?」的话,过几天就会死. 18,如果看了此贴不回,后果不堪设想. ....

......

阅读全文(1836) | 评论:0

气死看星星这一类软件(2005-09-29 12:59:00)

摘要:抱歉,据我再次测试,这个程序在某些时候会出问题。
所谓的某些时候就是指:我在一个普通文本框中迅速地按键,然后突然用鼠标点击经过这个程序处理过的文本框时,让它获得了焦点,这时,变量中就会记录下获得焦点之后的输入,但是,文本框中没有显示。
我想,可能是文本框获得焦点后就可以获取KeyPress和KeyDown事件,但是在一段时间内它不会对输入作出响应。
于是,我修改程序,害我增加了两个辅助变量。

修正版如下:

Dim Pws As String, Keya As Integer, Keyl As Integer

Private Sub TexPW_Change()
Select Case Keya
Case 8, 46
    If Keyl = 0 Then
        Pws = Left(Pws, TexPW.SelStart) & Mid(Pws, TexPW.SelStart + 2)
    Else
        Pws = Left(Pws, TexPW.SelStart) & Mid(Pws, TexPW.SelStart + Keyl + 1)
    End If
Case Else
    Pws = Left(Pws, TexPW.SelStart - 1) & Chr(Keya) & Mid(Pws, TexPW.SelStart + Keyl)
End Select
End Sub

Private Sub TexPW_KeyDown(KeyCode As Integer, Shift As Integer)
Keya = KeyCode: Keyl = TexPW.SelLength
End Sub

Private Sub T......

阅读全文(3356) | 评论:0

最强的智力题!!!!(2005-09-28 20:01:00)

摘要:有十二个乒乓球特征相同,其中只有一个重量异常,现在要求用一部没有砝码的天平称三次,将那个重量异常的球找出来。
  评分标准:
  1、30分钟以内做出来:智力很高很高很高,不知道有多高。
  2、60分钟以内做出来:智力很高。
  3、两小时内做出来: 智力相当高。
  4、1天或者1周内做出来:智力也很高,而且还是一个有毅力的人。
  5、10分钟内做出来:你或者以前做过,或者多半是个马虎的人。回去检查答案自:Club......

阅读全文(3398) | 评论:28

超强短信25条(挺得住的算你厉害!) (2005-09-28 19:37:00)

摘要: 超强短信25条(挺得住的算你厉害!) if(bgCol=="#ffffff"){ var pvStr = getPV(19492856); document.write(""+pvStr+" 1 2 >> "); } 点击:52948   1 2 >>   topUserStr = ""; if(bgCol!="#ffffff"){ var topUser = document.getElementsByName("0")[0]; if(topUser){ if(topUser.id != "anony_crm" && topUser.id != "anony_club") topUserStr = topUser.id=="wangshaoqi_1985"?"楼主:":""; } } [ document.write(topUserStr) [孤独]不败] 发表于2005-09-27 13:53 caixinUrl = "彩信"; [ document.write(caixinUrl); 彩信][引用][回复][编辑] 1、老公要出差半年, 贤妻收拾行李.完毕,深情地交给老公一包安全套说道:在外面实在忍不住的话记住一定带套,老公听罢激动地说:家里不宽裕还是用她们的吧。 
  
  2、某男看到一则广告:不开刀、不住院、让你的生殖器轻轻松松变大变粗!顿大喜,立即汇款。数日,收到邮包,急切地打开一看!*!原来是一放大镜!   
  
  3、牧师问一对夫妇:如果五分钟后就到世界末日,你们想做什么事?丈夫兴致勃勃地回答:想做爱。太太白他一眼幽幽地说:那剩下的四分钟干什么? 
  
 
 
  
  6、俩屎壳螂讨论福利彩票,甲说:我要中了大奖就把方圆50里的厕所都买下来,每天吃个够!乙说:你丫太俗了!我要是中了大奖就包一活人,每天吃新鲜的!  
  
  7、洞房花烛夜的......

阅读全文(3198) | 评论:0

一个母亲一生撒的8个谎(转载)    (2005-09-28 19:36:00)

摘要: 一个母亲一生撒的8个谎(转载) if(bgCol=="#ffffff"){ var pvStr = getPV(19528473); document.write(""+pvStr+" 1 2 >> "); } 1 2 >>   topUserStr = ""; if(bgCol!="#ffffff"){ var topUser = document.getElementsByName("0")[0]; if(topUser){ if(topUser.id != "anony_crm" && topUser.id != "anony_club") topUserStr = topUser.id=="junbaggio"?"楼主:":""; } }   caixinUrl = "彩信"; [ document.write(caixinUrl); 彩信][引用][回复][编辑] 1、儿时,小男孩家很穷,吃饭时,饭常常不够吃,母亲就把自己碗里的饭分给孩子吃。母亲说,孩子们,快吃吧,我不饿!——母亲撒的第一个谎
    2、男孩长身体的时候,勤劳的母亲常用周日休息时间去县郊农村河沟里捞些鱼来给孩子们补钙。鱼很好吃,鱼汤也很鲜。孩子们吃鱼的时候,母亲就在一旁啃鱼骨头,用舌头舔鱼骨头上的肉渍。男孩心疼,就把自己碗里的鱼夹到母亲碗里,请母亲吃鱼。母亲不吃,母亲又用筷子把鱼夹回男孩的碗里。母亲说,孩子,快吃吧,我不爱吃鱼!——母亲撒的第二个谎
    3、上初中了,为了缴够男孩和哥姐的学费,当缝纫工的母亲就去居委会领些火柴盒拿回家来,晚上糊了挣点分分钱补点家用。有个冬天,男孩半夜醒来,看到母亲还躬着身子在油灯下糊火柴盒。男孩说,母亲,睡了吧,明早您还要上班呢。母亲笑笑,说,孩子,快睡吧,我不困!——母亲撒的第三个谎
    4、高考那年,母亲请了假天天站在考点门口为参加高考的男孩助阵。时逢盛夏,烈日当头,固执的母亲在烈日下一站就是几个小时。考试结束的铃声响了,......

阅读全文(2247) | 评论:13