VC编的串口程序,返回的VARIANT类型的数据怎么处理。

VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048];
CString strtemp;
if (m_MSComm.GetCommEvent()==2)
{
    variant_inp=m_MSComm.GetInput();
    safearray_inp=variant_inp;
    len=safearray_inp.GetOneDimSize();
    for (k=0;k<len;k++)
    {
        safearray_inp.GetElement(&k,rxdata+k);
    }
    for (k=0;k<len;k++)
    {
        BYTE bt=*(char*)(rxdata+k);
        strtemp.Format("%c",bt);
        m_edit2+=strtemp;
    }
}
UpdateData(FALSE);
代码如上,就是抄袭别人的,但是我用串口调试助手返回的数据是正常的,此代码就是错误。
但是科学技术法表示的是正确的,比如12.3e6这样的是正确的,但是-120.9-110.1之类的就是错误,而且每次错误显示的都是1000e30

判断variant的类型,然后取对应字段的数据

判断variant的类型,然后取对应字段的数据