串口编程时遇到类型转换问题(似乎是),求助!!

hf1021 2009-08-20 06:38:43
VARIANT m_Input1;
COleSafeArray m_Input2;

......

m_Input2 = m_Input1; //将VARIANT型变量转换为COleSafeArray型变量 ,在调试时出错!!

......
...全文
75 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hf1021 2009-08-21
  • 打赏
  • 举报
回复
代码和socoola君贴出的一样

在执行此句时出错:
......
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
......

目前已解决,绕道而行:

int k;
CString mInput;

if(myComm.GetCommEvent()==2)
{
k = myComm.GetInBufferCount(); //接收到的字符数目
if(k>0) {
mInput = myComm.GetInput().bstrVal;
RecDisp += mInput;
}
this->GetDlgItem(IDC_EDIT2)->SetWindowText( RecDisp );
}
设了一个全局变量 CString RecDisp;
结果是出来了,但不知这样做和以上socoola君给出的程序相比是否劣一些
socoola 2009-08-20
  • 打赏
  • 举报
回复
通用的串口读取数据程序:
// 控件事件的响应
BOOL CGolfView::OnComm()
{
 VARIANT variant_inp;
 COleSafeArray safearray_inp;
 LONG len,k;
 BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.
 CString strtemp;
 switch(m_MSComm.GetCommEvent())
 {
  case 1: // comEvSend发送数据
   break;
  case 2: // comEvReceive读取数据
   // MessageBox(_T("读取数据事件"), _T("TRACE"), MB_OK);
   variant_inp=m_MSComm.GetInput(); //读缓冲区
   safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
   len=safearray_inp.GetOneDimSize(); //得到有效数据长度
   // 接受数据
   for(k=0; k<len; k++)
   {
    safearray_inp.GetElement(&k,rxdata+k); //转换为BYTE型数组
    BYTE bt=*(char*)(rxdata+k); //字符型
    strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放
    recd+=strtemp;
   }

   // UpdateData(TRUE);
 
   break;
  default: // 传输事件出错
   m_MSComm.SetOutBufferCount(0);
   break;
  }
 UpdateData(FALSE); //更新图象内容
 return TRUE;
}
I_NBFA 2009-08-20
  • 打赏
  • 举报
回复
m_Input1读缓冲了吗? 缓冲有数据吗? 你把完整的读代码发出来.
hf1021 2009-08-20
  • 打赏
  • 举报
回复
我用VC6和VS2008都试了,编译可以通过,但调试运行时出错!
我是做硬件的,软件水平是入门级的,请各位大侠相助!!!
hf1021 2009-08-20
  • 打赏
  • 举报
回复
做一个串口调试程序时,发送已调通。接收出现这样的问题

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