我现在在MFC上接收到单片机发送过来的数据,8个数据为一组。当发过来N组数据的时候,我首先要对每一组数据进行处理,就是将每一组的8个数据进行相加,看是否=0x00(0x00为等待信号;非0x00为所需数据)
若不等于,先暂时放在一边(这些数据是需要还原的,但是这个操作是最后进行的),再判断下一组数据。直到所有数据判断完以后,再进行还原。下面是我的程序(我用的是Scomm控件,RThreshold=1)
VARIANT variant_inp;
COleSafeArray safearray_inp ;
LONG len,k;
BYTE rxdata [2048] ; //设置BYTE 数组An 8bit integerthat is not signed.
CString buffer,buffifo ;
if (m_ctrlScom. GetCommEvent()==2)// 事件值为2 表示接收缓冲区内有字符
{ ///// 以下可以根据自己的通信协议加入处理代码
variant_inp = m_ctrlScom. GetInput () ; // 读缓冲区
safearray_inp = variant_inp ; // VARIANT型变量转换为ColeSafeArray 型变量
len = safearray_inp. GetOneDimSize () ; // 得到有效数据长度
for(k=0;k<len;k++)
safearray_inp. GetElement ( &k,rxdata+k) ; // 转换为BYTE 型数组
for (k=0;k<len;k++) // 将数组转换为CString 型变量
{
BYTE bt=*(char * ) (rxdata+k) ;
buffer.Format("%02x",bt); //将字符送入临时变量buffer存放
m_output+=buffer; //在编辑框中显示所有数据
m_edit123+=bt ; //加入接收编辑框对应字符串
m_zijie+=1; //总共数据数
pdateData(FALSE);
if (bt!=0x00)
{
huanyuan();
}
}
}
我现在的问题就是:数据(全部)进来后,我要如何只对每8个数据进行处理,而不是全部。 |