一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

qianyanjishuhui ? 來(lái)源:愛(ài)上PLC ? 2023-08-18 11:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

開(kāi)發(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目錄下,否則后面注冊(cè)會(huì)出錯(cuò)。

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

Regsvr32 C:WINDOWSsystem32MSCOMM32.OCX

注冊(cè)成功如圖所示:

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

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

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

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

7、在電話控件上添加映射變量;完成后, 在工程中會(huì)自動(dòng)生成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、打開(kāi)串口按鈕回調(diào)函數(shù)編寫:

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

void Cport_demonstrationDlg::OnBnClickedBottonOpen()

{

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

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

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

if (flag)//如果輸入的串口編號(hào)為正整數(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ù)長(zhǎng)度為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無(wú)檢驗(yàn)位,8個(gè)數(shù)據(jù)位,1個(gè)停止位

if (!m_mscomm.get_PortOpen())//如果串口沒(méi)有打開(kāi)則打開(kāi)

{

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

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

}

else

{

m_mscomm.put_OutBufferCount(0);

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

}

}

else

{

AfxMessageBox(_T("請(qǐng)先輸入需要打開(kāi)串口編號(hào)"));

}

}

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ù)長(zhǎng)度

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)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 文件
    +關(guān)注

    關(guān)注

    1

    文章

    579

    瀏覽量

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

    關(guān)注

    15

    文章

    1588

    瀏覽量

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

    關(guān)注

    117

    文章

    3826

    瀏覽量

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

    關(guān)注

    1

    文章

    265

    瀏覽量

    25543

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    怎么配置dlp6500二次開(kāi)發(fā)的環(huán)境,可以使用VS2013嗎?

    我想請(qǐng)問(wèn)一,怎么配置dlp6500二次開(kāi)發(fā)的環(huán)境,可以使用VS2013嗎?有沒(méi)有什么可以參考的文件,感謝!
    發(fā)表于 02-28 06:39

    vs2013上移植ucosii

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

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

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

    64位MATLAB2015a與64位VS2013混合編程

    以及是否需要專業(yè)版或者完整版有什么要求嗎?請(qǐng)問(wèn)有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上的仿真

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

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

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

    請(qǐng)問(wèn)有VS2013軟件的下載地址嗎?

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

    請(qǐng)問(wèn)GUIBuilder生成的文件VS2013上無(wú)法仿真怎么解決?

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

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

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

    VC基于MSCOMM控件串口通訊

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

    mscomm32控件

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

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

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

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

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

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

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