zoukankan      html  css  js  c++  java
  • 解决VS2010使用mscomm控件无法接收数据的问题【转】

          之前有用过VC6的mscomm控件。所以这次也想继续用此控件实现此功能,结果没想到刚一上手还真的绕了不少弯子。主要是因为VC2010下对mscomm控件的添加,以及对控件成员变量的添加有点小繁琐,特此把个人实践的经验写下来以供新人参考。说明一下,本人用的xp+VS2010。

         如果你正在使用2010,并且想用mscomm控件,遇到如下问题,那你可以看看这篇文章。

          1. 添加了mscomm控件以及对应的控件变量以后发现以前mscomm的成员函数,类似setsettings(),commport(),都不见了

          2. 在类向导里添加了消息响应函数OnMscomm之后无法进入

          不要问我为什么这样做就可以解决这些问题,因为我也不知道原因,但是实践下来,按照以下步骤做,就可以解决这些问题。解决方法都是网上找来的,^_^

          1. 首先,2010不支持mscomm控件,所以要注册mscomm控件,我看了两篇文章,都按照做了

         http://blog.csdn.net/flydream0/article/details/8002012

        http://hi.baidu.com/shareshow/item/6f8d48f60cd5d7d642c36ae7

        简单来说,就是下载控件,注册控件,修改注册表

        第一步:下载MSComm控件

                下载地址:http://download.csdn.net/detail/flydream0/4583699

        第二步:注册组件(遇到问题,见文章最后解决办法

           压缩包内包含四个文件:

                MSCOMM.SRG

                MSCOMM32.DEP

               MSCOMM32.oca

               mscomm32.ocx

         复制到系统盘的C:WindowsSystem32(WIN7系统)。 然后在运行里,输入:

                   Regsvr32  C:winntsystem32Mscomm32.ocx

          然后会看到以下提示,说明注册成功了

                              122

      第三步:修改注册表

        在注册表中手工新建一个主键项:先在点击“开始”->"运行",再在中填入regedit命令打开注册表

        找到HKEY_CLASSES_ROOTLicenses,在其中添加主键
          4250E830-6AC2-11cf-8ADB-00AA00C00905 

        并将内容设置为:
             kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun

        至此,mscomm控件注册完毕!

      接下来就是如何在工程里添加mscoom控件了。

      第一步:在工具箱的下图这个位置右键,选择choose item

                                   123

      第二步:在弹出的组件栏里选择“COM Components”下的"Microsoft communication control 6.0",然后工具箱里就会有一个电话图标了                            124      

       第三步:添加控件,也就是把电话图标拖到对话框里,并添加控件变量

       添加空间以后,在控件上面右键,然后选择“add variable”,这个时候请特别注意,下图两个红框里面的文件会被自动添加到工程,并且文件

     名都带“1”.如果你的工程里没有自动添加,或者文件名后面不带“1”,那么出错的可能性就很大了。网上有种帖子说,用右键工程-->添加MFC类-->

     添加ActiveX的MFC类-->添加mscomm类定义,这样添加出来的文件个人实验下来是不带“1”的。我也不知道为什么,这两种方法大概都

     可以,有空的话你可比较一下带“1”和不带“1”的两个cpp文件和h文件的区别。

    125

      第四步:添加消息响应函数

      在控件上右键-->添加事件handle-->添加响应函数

                         126

      这样添加以后cpp文件里会自动多出来以下代码:

    BEGIN_EVENTSINK_MAP(CMscommTest3Dlg, CDialogEx)
        ON_EVENT(CMscommTest3Dlg, IDC_MSCOMM1, 1, CMscommTest3Dlg::OnCommMscomm1, VTS_NONE)
    END_EVENTSINK_MAP()
    
    void CMscommTest3Dlg::OnCommMscomm1()
    {
        // TODO: Add your message handler code here
    }

    注意,不要在控件上面右键用类向导添加消息响应函数,这样添加的消息响应函数是无法被触发的,我也不知道为什么,顺便求高人指点。

    至此,mscomm控件已经控件变量已添加完毕

    (注:以上部分来源于:drlsdrls关于2010下使用mscomm控件》)

    在注册时会遇到的问题:

    关于WIN7下STCISP因MSCOMM32.OCX控件问题无法运行及解决方法

    本人一直用的XP系统,调试单片机从来没有出现过问题。
    前两天楼上的哥们买了新电脑,装的是WIN7系统,他也开始学单片机了,但是却发现stcisp下载程序无法打开,每次双击打开这个程序,都会弹出以下对话框

           12

    说“部件'MSCOMM32.OCX'或其附件之一不能正确注册:一个文件丢失或无效”。我顿时对win7的兼容性产生了不小的怀疑。
         没有碰见过这种情况,就上网看看有没有先辈碰到这种问题并解决的。上网查询后发现这个问题的原因貌似是没有注册MSCOMM.OCX控件。于是我就下载了一份MSCOMM32的文件,把连同'MSCOMM32.OCX'在内的四个文件拷贝到了C:windowssystem32中去,又在CMD命令提示符中输入“regsvr32 mscomm32.ocx”,来在系统注册,结果又弹出错误对话框:说

           13

    “模块‘mscomm32.ocx’已加载,但对DllRegisterServer 的调用失败,错误代码为0x8002801c。有关此问题的详细信息,请将该错误代码用做搜索词进行联机搜索。”
         也就是没有完全注册成功。
         网上还有这样的方法,就是在注册表中手工新建一个主键项:先在点击“开始”,"运行",再在中填入regedit命令打开注册表,找到HKEY_CLASSES_ROOTLicenses,在其中添加主键
    4250E830-6AC2-11cf-8ADB-00AA00C00905 并将内容设置为:kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun
         尝试了一下,重启,发现仍然是“部件'MSCOMM32.OCX'或其附件之一不能正确注册:一个文件丢失或无效”。

    很郁闷。不知所措,无奈地让那哥们给卖家打电话,说明情况,问如果这样是不是必须改成XP系统才能下载程序。我还在想这个应该算是电脑方面的问题,那边的老板主要还是搞单片机比较强一些,不知道他能不能解决。结果老板很有信心地说,这个问题很简单,单击右键点“以管理员身份运行”就可以了。试了一下,成功打开了。。。

    唉,原来这个问题如此简单,害得我费半天功夫瞎整一气也没整出来。

    (经验来源:抱歉我不能再找到原作者,只能找到N多的转载,只能默默向原作者致敬,向无数百折不挠解决问题,分享办法的同志致敬!)

  • 相关阅读:
    UVA 254 Towers of Hanoi
    UVA 701 The Archeologists' Dilemma
    UVA 185 Roman Numerals
    UVA 10994 Simple Addition
    UVA 10570 Meeting with Aliens
    UVA 306 Cipher
    UVA 10160 Servicing Stations
    UVA 317 Hexagon
    UVA 10123 No Tipping
    UVA 696 How Many Knights
  • 原文地址:https://www.cnblogs.com/Davis812/p/3902743.html
Copyright © 2011-2022 走看看