0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在VS2013下編寫基于MSCOMM的MFC串口通訊程序

qianyanjishuhui ? 來源:愛上PLC ? 2023-08-18 11:09 ? 次閱讀

VS2013,串口程序編寫和調(diào)試;參照網(wǎng)文,整理。

開發(fā)環(huán)境:VS2013

串口控件

電腦:win7,32版本

準(zhǔn)備:

· 1、下載串口控件:

壓縮包包含四個(gè)文件:MSCOMM.SRG、MSCOMM32.DEP、MSCOMM32.oca、mscomm32.ocx;

解壓后拷貝到:

C:WindowsSystem32(WIN7、Win8、Win10系統(tǒng));

C:WINDOWSsystem32(XP系統(tǒng))。

注意:64位win7、8、10系統(tǒng)還需要將mscomm32.ocx文件復(fù)制到C:WindowsSysWOW64目錄下,否則后面注冊會出錯(cuò)。

2、在C:WindowsSystem32里找到cmd.exe以管理員身份運(yùn)行:

Regsvr32 C:WINDOWSsystem32MSCOMM32.OCX

注冊成功如圖所示:

3、修改注冊表:win+R組合鍵打開“運(yùn)行”或者直接在開始菜單里找到“運(yùn)行”;輸入regedit后回車,打開注冊表管理器,在其中找到HKEY_CLASSES_ROOT項(xiàng)下的Licenses項(xiàng),添加主項(xiàng)命名為“4250E830-6AC2-11cf-8ADB-00AA00C00905”,并將鍵值修改為“kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun”

4、新建MFC工程:在VS 2013中新建一個(gè)MFC項(xiàng)目,比如基于對話框的一個(gè)項(xiàng)目

5、添加MSComm控件:在對話框上右擊選擇“打開ActiveX控件”,英文版“InsertActiveX Control”找到Microsoft Communications Control,version 6.0,此時(shí)在對話框中出現(xiàn)一個(gè)電話一下的按鈕,這個(gè)就是MSComm控件,軟件運(yùn)行時(shí)是看不見的

6、按你需要的,添加對話框控件:

7、在電話控件上添加映射變量;完成后, 在工程中會自動生成mscomm.h 和mscomm.cpp兩個(gè)文件;

8、在串口控件上右鍵,添加控件事件處理函數(shù):

91af2986-3d73-11ee-ac96-dac502259ad0.jpg

91d4765a-3d73-11ee-ac96-dac502259ad0.png

91fbfe00-3d73-11ee-ac96-dac502259ad0.jpg

11、打開串口按鈕回調(diào)函數(shù)編寫:

CString portnums = _T("0");//定義串口編號,默認(rèn)值串口編號為0

void Cport_demonstrationDlg::OnBnClickedBottonOpen()

{

// TODO: 在此添加控件通知處理程序代碼

Edit.GetWindowText(portnums);//獲取編輯框中的串口編號

int flag = _ttoi(portnums);//將其轉(zhuǎn)化為數(shù)值類型

if (flag)//如果輸入的串口編號為正整數(shù),才執(zhí)行下列命令

{

if (m_mscomm.get_PortOpen())

{

m_mscomm.put_PortOpen(FALSE);

}

m_mscomm.put_CommPort(flag); //選擇COM

m_mscomm.put_InBufferSize(1024); //接收緩沖區(qū)

m_mscomm.put_OutBufferSize(1024);//發(fā)送緩沖區(qū)

m_mscomm.put_InputLen(0);//設(shè)置當(dāng)前接收區(qū)數(shù)據(jù)長度為0,表示全部讀取

m_mscomm.put_InputMode(1);//以二進(jìn)制方式讀寫數(shù)據(jù)

m_mscomm.put_RThreshold(1);//接收緩沖區(qū)有1個(gè)及1個(gè)以上字符時(shí),將引發(fā)接收數(shù)據(jù)的OnComm

m_mscomm.put_Settings(_T("9600,n,8,1"));//波特率9600無檢驗(yàn)位,8個(gè)數(shù)據(jù)位,1個(gè)停止位

if (!m_mscomm.get_PortOpen())//如果串口沒有打開則打開

{

m_mscomm.put_PortOpen(TRUE);//打開串口

AfxMessageBox(_T("串口打開成功"));

}

else

{

m_mscomm.put_OutBufferCount(0);

AfxMessageBox(_T("串口打開失敗"));

}

}

else

{

AfxMessageBox(_T("請先輸入需要打開串口編號"));

}

}

