Windows环境下计算机与GPS串行通信程序的开发

前言位系统。对于用户来说,关键设备是用户接收机(GPS接收机)。很多情况下,用户用计算机和GPS接收机通信,将GPS信息导入计算机然后再处理。而VC由于其在串行通信及接收后的数据处理方面的强大功能,成为许多用户开发GPS应用程序的**开发语言。GPS数据传送和数据格式GPS数据传送分为同步串行传送和异步串行传送。同步串行传送是用单独的时钟信号来对传送的数据进行定

Windows环境下计算机与GPS串行通信程序的开发
前言位系统。对于用户来说,关键设备是用户接收机(GPS接收机)。很多情况下,用户用计算机和GPS接收机通信,将GPS信息导入计算机然后再处理。而VC由于其在串行通信及接收后的数据处理方面的强大功能,成为许多用户开发GPS应用程序的**开发语言。

GPS数据传送和数据格式GPS数据传送分为同步串行传送和异步串行传送。

同步串行传送是用单独的时钟信号来对传送的数据进行定时,因此要求有严格的时间控制和同步协议;异步串行传送不要求有严格的时间控制和同步协议,但要求在电文中作一些规定:在数据传送之前必须送一个“开始”位,传送完一组数据后再送一个“停止”位,因此异步串行传送是以字符为基础的。

在计算机与GPS通讯进行数据传送时,通常采用异步串行传送方式。GPS作为数据终端设备(DTE)与计算机(DCE)之间利用D型RS-232C电缆接口进行数据交换。从数据输出形式来看,GPS的输出分为两类:这种码直观,易于识别和应用,GPS的统一标准格式NMEA-3183输出就采用ASC码。其格式定义如下:二进制码是用0和1表示的编码。此编码虽然不直观,但运算方便,在计算机中应用非常普遍。目前通用的字长为8位,可用两位16进制数表示。在编码时,一个二进制数由小数点向左,每4位一分,不足4位前面补0,组成整数部分;由小数点向右,每4位一分,不足4位前面补0组成小数部分。输出/输入二进制数据流的格式是低字节/高字节排列,每一个字节的输出次序是从*低有效位(LSB)到*高有效位(MSB)。

GPS的原始观测量、星历以及其它数据都采用了二进制编码。为了满足异步串行通讯的要求,每一组数据须包含三个部分:字头块、数据块和结束符。字头块包括电文的标志和语句名;数据块包括电文中的全部数据;结束符包括校验和与回车换行。

各种GPS接收机的数据格式在总体结构上相同,但具体采用的符号、内容、字长等各不相同;因此,在编写程序之前,需知道此数据的具体结构。

另外,在编写应用程序时,为了确保数据的传送和米集质量,必须对校验和进行检验。

3使用VC编写基本的串行通讯程序创建串行通信句柄HFile取上面创建的串行通信句柄,dwinQueue,dvOutQueue分别是输入缓存和输出缓存的大小,一般取DCB是串行通信设备的控制字,对GPS来说,要设置比特率、数据位、奇偶校验位、开始位、停止位,还要设置RTSDTR等串行通信协议。

时间和总共的时间单位是毫秒。通过上面的设置,就可以进行串口的读和与。

读到的数据放在内存pBufier里。pBuffer要先申请好内存空间。iLength为需要读的数据长度,pReadFact存放实际读的数据长度。

请好内存空间并且已赋好值)。iLength为需要写的数据长度,pReadFact存放实际写的数据长度。

4多线程通信程序相对于GPS数据处理,计算机和GPS的通信要慢得多,而且和GPS的通信还有可能要阻塞,有时计算机还需要和多台GPS通信,所以如果应用程序写成单线程的话,是很不实际的选择。

写多线程的程序主要是给GPS通信的读和写分别开一个线程。开线程的APi如下:LpThreadAttributes是安全属性结构,一般取NULL即可。wStackSize是线程堆栈的大小,一般取0,由系统设该函数的参数。DwCreationFlags是创建线程的参数,一般取0即创建以后马上执行线程而不挂起。LpThreadld是为了存储线程的ID.在写多线程程序时,为了各线程之间传递数据的方便,一定要仔细考虑需传递的参数结构。另外,在写多线程程序时还要考虑线程的同步问题,主要通过下面的APi来解决:HHandle是需要同步的对象的句柄,本程序中取mhComm,即串口句柄。DwMilliseconds是等待的时间,一’般取iNFiNiTE,即无限等待。

Windows消息的传递由于是多线程程序,当计算机和一个GPS通信完成时,必须要通知GPS数据处理线程可处理数据了。然后通信线程继续和GPS通信,数据处理线程开始处理数据。

通信线程和数据处理线程之间的通信就是采用Windows的消息机制。发送消息的API如下:hWnd是数据处理线程的窗口句柄;Msg是自定义的消息标志,比如接收成功(WMRECEiVEK)等;wParam和lParam是需要传递的消息参数,比如可以将接收到的数据传递给数据处理线程等。

PostMessageO函数是消息发送以后马上处理本线程的程序,不像SendMessageO需等待数据处理线程执行完毕以后才能处理本线程的程序。

首先设置好串口的参数,具体请参见上面的论述。

传递给读线程的参数数据结构:HWNDhWnd;//调用该线程的线程的窗口句柄//主线程创建读线程在300~6⑴之间,而一个地区电网则可能有10个以上的变电所,如果把它们统一建表,定位一个故障所需时间将无法满足系统的实时性要求。实测表明,采用双层的库结构时,定位一个故障所需时间不会超过0.2秒,在容许的范围之内。

程序易于实现,软件易于使用。受计算机屏幕限制,一个电网的接线图很可能超屏显示,而现场运行人员常习惯于以变电所为单元查看电网情况,采用这种方法时,只要选定了某个变电所,系统就会自动将这个变电所的接线图完整地显示到屏幕上。

可维护性强。在自动生成电网接线信息过程中,可直接选定任何已有元件,对其进行修改或删除;针对变电所,也可进行增、删、改操作,所以易于维护。

7结论综上所述,用以上方法实现的这种网络拓扑信息自动生成系统较好地满足了故障诊断系统对显示的实时性要求。同时,在软件的实现过程中由于充分地利用VC++面向对象的优点,将系统功能细划成几个部分,分别由几个模块完成。它们既相互独立,又有机地结合,一方面在程序设计上思路清晰,易于实现;另一方面使整个系统的安全性、可靠性和准确性都有了较大的提高。

实践证明,该系统实现的方法不仅在上述故障诊断系统中有较好的性能指标,而且也对类似实时监控系统等有良好的应用价值。

泊祎回收网遵循行业规范,任何转载的稿件都会明确标注作者和来源;

发布者:泊祎回收网,转载请注明出处:https://www.huishou5.net/dianzi/12590.html

(0)
打赏 微信扫一扫 微信扫一扫
泊祎回收网泊祎回收网
上一篇 2021年4月26日 下午7:25
下一篇 2021年4月26日 下午7:28

相关推荐

电话

联系我们

1388-0022-916

在线咨询:点击这里给我发消息

邮件:1395700887@qq.com

工作时间:周一至周日,9:30-18:30,节假日无休

微信
微信
分享本页
返回顶部