|
操作环境:win7, VC++ 2010, MScomm控件
目标:写个简单的串口调试工具
问题:
当发端不断发送1时,使用此工具,能够显示,但是会出现死机的情况(鼠标点击按键不能操作,发送区输入数据无法输入等等)
接收数据的代码基本仿照网上的程序:
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[1024]; //设置BYTE数组
CString strtemp;
if(m_mscomm.get_CommEvent()==2) //值为2表示接收缓冲区内有字符
{
// cnt++;
variant_inp=m_mscomm.get_Input();//读缓冲区消息
safearray_inp=variant_inp; //变量转换
len=safearray_inp.GetOneDimSize();//得到有效的数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
for(k=0;k<len;k++)
{
BYTE bt=*(char *)(rxdata+k);
strtemp.Format(_T("%02X "),bt); //将字符以十六进制方式送入临时变量strtemp存放,注意加入个空格
m_EditRecv+=strtemp; //加入接收
m_EditRecv+="\r\n";
}
}
UpdateData(FALSE);//更新编辑框内容
请问下,为什么会出现此情况呢?有什么好的解决方法吗? |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|