vc++6.0 中利用串口控件写串口程序遇到的问题

在对串口消息处理程序中:voidCHongxingwulian_wifiDlg::OnOnCommMscomm()//读取缓冲区的数据{//TODO:Addyourcon... 在对串口消息处理程序中:
void CHongxingwulian_wifiDlg::OnOnCommMscomm() //读取缓冲区的数据
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);

VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
// 接收区
BYTE recvdata[2048];
CString str;
MessageBox("进入串口信息处理程序");
if(m_Com.GetCommEvent() == 2) // 缓冲区内有字符
{
MessageBox("收到串口事件");
variant_inp=m_Com.GetInput(); // 读取缓冲区
safearray_inp=variant_inp;
len= safearray_inp.GetOneDimSize(); // 得到有效的数据长度

for(k=0;k<len;k++);
safearray_inp.GetElement(&k,recvdata+k); // 转换为BYTE数组

for(k=0;k<len;k++)
{
BYTE bt=*(char *)(recvdata+k); // 转换为字符型
if(m_Check_HexDisp) // 是否以16进制显示
str.Format(_T("%02x "), bt);
else
str.Format(_T("%c"),bt);

m_EditRecvData += str;
}
if(m_Check_AutoNewLine) // 是否自动加上新行
m_EditRecvData+=_T("\r\n");
}
else
MessageBox("为收到串口中断事件");

UpdateData(FALSE);
// 让编辑框自动滚动
SendDlgItemMessage(IDC_EditRecvData, WM_VSCROLL, SB_BOTTOM, 0);
}

为什么在执行到
len= safearray_inp.GetOneDimSize(); // 得到有效的数据长度

safearray_inp.GetElement(&k,recvdata+k); // 转换为BYTE数组
这两句话时总是提醒
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
匿名用户
2014-12-17
展开全部
感觉 这类问题 是 系统问题
系统是 XP 吧

你试试用 360 解决补丁的事,再试试
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
查晓筠0i5
2014-12-13 · TA获得超过2752个赞
知道大有可为答主
回答量:2.1万
采纳率:1%
帮助的人:4970万
展开全部
需要帮你写吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式