我按照龚建伟的例子作了一个小工具(基本上和他的一样),
程序文件和他的一抹一样,编译也没问题 
就是在执行的时候如果我发送数据(字符,数字)的话他就报那种debug library 错误 ,我debug, 发现我和他的程序在从串口缓冲区里面读出来的数据不一样, 
比如我发送1这个字符 ,他得程序得到的是8209,我得到的是8 ,为什么呢? void CSCommTestDlg::OnComm() 
{
// TODO: Add your control notification handler code here
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.
CString strtemp;
if(m_ctrlComm.GetCommEvent()==2)     //事件值为2表示接收缓冲区内有字符
{
variant_inp=m_ctrlComm.GetInput();   //读缓冲区//下面的两条语句在debug的时候会出现那种debug library 错误,
safearray_inp=variant_inp;//VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
    safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
for(k=0;k<len;k++)             //将数组转换为Cstring型变量
{
BYTE bt=*(char*)(rxdata+k);      //字符型
strtemp.Format("%c",bt);         //将字符送入临时变量strtemp存放
m_strRXData+=strtemp;    //加入接收编辑框对应字符串    
}
}
UpdateData(FALSE);           //更新编辑框内容
}各位大虾看看吧,搞了一天了,多谢

解决方案 »

  1.   

    safearray_inp=variant_inp,这个转换是不是需要强制类型转换呢。我想这个是不是COM接口的问题,你查查MSDN,这个问题应该不是串口通讯的问题
      

  2.   

    safearray_inp=variant_inp,这个转换是不是需要强制类型转换呢。我想这个是不是COM接口的问题,你查查MSDN,这个问题应该不是串口通讯的问题
      

  3.   

    例子程序上就是这样写,他怎么没事呢?例子的链接: http://www.gjwtech.com/vcandc/scommassistantcode.htm
      

  4.   

    从错误上看。。是不是在例子中包含或设置了某些LIB文件你没有啊。好好找找
      

  5.   

    首先我用工具软件将每一个文件都和例子地做了对照,除了一个大小写以外都是一样的,Lib文件在那里设置?我看了一下工程里面的设置和工具里面的选择,没发现什么。