VC++编写GPS的串口通信

VC++编写GPS的串口通信

ID:37713447

大小:47.50 KB

页数:7页

时间:2019-05-29

VC++编写GPS的串口通信_第1页
VC++编写GPS的串口通信_第2页
VC++编写GPS的串口通信_第3页
VC++编写GPS的串口通信_第4页
VC++编写GPS的串口通信_第5页
资源描述:

《VC++编写GPS的串口通信》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、VC++编写GPS的串口通信作者:ths. 本文可以转载,请以超链接标明原始出处和作者信息及版权声明网址:http://www.zhongsisi.com/?p=347::源代码::GPS通信  真的好多事情,这个代码也是半年前写的了,拿出来贴贴。  阅读此文之前,如果你还不知道如何编写VC++的串口通信,那么你可以先看我的这篇文章:VC++编写串口通信.  GPS(GolbalPositionSystem)全球定位系统是一个在做一些项目中很常用到的仪器,它通过卫星的通信可以返回给你你当前所处的时间,时区,经纬度等等。VC+

2、+编写GPS通信是属于典型的基本的串口通信例子,而且只用接收信息即可,不用对GPS发送信息。  编写通信的方法的前半部分都跟我上篇文章说的串口通信一样,即注册ActiveX,建立实例及事件的映射等等。完成上面的操作后,你就可以接收的GPS发来的信息了。CGPSDlg::CGPSDlg(CWnd*pParent/*=NULL*/)   :CDialog(CGPSDlg::IDD,pParent){   m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);    m_port=1;//端口号

3、设置为1   m_strset=_T("38400,n,8,1");//串口参数,波特率:38400,8为数据位,1为停止位   m_inputBuffer=_T(""); //清空输入缓冲区    m_str=_T("");} voidCGPSDlg::OnBnClickedButton1(){//---------------------------------------------------------------------------   m_str=_T("");   //如果端口原来打开,则需要先关闭   

4、if(m_comm.get_PortOpen())     m_comm.put_PortOpen(FALSE);   //设置连接参数   m_comm.put__CommPort(m_port); //指定串口号   m_comm.put_Settings(m_strset);//通信参数设置   m_comm.put_InBufferSize(1024);//指定接收缓冲区大小   m_comm.put_InBufferCount(0);  //清空输入缓冲区   m_comm.put_InputMode(0);   

5、 //文本模式获取数据   m_comm.put_InputLen(0);    //读取缓冲区的全部数据   m_comm.put_RThreshold(1);   //设置在产生OnComm事件前要接收的字符数阈值    //打开端口连接   if(!m_comm.get_PortOpen())     m_comm.put_PortOpen(TRUE);//--------------------------------------------------------------------------- }  但因为

6、GPS发送来的信息是源源不断的帧数据,如果你直接阅读这些帧数据,你会发现根本无法阅读。所以接下来的关键一步就是对GPS的帧数据的格式分析,筛选出有用的数据。要筛选数据,首先你必须明白GPS的帧格式,这里我就不说了,你去看我百度Hi里以前收集的这篇文章《VC++实现GPS全球定位系统定位数据的提取》  其实数据的提取就是对接收过来的字符串进行分析,个人认为比较可简洁高效的方法是正则表达式法。但我当时使用的是最土的逐字分析法,先查找$帧开头,得到一个帧数据后再对这个帧数据分析,反正就是写得很”猥琐”,不过这么写起来也不难就是了。

7、因为方法太土,也就没有什么好讲的了,自己看代码。voidCGPSDlg::OnCommMscomm1(){   CStringstr=_T("");   VARIANTvar_in;   CStringstrtemp;    if(m_comm.get_CommEvent()==2){  //事件值为2表示接收缓冲区内有字符     var_in=m_comm.get_Input();  //读缓冲区     m_str+=var_in.bstrVal;      //转换成CString类型      if(m_str.G

8、etLength()>100){       //如果端口原来打开,则需要先关闭       if(m_comm.get_PortOpen())         m_comm.put_PortOpen(FALSE);        //数据存放变量       CStringGpsTime

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。