天天看點

VC++ MFC MSCOMM VS2010 手把手學會序列槽收發 含例程

    老習慣,例程連結放在評論一樓。

    大部分情況下(畢設,實驗室常用裝置或傳感器的上位機程式設計,工廠打碼機/噴碼機上位機程式設計,自己學習做序列槽助手的demo,等等90%情況),用到的都是占用一個端口的異步通訊。而這類工作用MSCOMM控件可以很友善的實作,并且在VS下面可以自己做一些定制的工作。

    而不少做這類工程的,都不是計算機科班,是以有一份好的教程和跑得通,并且邏輯清楚的完整源碼,可以節約大把的時間。

    以下基于學習網上的一份比較詳細,但是沒有源碼的教程,的學習練手之作,原文的代碼有些錯漏之處,不同版本的VS用法也有差別,也一并補齊,希望能友善初學者更快的入門。

    源碼中有把該份教程一起打包,是以基本操作在正文中不再贅述,隻是把流程理一理。

    基本流程是,1)建立工程(對話框);2)添加配置對話框(Dialog),添加各種控件來把界面搭起來(Static,EditControl,ComboBox,Button);3)針對配置對話框,建立CSconfig類;這個不是必須,也可以在建立Dialog的裡面實作,不過單獨建一個類邏輯更清楚一點。4)添加變量,消息和函數,這個大部分工作都可以在類向導裡面完成。這個寫起來很長,操作可以看教程,實作可以看代碼。5)與序列槽配置(OnConfig)和收發(OnCommMscomm)相關的有兩點,一是,序列槽屬于獨占資源,如果未釋放無法被重用,記得先關閉現有的端口,再打開新的端口,GetPortOpen(),SetCommPort(),SetPortOpen()的使用順序;二是接受發送資料實際是處理GetCommEvent方法,如果要自己觸發發送,那麼要自己實作(參考例程中Onsendbtn());6)注意事項:初始化參數不要自定義,因為在DoDataExchange裡面,有把類對象和IDC的編号挂鈎,有把變量和控件屬性挂鈎,并用MFC自己的機制輔助更新,如果重複定義會造成編譯時assert失敗。

    參考代碼時候,請先自行梳理,資源(控件)有哪些,類有哪些,資源和類之間通過哪些變量關聯(包括MFC輔助定義的),自己實作或者重載的方法有哪些?

    例程隻實作了基本的收發,而以上這些架構都想清楚了,就可以自己發揮,加入一些額外的功能。