您的位置:首页 > 其它

MSCcomm控件出现ASSERT错误

2015-09-10 21:30 260 查看


 

 登录

首页 专栏 专家 热文

nchygy的专栏

[原]串口读事件,函数中的奇怪问题。safearray A=variant B的赋值错误.期待解决中...

2011-11-13阅读484 评论2
环境VC2008

功能:串口Mscomm通讯,收发字符

1. 初始化内容:

  if (!Mscomm)

{

MessageBoxA(NULL,("串口输入错误,请检查串口通讯实例"),NULL,NULL);

return true;

}

Mscomm->put_CommPort(PortNum);//com1

if(Mscomm->get_PortOpen())

{

MessageBoxA(NULL,("串口已打开,请先关闭"),NULL,NULL);

return false;

}

Mscomm->put_InBufferSize(1024);

Mscomm->put_OutBufferSize(512);

if(!Mscomm->get_PortOpen())

{

Mscomm->put_PortOpen(TRUE);

MessageBox(NULL,("串口打开成功"),"成功",NULL);

}

else

MessageBox(NULL,("无法打开串口端口"),NULL,NULL);

// m_mscomm1.SetSettings(chSet);//"4800,n,8,1"

Mscomm->put_Settings("9600,e,7,2");

Mscomm->put_InputMode(Mscomm->comInputModeText);//字符检取数据

Mscomm->put_RThreshold(1);//触发事件字节数

Mscomm->put_InputLen(0);//全部读完

2. oncomm事件响应代码出错:

  int CommEvent=Mscomm->get_CommEvent();

if(CommEvent == 2)

{

COleVariant varInput;//VARIANT  

COleSafeArray sfarrInput;

static long len,k; 

static CString strTemp;

len = Mscomm->get_InBufferCount();

varInput = Mscomm->get_Input();

//sfarrInput.Attach(varInput);//试后同样出错

sfarrInput = varInput;//错误出现,定位于COleSafeArray中重载的"="

//后续省略

  }

3. 错误内容:

  Assert出错,定位到MFC封装的函数中:

  COleSafeArray&COleSafeArray::operator=(const VARIANT & varSrc)  

  {  

  ASSERT (varSrc.vt & VT_ARRAY); //varSrc.vt =8,本句出错

  AfxCheckError(::VariantCopy(this,(LPVARIANT)&varSrc));  

  return *this;  

  }  

4. 本程序,原来若初始化InputMode为二进制数据时,成功运行,没有错误。但是初始化为文本时出错。

原因不明。求教。另外因本程序传递的是字符。怎么办才对?

上一篇
请先登录后,再发表评论!
查看评论

2楼Huaerge2014-03-04
13:14

我做的是从文件里面读出文本,然后将文本的数据转换成16进制进行发送,当然文本中的字符也是数字和字母,不存在汉字

1楼Huaerge2012-12-25
09:18

这个问题解决了吗?

更多评论(2)



回顶部


移动版|桌面版

©1999-2012, CSDN.NET, All Rights Reserved
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息