描述:
VARIANT variant_inp;
COleSafeArray safearray_inp;
long len,k;
CString stringtemp;
m_strRXData =""; //清空显示区
UpdateData(false);
int a =m_ctrlComm.GetInBufferCount();
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型数组
}
memcpy(m_strRXData.GetBufferSetLength(k+1),rxdata,k);
// for(k=0;k<len;k++) //将数组转化为CString 型
// {
// BYTE bt=*(char *)(rxdata+k); //byte 型
// stringtemp.Format("%c",bt); //字符型
// m_strRXData +=stringtemp;
// }
rxdata[k] ='\0';
// m_strRXData =CString(rxdata);
m_RXDCount.Format("%d",len);
UpdateData(false); //显示收到的数据
经过测试,变量len 返回得结果正确,变量bt 返回字符正确,变量a 返回得数据少于len,正确得情况下应相等才对,而且edit控件变量显示得数据也少了,真奇怪呀!
希望各位高手帮忙解决,谢谢拉!