解決VS2010使用mscomm控制項無法接收資料的問題【轉】

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   os   io   strong   

      之前有用過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:\Windows\System32(WIN7系統)。 然後在運行裡,輸入:

               Regsvr32  C:\winnt\system32\Mscomm32.ocx

      然後會看到以下提示,說明註冊成功了

                         

  第三步:修改註冊表

    在註冊表中手工建立一個主鍵項:先在點擊“開始”->"運行",再在中填入regedit命令開啟註冊表

    找到HKEY_CLASSES_ROOT\Licenses,在其中添加主鍵
      4250E830-6AC2-11cf-8ADB-00AA00C00905 

    並將內容設定為:
         kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun

    至此,mscomm控制項註冊完畢!

 

  接下來就是如何在工程裡添加mscoom控制項了。

  第一步:在工具箱的這個位置右鍵,選擇choose item

                              

  第二步:在彈出的元件匣裡選擇“COM Components”下的"Microsoft communication control 6.0",然後工具箱裡就會有一個電話表徵圖了                                  

   第三步:添加控制項,也就是把電話表徵圖拖到對話方塊裡,並添加控制項變數

   增加空間以後,在控制項上面右鍵,然後選擇“add variable”,這個時候請特別注意,兩個紅框裡面的檔案會被自動添加到工程,並且檔案

 名都帶“1”.如果你的工程裡沒有自動添加,或者檔案名稱後面不帶“1”,那麼出錯的可能性就很大了。網上有種文章說,用右鍵工程-->添加MFC類-->

 添加ActiveX的MFC類-->添加mscomm類定義,這樣添加出來的檔案個人實驗下來是不帶“1”的。我也不知道為什麼,這兩種方法大概都

 可以,有空的話你可比較一下帶“1”和不帶“1”的兩個cpp檔案和h檔案的區別。

  第四步:添加訊息響應函數

  在控制項上右鍵-->添加事件handle-->添加響應函數

                    

  這樣添加以後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下載程式無法開啟,每次雙擊開啟這個程式,都會彈出以下對話方塊

      

說“組件‘MSCOMM32.OCX‘或其附件之一不能正確註冊:一個檔案丟失或無效”。我頓時對win7的相容性產生了不小的懷疑。
     沒有碰見過這種情況,就上網看看有沒有先輩碰到這種問題並解決的。上網查詢後發現這個問題的原因貌似是沒有註冊MSCOMM.OCX控制項。於是我就下載了一份MSCOMM32的檔案,把連同‘MSCOMM32.OCX‘在內的四個檔案拷貝到了C:\windows\system32中去,又在CMD命令提示字元中輸入“regsvr32 mscomm32.ocx”,來在系統註冊,結果又彈出錯誤對話方塊:說

      

“模組‘mscomm32.ocx’已載入,但對DllRegisterServer 的調用失敗,錯誤碼為0x8002801c。有關此問題的詳細資料,請將該錯誤碼用做搜尋字詞進行聯機搜尋。”
     也就是沒有完全註冊成功。
     網上還有這樣的方法,就是在註冊表中手工建立一個主鍵項:先在點擊“開始”,"運行",再在中填入regedit命令開啟註冊表,找到HKEY_CLASSES_ROOT\Licenses,在其中添加主鍵
4250E830-6AC2-11cf-8ADB-00AA00C00905 並將內容設定為:kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun
     嘗試了一下,重啟,發現仍然是“組件‘MSCOMM32.OCX‘或其附件之一不能正確註冊:一個檔案丟失或無效”。

很鬱悶。不知所措,無奈地讓那哥們給賣家打電話,說明情況,問如果這樣是不是必須改成XP系統才能下載程式。我還在想這個應該算是電腦方面的問題,那邊的老闆主要還是搞單片機比較強一些,不知道他能不能解決。結果老闆很有信心地說,這個問題很簡單,單擊右鍵點“以管理員身份運行”就可以了。試了一下,成功開啟了。。。

唉,原來這個問題如此簡單,害得我費半天功夫瞎整一氣也沒整出來。

(經驗來源:抱歉我不能再找到原作者,只能找到N多的轉載,只能默默向原作者致敬,向無數百折不撓解決問題,分享辦法的同志致敬!)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.