VC++ VS2010对比VC6 串口控件的方法变更

    这两天整理以往项目代码,正好朋友有个win平台下串口项目需求,不过他对win下面的开发IDE平台和MFC架构都没有概念,于是就开贴对部分demo做了手把手的备注。

    朋友使用的时候碰到了一些问题,这里梳理一下。也因为MSDN里面没有对VC++下面的CMSCOMM(或者新版本叫IMSCOMM)做出说明,这样有一份可用的相对正确的参考就很重要。

    1)部分源码是在VC6下面的,用VS2010可以直接兼容打开低版本的工作环境文件.DSW,并且导入老版本的控件。在这种情况下,沿用原来的代码,是OK的,可以调试通过;

    2)不过如果在VS2010的环境下,按照教程一步一步的做,添加完MSCOMM控件后,会发现原来的部分方法/函数报错。这是因为,在默认生成的头文件中,方法的引用名称有了变化;如果直接COPY代码过来就没法编译了。这里举几个常用的方法,做一下对应 -

    m_ComPort.put_CommPort(1);    // 选择串口号
VS    m_ComPort.SetCommPort(1);

    m_ComPort.put_InBufferSize(1024);    //接收缓冲区
VS    m_ComPort.SetInBufferSize(1024);

    m_ComPort.put_OutBufferSize(1024);    //发送缓冲区
VS    m_ComPort.SetOutBufferSize(1024);

    m_ComPort.put_InputLen(0);    //设置当前接收区数据长度为0,表示全部读取
VS    m_ComPort.SetInputLen(0);

    m_ComPort.put_InputMode(1);    //以二进制方式读写数据
VS    m_ComPort.SetInputMode(1);

    m_ComPort.put_RThreshold(1);//接收缓冲区有大于等于1个字符时,将引发接收数据的OnCommMscomm事件
VS    m_ComPort.SetRThreshold(1);

    m_ComPort.put_SThreshold(1);
VS    m_ComPort.SetSThreshold(1);

    m_ComPort.put_Settings(_T("9600,n,8,1")); //设置波特率等参数
VS    m_ComPort.SetSettings("9600,n,8,1");

    m_ComPort.get_PortOpen()    //检查串口是否打开
VS    m_ComPort.GetPortOpen()

    m_ComPort.put_PortOpen(TRUE);    //打开串口
VS    m_ComPort.SetPortOpen(TRUE);

    m_ComPort.put_OutBufferCount(0);
VS    m_ComPort.SetOutBufferCount(0);

    3)对于部分“绿色版本”的IDE平台,如VC2010,可能里面并没有集成MSCOMM控件,那么要额外的注册,这种情况下,要么装两个IDE,回到VC6下面导入控件完毕,再用VS2010来兼容打开,要么直接注册控件,并在VS2010下的代码里面注意变更写法。都可以。

    4)对于没有用到的属性/方法,直接把相关代码剔除就好了,比如,你只用到了发送数据,那么与接收相关的设置就不必写了(当然,写了也没倒扣分),以免因为疏忽发生不好领会的运行时错误。

    当然,这个控件显然微软后面没有很花心思,导入后并没有附带的直接生成类,要手动添加,手动在头文件中声明,并手动定义变量,手动创建类对象。(话说,这么麻烦,比直接用第三方的类库,也只稍微强一点点了,就是比较有信心,这个毕竟是微软自己发布的)


你可能感兴趣的:(VS2010,对比,VC6,串口控件,方法变更)