12、關(guān)閉按鈕回調(diào)函數(shù)編寫:

void Cport_demonstrationDlg::OnBnClickedBottonClose()

{

// TODO: 在此添加控件通知處理程序代碼

m_mscomm.put_PortOpen(FALSE);//關(guān)閉串口

AfxMessageBox(_T("串口已關(guān)閉"));

}

13、發(fā)送數(shù)據(jù)按鈕回調(diào)函數(shù)實(shí)現(xiàn):

void Cport_demonstrationDlg::OnBnClickedBottonSend()

{

// TODO: 在此添加控件通知處理程序代碼

UpdateData(true); //讀取編輯框內(nèi)容

m_mscomm.put_Output(COleVariant(m_EditSend));//發(fā)送數(shù)據(jù)

m_EditSend.Empty(); //發(fā)送后清空輸入框

UpdateData(false); //更新編輯框內(nèi)容

}

14、接收數(shù)據(jù)按鈕回調(diào)函數(shù)編寫(寫在串口事件處理程序里面):

void Cport_demonstrationDlg::OnCommMscomm1()

{

// TODO: 在此處添加消息處理程序代碼

static unsigned int cnt = 0;

VARIANT variant_inp;

COleSafeArray safearray_inp;

long len, k;

unsigned int data[1024] = { 0 };

byte rxdata[1024]; //設(shè)置 BYTE 數(shù)組

CString strtemp;

if (m_mscomm.get_CommEvent() == 2) //值為 2 表示接收緩沖區(qū)內(nèi)有字符

{

cnt++;

variant_inp = m_mscomm.get_Input(); //讀緩沖區(qū)消息

safearray_inp = variant_inp; ///變量轉(zhuǎn)換

len = safearray_inp.GetOneDimSize(); //得到有效的數(shù)據(jù)長度

for (k = 0; k

{

safearray_inp.GetElement(&k, rxdata + k);

}

for (k = 0; k

{

strtemp.Format(_T("%c"), *(rxdata + k));

m_EditReceive += strtemp;

CString temp = _T(" "); //換行

m_EditReceive += temp;

}

}

UpdateData(FALSE); //更新編輯框內(nèi)容

}

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 文件
    +關(guān)注

    關(guān)注

    1

    文章

    566

    瀏覽量

    24749
  • 串口
    +關(guān)注

    關(guān)注

    14

    文章

    1554

    瀏覽量

    76532
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3787

    瀏覽量

    81060
  • 串口通訊
    +關(guān)注

    關(guān)注

    1

    文章

    260

    瀏覽量

    24933

原文標(biāo)題:在VS2013下編寫基于MSCOMM的MFC串口通訊程序

文章出處:【微信號:愛上PLC,微信公眾號:愛上PLC】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    vs2013上移植ucosii

    學(xué)習(xí)嵌入式操作系統(tǒng),ucosii是很好的入門途徑,但是手頭又沒有硬件怎么辦,我找到了一個(gè)vs2013上移植ucosii的例程,具體工程看附件。我只是搬運(yùn)一,如果有誰運(yùn)行出現(xiàn)問題,可以回復(fù)我。
    發(fā)表于 11-05 21:47

    一個(gè)VS+OpenCV編寫的攝像機(jī)采集圖像的小程序

    這個(gè)程序VS2013編寫的,用OpenCv3.00的平臺,攝像機(jī)是大恒的HV1351UM,只實(shí)現(xiàn)了圖像的采集,并沒有圖像處理的功能在里
    發(fā)表于 03-21 21:07

    64位MATLAB2015a與64位VS2013混合編程

    以及是否需要專業(yè)版或者完整版有什么要求嗎?請問有VS2013的官方版下載地址嗎?我是新手,望各位大神指導(dǎo)一,謝謝啦
    發(fā)表于 08-18 15:20

    VS2010之MFC串口通信的編寫教程

    本帖最后由 lee_st 于 2017-10-31 09:24 編輯 VS2010之MFC串口通信的編寫教程
    發(fā)表于 10-30 17:02

    ucguivs2013上的仿真

    原子老師,各位大俠,大家有沒有用過vs2013仿真過ucgui
    發(fā)表于 04-25 05:53

    基于MSComm32的LabVIEW串口通訊

    基于MSComm32的LabVIEW串口通訊高效易行,串口通訊程序中包含子vi:打開
    發(fā)表于 09-05 19:52

    為什么VS2013仿真的代碼板子上運(yùn)行是兩個(gè)結(jié)果?

    為什么 VS2013仿真的代碼板子上運(yùn)行是兩個(gè)結(jié)果
    發(fā)表于 09-25 04:35

    請問有VS2013軟件的下載地址嗎?

    誰有VS2013軟件的下載地址
    發(fā)表于 04-01 04:38

    請問GUIBuilder生成的文件VS2013上無法仿真怎么解決?

    ,無法打開,而在GUIBuilder生成的.c文件中可以打開,請問這是為什么?還是VS2013不能這么用?之后將主函數(shù)直接放到GUIBuilder生成的.c文件中,編譯通過,但在打開虛擬機(jī)是黑屏顯示,沒有反應(yīng),請問這是為什么?我開發(fā)板上測試以上兩種情況沒有問題
    發(fā)表于 04-28 01:59

    VS2010之MFC串口通信的編寫教程

    VS2010之MFC串口通信的編寫教程
    發(fā)表于 03-02 11:22

    VC基于MSCOMM控件串口通訊

    mfc 中進(jìn)行串口通訊最簡單的方法莫過于在對話框中使用MSCOMM 控件了,MSComm 通信
    發(fā)表于 03-08 14:52 ?84次下載

    mscomm32控件

    運(yùn)用mscomm可以進(jìn)行計(jì)算機(jī)通信,vs中的MFC工程中可以調(diào)用,但是需要注冊
    發(fā)表于 07-25 17:45 ?14次下載

    如何使用VS2013做C語言編譯器的創(chuàng)建方法詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何使用VS2013做C語言編譯器的創(chuàng)建方法詳細(xì)資料說明。前言,C語言是一個(gè) 歷史悠久的計(jì)算器編程語言,幾十年的發(fā)展,現(xiàn)在任然經(jīng)久不衰。有很多C語言編譯器。這里介紹用強(qiáng)大的VS2013 做C編譯器學(xué)習(xí)C語言 方便快捷。
    發(fā)表于 11-06 16:18 ?8次下載
    如何使用<b class='flag-5'>VS2013</b>做C語言編譯器的創(chuàng)建方法詳細(xì)資料說明

    VS2013 MFC基于對話框編程系列的19個(gè)程序資料免費(fèi)下載

    VS2013 作為最新版的 Visual studio,界面和功能上相比之前的版本有了較大的改善和提高, MFC 作為集成 API 的簡單版更適合編程開發(fā),許多應(yīng)用軟件都是基于對話框的,這里就介紹一如何在
    發(fā)表于 03-05 08:00 ?12次下載
    <b class='flag-5'>VS2013</b> <b class='flag-5'>MFC</b>基于對話框編程系列的19個(gè)<b class='flag-5'>程序</b>資料免費(fèi)下載

    實(shí)現(xiàn)win10基于VS2015的串口開發(fā)

    都是心酸淚,既然之前的工程不能用,那就重新來吧,首先想到了Mscomm控件。下面把它的步驟簡要說明MFC添加串口Mscomm控件 1.
    的頭像 發(fā)表于 03-12 16:00 ?2861次閱讀
    實(shí)現(xiàn)win10<b class='flag-5'>下</b>基于<b class='flag-5'>VS</b>2015的<b class='flag-5'>串口</b>開發(fā)