MSCcomm控件出现ASSERT错误

[原]串口读事件,函数中的奇怪问题。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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值