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数组
这两句话时总是提醒 展开
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数组
这两句话时总是提醒 展开
若以下回答无法解决问题,邀请你更新回答
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询