COleSafeArray在串口通信中要怎么使用
2个回答
展开全部
#define DIM 1
#define LEN 9
void CTestDlg::OnTest()
{
BYTE i1vTest[LEN] = ;
SAFEARRAYBOUND sab[DIM];
sab[0].cElements = LEN;
sab[0].lLbound = 0;
SAFEARRAY* psa = NULL;
psa = SafeArrayCreate(VT_UI1, DIM, sab);
for(long i = 0; i < LEN; i++){
SafeArrayPutElement(psa, &i, &(i1vTest[i]));
}
VARIANT vt;
vt.vt = VT_ARRAY|VT_UI1;
vt.parray = psa;
COleSafeArray sa;
sa = vt;
DWORD dwLen = sa.GetOneDimSize();
CString str;
str.Format("%d", dwLen);
MessageBox(str);
}
---------------------------------------------------------------------------------
我写了这样的一个测试程序,感觉问题应该处在你的“第一步”,也就是说,你未必完全正确的从串口缓冲区获得了有效的VARIANT数据。
#define LEN 9
void CTestDlg::OnTest()
{
BYTE i1vTest[LEN] = ;
SAFEARRAYBOUND sab[DIM];
sab[0].cElements = LEN;
sab[0].lLbound = 0;
SAFEARRAY* psa = NULL;
psa = SafeArrayCreate(VT_UI1, DIM, sab);
for(long i = 0; i < LEN; i++){
SafeArrayPutElement(psa, &i, &(i1vTest[i]));
}
VARIANT vt;
vt.vt = VT_ARRAY|VT_UI1;
vt.parray = psa;
COleSafeArray sa;
sa = vt;
DWORD dwLen = sa.GetOneDimSize();
CString str;
str.Format("%d", dwLen);
MessageBox(str);
}
---------------------------------------------------------------------------------
我写了这样的一个测试程序,感觉问题应该处在你的“第一步”,也就是说,你未必完全正确的从串口缓冲区获得了有效的VARIANT数据。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-05-13
展开全部
推荐看书
Visual C++_Turbo C串口通信编程实践
Visual C++_Turbo C串口通信编程实践
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询