扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:peter 来源:天极论坛 2007年10月22日
关键字: Visual C++ 串行通信 控件
控件名称 | 控件 ID | 对应变量 |
通信控件 | IDC_MSCOMM | m_Comm |
接收按钮 | IDC_BUTTON_RECEIVEGPSDATA | OnbuttonStartreceivegps() |
GPS信号显示 | IDC_EDIT_COMDATA | m_comdata |
停止接收按钮 | IDC_BUTTON_ENDRECEIVEGPSDATA | OnbuttonEndreceivegps() |
//开始接收GPS信号 void CGpsDlg::OnButtonStartreceivegps() { //判断串口的状态,如果是关闭状态,则打开 if(!m_Comm.GetPortOpen() ) //打开串口 m_Comm.SetPortOpen(TRUE); UpdateData(TRUE); } //停止接收GPS的信号 void CGpsDlg::OnButtonEndreceivegps(); { //判断串口的状态,如果是打开状态,则关闭 if( m_Comm.GetPortOpen() ) m_Comm.SetPortOpen(FALSE); UpdateData(FALSE); } //相应的OnComm事件处理 void CGpsDlg::OnComm() { m_comdata.Empty(); VARIANT m_input1; COleSafeArray m_input2; LONG length,i; BYTE data[1024]; CString str; //接收缓冲区内字符 if(m_Comm.GetCommEvent()== 2) { m_comdata.Empty(); //读取缓冲区内的数据 m_input1=m_Comm.GetInput(); //将VARIANT型变量转换为ColeSafeArray型变量 m_input2=m_input1; //确定数据长度 length=m_input2.GetOneDimSize(); //将数据转换为BYTE型数组 for(i=0;i< length;i++) m_input2.GetElement(&i,data+i); //将数组转换为CString型变量 for(i=0;i< length;i++) { char a=* (char *)(data+i); str.Format(“%c",a); m_comdata += str; } /*在上面的程序中,先将VARIANT型变量 转换为ColeSafeArray型变量,再将其转换为 BYTE型数组,然后将数组转换为CString型变量, 以满足不同的变量类型显示数据的需要。*/ //提取GPS信号 CString m_zjz; m_zjz=m_comdata; //寻找GPS信号的头标志 int s; s=m_zjz.Find(“$GPRMC,"); CString m_gps; //NUM为所提取GPS信号的长度 m_gps=m_zjz.Mid(s,NUM); int x; x=m_gps.GetLength(); //信号长度不符合要求,则拒绝接收 if (x != NUM) { m_gps.Empty(); } //寻找所需要的GPS信号的头标志 int y; y=m_gps.Find(“$GPRMC,"); if (y != 0) { m_gps.Empty(); } //m-gpsdata是已声明的类成员变量 m_gpsdata=m_gps; } } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者