MFC控件程序 
在非VC环境下无法启动 
是用的静态链接  
不管是调试版还是Release版都毫无反应 在任务管理器中没有相应的进程运行  
是一个MSCOMM的串口通信程序 在本机有MFC环境下运行正常    
在线等 谢谢

解决方案 »

  1.   

    MSCOMM控件在新机器环境下有没有注册啊?
      

  2.   

    另外ACtiveX控件好像不能静态连编吧,你还是要提借相关文件的。
      

  3.   

    哦  要注册啊  没有考虑过这个问题  可是那样是不是有点麻烦 
    =============
    将相关的ACtiveX文件自制过去,执行regsvr32就行了
      

  4.   

    哦 原来是这样  朋友 再问下 我用MSCOMM中的ONCOMM接收数据 可是是乱码  不知道怎么接收  可不可以指点下  谢谢了void CCSCommTestDlg::OnComm() 
    {
    // TODO: Add your control notification handler code here
    AfxMessageBox("OnComm"); 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(); //读缓冲区 
    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); //更新编辑框内容
    }
      

  5.   

    不好意思,我从来就没用过MSCOMM,具体情况不清楚,建议检查这两句:
    BYTE bt=*(char*)(rxdata+k); //字符型 
    strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放 
      

  6.   

    你要弄清楚下位机发送上来的数据是什么形式的,比如发送数字1,它是发送0x01,还是0x31;如果是0x01的话,说明它把数字1当成十六进制数,而不是字符strtemp.Format("%c",bt); 需要修改一下:
    strtemp.Format("%2x ",bt); 
      

  7.   

    哦   是一个单片机朋友要我弄的一个程序  就是  他说我串口一直不停的在发东西
    0x88是引导码(第0个数)
    0X00 or 55 or 11 表示温度控制系统的工作状态  最后的表示温度  程序实现的功能就是用VC做的界面来监视和控制系统温度
    很谢谢两位朋友的解答  还望DENGXUXING在指点下  再次感谢
      

  8.   

    这个问题我前几天也遇到了
    你得先把MSCOMM32.OCX拷到SYSTEM32下,然后在运行里输入regsvr32 mscomm32.ocx注册就ok了
      

  9.   

    0x88是引导码(第0个数) 
    0X00 or 55 or 11 表示温度控制系统的工作状态  最后的表示温度  程序实现的功能就是用VC做的界面来监视和控制系统温度 
    ==================
    没做好相关的东西,不过这些数据很明显不是字符啊,所以你的代码读出来显示出来是乱码是很正常的,你现在要做的就是数进转化工作而已
      

  10.   

    不是很明白它要发上来的数据是:
    0x88 0X00 or 55 or 11    吗?
    还是:
    0x88 0X00是后者的话:strtemp.Format("%2x ",bt); 
    是前者的话,有些不伦不类的样子,要它下位机按字符的ASCII值发上来,你这边:strtemp.Format("%c",bt); 就是说:0x88 要它发:十进制数:48 120 88 88  
    共四个字节的数
      

  11.   

    不是很明白它要发上来的数据是:
    0x88 0X00 or 55 or 11    吗?
    还是:
    0x88 0X00是后者的话:strtemp.Format("%2x ",bt); 
    是前者的话,有些不伦不类的样子,要它下位机按字符的ASCII值发上来,你这边:strtemp.Format("%c",bt); 就是说:0x88 要它发:十进制数:48 120 88 88  
    共四个字节的数
      

  12.   

    不好意思  还要在麻烦下 在用MSCOMM发送的时候出了点问题,朋友说只要发送过去的是个十六进制的就好了 可是总要出毛病  
    还望指点一二 谢谢
      

  13.   

    顶下帖子
    我也碰到这个问题
    终于在CSDN解决了我的问题!