这是控件响应的代码,但是最后输出结果全都是0,不知道哪里出现错误!
if (m_mscom.get_CommEvent() == 2)
{
CString str;
char chrBuffer[1024] ;
long k;
unsigned short usLength = 0, usCnt = 0;
VARIANT InputData = m_mscom.get_Input();
COleSafeArray fs;
fs = InputData;
for (k = 0; k < fs.GetOneDimSize(); k++)
{
fs.GetElement(&k, chrBuffer + k);
usLength = fs.GetOneDimSize();
memcpy(&chrBuffer, &fs, usLength);//可能是这里出错,但是找不到解决方法
switch (chrBuffer[1])
{
case 0x50:
memcpy(&stcTime, &chrBuffer[2], 8);
break;
case 0x51:
memcpy(&stcAcc, &chrBuffer[2], 8);
break;
}
}
CString str_T;
str_T.Format(_T("Time:20%d-%d-%d %d:%d:%.3f\r\n"), (short)stcTime.ucYear, (short)stcTime.ucMonth,
(short)stcTime.ucDay, (short)stcTime.ucHour, (short)stcTime.ucMinute, (float)stcTime.ucSecond + (float)stcTime.usMiliSecond / 1000);
CString str_A;
str_A.Format(_T("Acc:%.3f %.3f %.3f\r\n"), (float)stcAcc.a[0] / 32768 * 16, (float)stcAcc.a[1] / 32768 * 16, (float)stcAcc.a[2] / 32768 * 16);
m_EditRev += str_T;
m_EditRev += str_A;
UpdateData(false); //将数据在屏幕中对应控件中显示出来。
}
}