大家好,我想接收这样的数据$PMCAG,900,INI,L*4F
!AIVDM,1,1,,B,1DbAFh?P008dlSdFBjkbhrmj0000,0*4F
$GPZDA,014910.14,15,11,2004,,*6C
$GPGGA,,,,,,0,00,,,M,,M,,*66
!AIVDM,1,1,,B,168siA00008ddttFAv9o264F0<0i,0*7D
$GPVTG,,T,,,,N,,K*03
!AIVDM,1,1,,B,177lfd003W`fSa4F8?4<q:@B0l0p,0*02
!AIVDO,1,1,,,1000B<wP?w<tSF0l4Q@>4?wv0P00,0*05
$PMCAG,900,INI,L*4F
!AIVDM,1,1,,A,1696w5?P008dnitFAg=@OFl@0@6k,0*39
!AIVDM,1,1,,A,15C<o<0001`e7QLFAqW@L8tH00Sb,0*38这个是串口的数据,我想提取!AIVDM开头的数据,请问怎么接收呢?
在vc里面的。这里是不是每次接收都得不到一整条数据,要怎么做呢?请给出详细的解释,我对网络传输一点概念都没有,能给例子更好。
!AIVDM,1,1,,B,1DbAFh?P008dlSdFBjkbhrmj0000,0*4F
$GPZDA,014910.14,15,11,2004,,*6C
$GPGGA,,,,,,0,00,,,M,,M,,*66
!AIVDM,1,1,,B,168siA00008ddttFAv9o264F0<0i,0*7D
$GPVTG,,T,,,,N,,K*03
!AIVDM,1,1,,B,177lfd003W`fSa4F8?4<q:@B0l0p,0*02
!AIVDO,1,1,,,1000B<wP?w<tSF0l4Q@>4?wv0P00,0*05
$PMCAG,900,INI,L*4F
!AIVDM,1,1,,A,1696w5?P008dnitFAg=@OFl@0@6k,0*39
!AIVDM,1,1,,A,15C<o<0001`e7QLFAqW@L8tH00Sb,0*38这个是串口的数据,我想提取!AIVDM开头的数据,请问怎么接收呢?
在vc里面的。这里是不是每次接收都得不到一整条数据,要怎么做呢?请给出详细的解释,我对网络传输一点概念都没有,能给例子更好。
串口通信有发送方和接收方,两者通信时,数据以字节的形式.下面我给出一段为串口控件添加的响应函数:
void CCommPortDlg::OnOnCommMscomm()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE); //更新编辑框内容
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[3072]; //设置BYTE数组 An 8-bit integerthat is not signed.
CString strtemp;
if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{ ////////以下你可以根据自己的通信协议加入处理代码
variant_inp=m_ctrlComm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
if(m_ctrlHexReceive.GetCheck())//如果选择十六进制接
{
for(k=0;k<len;k++) //将数组转换为CString型变量
{
BYTE bt=*(char*)(rxdata+k); //字符型
strtemp.Format("%02x ",bt);count1++;//将字符送入临时变量strtemp存放
m_ReceiveData+=strtemp; //加入接收编辑框对应字符串
}
}
else//如果选择一般接收,即发什么接收什么.
{
for(k=0;k<len;k++) //将数组转换为Cstring型变量
{
BYTE bt=*(char*)(rxdata+k); //字符型
strtemp.Format("%c",bt);count1++;//将字符送入临时变量strtemp存放
m_ReceiveData+=strtemp; //加入接收编辑框对应字符串
}
}
}
UpdateData(FALSE); //更新编辑框内容
}
这里我只是提供了一些接收数据的代码,接收到这些数据后就可以有选择地获取有用信息了.(这应该很简单,不作详细说明)
建议楼主先了解CMSCOMM控件,以及其相关属性.