GPS外场数据与电脑的数据通信(2)
作者:佚名; 更新时间:2014-12-05

  2.4 读、写串口程序
  读语句:DWORD iLength; void* pBuffer; DWORD pReadFact; ReadFile (m_ hComm, pBuffer, iLength, &pReadFact,NULL);
  读到的数据放在内存pBuffer里,pBuffer要先申请好内存空间,iLength为需要读的数据长度,pReadFact存放实际读的数据长度。
  写语句:
  DWORD iLength; void * pBuffer; DWORD pReadFact; WriteFile ( hComm, pBuffer, iLength, &pWriteFact,NULL);
  要写的数据放在内存pBuffer里,iLength为需要写的数据长度,pReadFact存放实际写的数据长度。
  
  3 通讯程序中的多线程语句及Windows消息传递
  
  相对于GPS数据处理,计算机和GPS的通信要慢得多,而且和GPS的通信还有可能要阻塞,有时计算机还需要和多台GPS通信,所以如果应用程序写成单线程的话,是很不理想的选择。
  写多线程的程序主要是给GPS通信的读和写分别开一个线程。开线程的API如下:
  HANDLE CreateThread(LPSECURITY _ATTRIBUTES
  lpThreadAttributes, DWORD wStackSize, LPTHREAD_
  STAR_T ROUTINE lpStartAddress,LPVOID lpParameter,
  DWORD dwCreationFlags,LPDWORD lpThreadid);
  由于篇幅关系,具体参数含义请参见MSDN。
  在写多线程程序时,一定要仔细考虑须传递的参数结构。还有,在写多线程程序时还要考虑线程的同步问题,这主要通过下面的API来解决;
  DWORD WaitForSingleObject ( HANDLE hHandle,DWORD dwMilliseconds);
  HHandle是需要同步的对象的句柄,本程序中取m hComm,即串口句柄。DwMilliseconds是等待的时间,一般取INFINITE,即无限等待。
  此外,由于是多线程程序,当计算机和一个GPS通信完成时,必须要通知GPS数据处理线程,现在可以处理数据了。然后通信线程继续和GPS通信,数据处理线程开始处理数据。
  通信线程和数据处理线程之间的通信就是采用Windows的消息机制。发送消息的API如下:
  BOOL PostMessage ( HWND hWnd, UINT Msg,WPARAM wParam,LPAPAM IParam);
  HWnd是数据处理线程的窗口句柄。Msg是自定义的消息标识,比如接收成功(WM RECEIVEK)等等。wParam和LParam是需要传递的消息参数,比如可以将接收到的数据传递给数据处理线程等等。
  
  4 结束语
  
  在实际工作中,我们一般采用以下几个步奏,外场数据采集,数据回送(其中包含远程光缆数据传输和人工回送),之后通过D型RS-232C接口的连接,完成本文采用的——GPS接收机和计算机之间的的数据通讯,从而实现数据传递以及相关的数据处理。虽然GPS接收机有不同的具体数据格式,但是应用本文所论述的技术,依然可以编写出一个实用的GPS应用程序。目前这个方法,用在实际工作中经验证,数据传输不存在误码,稳妥可靠。
  
  参考文献
  [1] 王广运,郭秉义,李洪涛.差分定位技术与应用[M],北京:电子工业出版社,1998.
  [2] 周明德.微型计算机系统原理及应用[M].北京:清华大学出版社,1998.
核心期刊快速发表
Copyright@2000-2030 论文期刊网 Corporation All Rights Reserved.
《中华人民共和国信息产业部》备案号:ICP备07016076号;《公安部》备案号:33010402003207
本网站专业、正规提供职称论文发表和写作指导服务,并收录了海量免费论文和数百个经国家新闻出版总署审批过的具有国内统一CN刊号与国际标准ISSN刊号的合作期刊,供诸位正确选择和阅读参考,免费论文版权归原作者所有,谨防侵权。联系邮箱:256081@163.com