電子發燒友網 > 控制/MCU > 正文

MSComm控件實現單片機與PC機的串口通信

2020年07月14日 10:50 ? 次閱讀

  本文主要利用MSComm控件實現單片機與PC機的串口通信,重點是軟件部分的設計。采用VC++ 6.0軟件開發平臺,利用MFC編程的思想方法,建立友好的人機交互界面。PC機向單片機發送信號,將單片機接收到信號后向PC機返回的數據在界面中實現動態顯示、保存等。該系統具有操作簡單,實用性強,可視化程度高等優點,為以后的軟件設計打下了一定的基礎。

  1.引言

  在眾多集成可視化開發環境中,VisualC++是編程環境的最佳選擇,VC++應用程序的開發主要有兩種模式,一種是WIN API方式,另一種是MFC方式,傳統的WIN API方式比較繁瑣,而MFC是對WIN API再次封裝,MFC相對于WIN API開發更具備效率優勢,開發者只要在局部做簡單地修改,即可處理大部分窗口事物。MFC封裝了200多個類并且提供了友好的界面環境,具有類管理靈活方便、代碼編寫和界面設計集成交互操作、可移植性強等優點,與各種數學手段和數據處理、分析算法相結合還可以實現海量數據分析,智能、快速、靈活數據處理,使便攜現場檢測儀器功能強,靈活度高,速度快,擴展性好。

  串口通信具有連續簡單、使用靈活方便、數據傳遞可靠等優點,在數據采集系統、監控系統和通信系統中,得到廣泛的應用。在Win32下,用來實現串口通信的編程方式有兩種:其一可以調用Windows的API函數,其二可以使用ActiveX控件。調用Windows提供的API函數,可以實現用戶自定義功能,自由度高,缺點是這種方法編寫復雜,需要清楚地掌握串口通信機制;使用AcTIveX控件可以屏蔽底層的通信協議,只需對控件的屬性進行設置并添加響應的響應處理函數即可實現串口通信中的數據收發,缺點是不支持用戶對屬性的修改,只能使用控件提供的功能,在使用時有一定限制本文要實現RS232協議的串口通信,采用AcTIveX控件即可滿足需求。

  2.通信原理

  PC機給單片機發送一個55(發其他的數據單片機不響應),單片機通過串口將返回三個數據傳給PC:第一個是AA(作為數據包開包的用的);第二個數據是一個隨機數,第三個數據時EE(作為數據包結束的標志)。

  點擊接收數據就會在PC機上以16進制、ASCII碼、10進制方式顯示出來。指示燈LED:紅色的是電源燈,單片機處于待機狀態時:綠燈亮,黃燈不亮;到單片機收到55數據時,單片機要返回數據的過程中:綠燈亮,黃燈會一閃(指示在發送數據)。

  3.硬件

  單片機和PC機的波特率都設置為9600kbps.上位機的串口是COMl,其電平是RS232電平,而下位機的電平是T T L電平,所以需要電平轉換芯片MAX3232進行電平轉換,實現PC機和單片機的通信。在MAX3232芯片上,選用其中一路發送/接收,R20UT接PIC16f877的RX,T2IN接PIC16f877的TX,T20UT接PC機的RD,R2IN接PC機的TD,這樣就能實現單片機與計算機互聯通信。圖1為單片機與PC的連接示意圖。

  MSComm控件實現單片機與PC機的串口通信

  4.軟件

  MSComm通信控件是最常用的AcTIveX串口控件之一,它提供了一系列標準協議的通信接口,可以連接到其他通信設備(如單片機,以及本系統使用的FPGA),而且在VC++、VB等語言中使用[8]。通過建立串行通信,完成命令發送、數據發送/接收、監視和響應在通信過程中可能發生的各種事件和錯誤。本文選用MSComm控件采用事件驅動機制。一般情況下,事件發生時將產生通知,MSComm控件提供的OnComm事件可以用來捕獲并處理這些通信事件。可以通過在OnComm事件處理函數中加入讀取串口程序代碼和處理數據代碼來提高程序響應度及可靠性。圖2為本文設計的軟件界面。

  MSComm控件實現單片機與PC機的串口通信

  (1)建立應用工程

  啟動VC++6.0,新建工程名為“TEST”

  的對話框應用程序,這時在Resource View的Dialog樹狀文件夾中會自動生成IDD_TEST_DIALOG對話框。

  (2)在當前的Workspace中插入MSComm控件

  選擇Project菜單下Add to Project子菜單中的Components and Controls選項,在彈出的對話框中雙擊R e g i s t e r e dA c t i v e X C o n t r o l s項,選擇M i c r o s o f tCommunicaTIons Control version 6.0,單擊insert按鈕即可將通信控件插入該工程,這時添加了類CMSComm及相應文件:MSComm.h和MSComm.cpp.

  (3)添加MSComm控件

  在I D D _ T E S T _ D I A L O G對話框內添加MSComm控件,通過class wizard添加成員變量m_Com.

  (4)串口初始化

  在初始化對話框進行串口初始化,包括端口號、波特率、輸入方式等。

  (5)捕捉串口事件

  雙擊I D D _ T E S T _ D I A L O G對話框內的MSComm控件,這時在TESTDlg.h中,添加了TESTDlg類消息響應、在TESTDlg.cpp中映射了MSComm控件事件。

  (6)串口讀寫

  當用戶輸入“55”后,使用函數Set-Output()向串口寫入數據,點擊“手動發送”按鈕,點擊一次發送一次。點擊“自動發送”按鈕,則設置一個Timer定時,1s發送一次。

  MSComm控件實現單片機與PC機的串口通信

  在進行讀操作時,當接收緩沖區有數據時,使用GetInput()將緩沖區的數據保存到COleSafeArray類型的變量里,以便后續的數據處理。

  (7)存儲數據

  使用MFC提供的文件操作,將數據保存在TestData.txt文本文件中。CStdioFile是CFile的派生類,適用于文本文件的讀寫,可以按行讀取寫入。同時在文件寫入數據之前寫入本次保存數據的時間,為數據的正確保存提供保障。如圖3所示。

  MSComm控件實現單片機與PC機的串口通信

  5.程序測試及結果

  程序測試過程中,首先利用串口調試助手進行演示,確保單片機能正常工作,串口可以自由接收和發送。然后使用本文設計的軟件實現數據的發送顯示,結果如圖2所示。

  6.結論

  本文利用VC++6.0中的MSComm控件便捷地實現了PC機與單片機之間的串口通信,顯示了ActiveX技術充分的靈活性和易用性。

  在Windows環境下開發上位機的串口通信程序,軟件界面友好,操作簡單,軟件設計簡單可靠,降低了工作量,準確、有效地實現了數據的采集顯示保存。

下載發燒友APP

打造屬于您的人脈電子圈

關注電子發燒友微信

有趣有料的資訊及技術干貨

關注發燒友課堂

鎖定最新課程活動及技術直播

電子發燒友觀察

一線報道 · 深度觀察 · 最新資訊
收藏 人收藏
分享:

評論

相關推薦

【第三場】八周訓練營直播-Labview-io卡/串口/網口/軟件框架串講

主題簡介及亮點:labview io卡,串口,網口,軟件框架串講 直播大綱:1.labview串口講解2.la
發燒友學院發表于 2019-07-08 00:00? 1891次閱讀
【第三場】八周訓練營直播-Labview-io卡/串口/網口/軟件框架串講

單片機怎么進行供電

用4節1.5V電池供電,然后在輸出端加一個普通的二極管,這樣的話,出來的電壓應該是5.2V左右,單片....
發表于 2020-07-14 11:30? 6次閱讀
單片機怎么進行供電

MCS-51的引腳功能說明

MCS-51是標準的40引腳雙列直插式集成電路芯片,引腳排列請參見圖
發表于 2020-07-14 11:24? 7次閱讀
MCS-51的引腳功能說明

單片機C語言延時程序的注意事項

標準的C語言中沒有空語句。但在單片機的C語言編程中,經常需要用幾個空指令產生短延時的效果。這在匯編語....
發表于 2020-07-14 11:13? 4次閱讀
單片機C語言延時程序的注意事項

單片機C語言代碼編寫技巧

下面發一些我在網上看到的單片機C語言代碼編寫技巧和自己的一些經驗來和大家分享;
發表于 2020-07-14 11:02? 6次閱讀
單片機C語言代碼編寫技巧

基于AT89S51單片機的SPI與線陣CCD接口...

電荷耦合器件CCD(chargecoupleddevice)是一種將光信號轉換成電信號的圖象傳感器,....
發表于 2020-07-14 10:54? 7次閱讀
基于AT89S51單片機的SPI與線陣CCD接口...

串口導致單片機死機的四個原因

.USB轉串口線質量不好,或是驅動不良,或是此設備在win7 64位機上工作不正常。
發表于 2020-07-14 10:48? 10次閱讀
串口導致單片機死機的四個原因

如何檢測單片機是否正常工作

 單片機是指一個集成在一塊芯片上的完整計算機系統,滲透到我們生活的各個方面,本文主要介紹了檢測一個單....
發表于 2020-07-14 10:44? 8次閱讀
如何檢測單片機是否正常工作

為什么選用AVR單片機來學習單片機

電子技術的迅猛發展,尤其單片機更廣泛地應用于軍事、工業、家用電器、智能玩具、便攜式智能儀表等領域,使....
發表于 2020-07-14 10:17? 16次閱讀
為什么選用AVR單片機來學習單片機

單片機的仿真軟件

Multisim有超強板級的模擬/數字電路板的設計工作。它包含了電路原理圖的圖形輸入、電路硬件描述語....
發表于 2020-07-14 10:14? 8次閱讀
單片機的仿真軟件

收一個myrio ,2000以下,成色無所謂

留個聯系方式,或者私信
發表于 2020-07-13 22:28? 17次閱讀
收一個myrio ,2000以下,成色無所謂

單片機數碼管顯示

大一學生,正在學單片機,可以有大佬解答一下,這兩種數碼管顯示方法有什么區別嗎?各自的優劣在哪里? /***********...
發表于 2020-07-13 21:52? 29次閱讀
單片機數碼管顯示

單片機驅動多個LED指示燈IO口不夠的解決方法說...

有時使用單片機需要驅動多個LED指示燈時,發現IO口不夠用,換多引腳單片機成本又不允許,那有沒有盡可....
發表于 2020-07-13 17:29? 69次閱讀
單片機驅動多個LED指示燈IO口不夠的解決方法說...

STM32單片機擴展下的IPUS SQPI PS...

PSRAM就是偽SRAM,內部的內存顆粒跟SDRAM的顆粒比較相似,但外部的接口跟SDRAM不同,不....
發表于 2020-07-13 14:45? 25次閱讀
STM32單片機擴展下的IPUS SQPI PS...

請問單片機可以diy哪些有趣的東西?

之前計算器,用到了單片機,現在覺得單片機是個很有意思的東西。想學習一下并且假期試著做點兒小玩意兒,但一時又想不...
發表于 2020-07-13 10:40? 16次閱讀
請問單片機可以diy哪些有趣的東西?

nrf24l01和esp8266這個WiFi模塊能通過單片機控制進行通信嗎?

如題,我手上這2個WiFi模塊只有這2個,我需要使2臺單片機無線通信,就傳一些些字符之類的小數據...
發表于 2020-07-13 10:35? 12次閱讀
nrf24l01和esp8266這個WiFi模塊能通過單片機控制進行通信嗎?

LCD1602驅動為什么把字符代碼寫入DDRAM...

一般來說,LCD1602有16條引腳,據說還有14條引腳的,與16腳的相比缺少了背光電源A(15腳)....
發表于 2020-07-13 10:06? 49次閱讀
LCD1602驅動為什么把字符代碼寫入DDRAM...

分享 郭天祥 十天學會C語言和51單片機視頻教程+代碼

郭天祥 郭天祥 十天學會C語言和51單片機 詳細教程源碼 回復可得 鏈接:https://pan.baidu.com/s/1uWWpG-o_EV...
發表于 2020-07-12 21:31? 86次閱讀
分享 郭天祥 十天學會C語言和51單片機視頻教程+代碼

多電源供電電路的布局設計需要滿足什么原則

做過電路設計的人都知道,當一個電路存在多組電源供電的時候,需要考慮的問題會很多,最基本的,每一個電源....
發表于 2020-07-12 11:38? 73次閱讀
多電源供電電路的布局設計需要滿足什么原則

plc和單片機的差異

PLC能夠改動程序。如今大有些的單片機(內部帶有FLASH ROM)都能夠在線燒錄程序,更改程序,所....
發表于 2020-07-12 09:49? 82次閱讀
plc和單片機的差異

單片機接連照應時刻核算辦法

接連照應時刻:從外部接連懇求有用(外部接連懇求象征置1)到轉向接連進口地址所需求的照應時刻。每個機器....
發表于 2020-07-12 09:45? 38次閱讀
單片機接連照應時刻核算辦法

單片機矩陣式鍵盤的構造原理及編程方法

矩陣式鍵盤由行線和列線構成,按鍵坐落行、列線的穿插點上,其構造如圖所示。
發表于 2020-07-12 09:40? 50次閱讀
單片機矩陣式鍵盤的構造原理及編程方法

adc0809與單片機聯接電路

ADC0809與MCS-51單片機的聯接如圖9.10所示。電路聯接首要觸及兩個疑問。一是8路仿照信號....
發表于 2020-07-12 09:32? 26次閱讀
adc0809與單片機聯接電路

51單片機入門點亮LED

51單片機入門點亮發光二極管
發表于 2020-07-12 09:24? 60次閱讀
51單片機入門點亮LED

單片機按鍵復位電路的原理

51單片機要復位只需求在第9引腳接個高電平繼續2us就能夠完結,那這個進程是怎樣完結的呢?在單片機體....
發表于 2020-07-12 09:17? 53次閱讀
單片機按鍵復位電路的原理

單片機最小體系電路原理及封裝說明

單片機最小體系,也叫做單片機最小運用體系,是指用起碼的原件構成單片機能夠作業的體系。單片機最小體系的....
發表于 2020-07-12 09:14? 49次閱讀
單片機最小體系電路原理及封裝說明

51單片機概述

單片機的指令按字節可分為單字節(1個機器周期)、雙字節(2個機器周期)、三字節指令(3個機器周期),....
發表于 2020-07-10 17:44? 88次閱讀
51單片機概述

基于LabVIEW和MCS-51單片機實現數據采...

LabVIEW提供了功能強大的VISA庫。VISA(Virtual Instrument Softw....
發表于 2020-07-10 17:31? 52次閱讀
基于LabVIEW和MCS-51單片機實現數據采...

接口芯片Webchip PS200的結構與原理

如今,各類MCU已經廣泛地應用于家用電器中。由于嵌入式微控制器MCU(或稱之為單片機)都嵌入在有關的....
發表于 2020-07-10 17:29? 229次閱讀
接口芯片Webchip PS200的結構與原理

走進USB發展史,了解USB特性

把USB Universal Serial Bus的全稱翻譯成中文叫通用串行總線太難了,USB的功能....
發表于 2020-07-10 17:18? 48次閱讀
走進USB發展史,了解USB特性

利用LabVIEW開發平臺和單片機實現集成芯片測...

根據多年數字電路教學和實驗方面的經驗,學生在不熟悉芯片性能,缺乏對芯片邏輯和時序關系的感性認識的前提....
發表于 2020-07-10 16:59? 56次閱讀
利用LabVIEW開發平臺和單片機實現集成芯片測...

以HT單片機為控制核心的步進電機驅動方案

  1、概述:本文描述了一種以HT單片機為控制核心的步進電機驅動方案。可以控制步進電機的轉速及轉向。   2、簡...
發表于 2020-07-10 16:40? 141次閱讀
以HT單片機為控制核心的步進電機驅動方案

IPUS SQPI PSRAM為STM32單片機提供RAM擴展方案

IoT設備的增長引發了對內存技術的新興趣,IPUS 自成立以來,已向市場推出了具有SPI和/或QSPI(Quad SP...
發表于 2020-07-10 16:11? 1010次閱讀
IPUS SQPI PSRAM為STM32單片機提供RAM擴展方案

基于單片機的高效率數字電源設計資料(方案、原理圖)

使用RX62T單片機設計的高效率數字電源 采用瑞薩高性能32-bit MCU RX62T ( 100MHz主頻,165DMIPS)實...
發表于 2020-07-10 15:47? 738次閱讀
基于單片機的高效率數字電源設計資料(方案、原理圖)

MCU單片機通過SPI可實現數據的快速存取

隨著MCU單片機主頻越來越高,處理能力越來越強大,需要的RAM資源相應增加,單片上SRAM采用6T結....
發表于 2020-07-10 14:35? 53次閱讀
MCU單片機通過SPI可實現數據的快速存取

單鍵實現單片機開關機設計案例

單片機工作后,將最先進行IO口初始化,IO1設為輸入狀態,啟用內部上拉;IO2設為輸出狀態,輸出高電....
發表于 2020-07-10 11:42? 185次閱讀
單鍵實現單片機開關機設計案例

關于單片機的復位電路方案

單片機在牢靠的復位往后,才會從0000H地址初步有序的施行運用程序。一同,復位電路也是簡略遭到外部噪....
發表于 2020-07-10 10:46? 61次閱讀
關于單片機的復位電路方案

單片機的作業進程說明

單片機主動結束賦予它的使命的進程,也便是單片機施行程序的進程,即一條條施行的指令的進程,所謂指令便是....
發表于 2020-07-10 10:37? 44次閱讀
單片機的作業進程說明

如何看懂單片機的時序圖

 先說“次第疑問”,這個相對簡略一些。咱們在學 UART 串口通訊的時分,先 1 位開端位,再 8 ....
發表于 2020-07-10 10:28? 64次閱讀
如何看懂單片機的時序圖

單片機在按鍵實習運用中碰到的疑問及處理

 單片機在工業操控中運用十分的廣泛,如單片機化的電氣傳動及操控體系中,單片機恰當于體系中的一個零部件....
發表于 2020-07-10 10:26? 55次閱讀
單片機在按鍵實習運用中碰到的疑問及處理

單片機操控直流電流的的正回轉程序

本程序能經過按鍵操控直流電流的的正回轉,按鍵的端口界說直接看程序的界說有些。
發表于 2020-07-10 10:23? 29次閱讀
單片機操控直流電流的的正回轉程序

STC單片機開發的注意事項

程序無法下載進MCU,或許犯錯的本地有:假定預備條件充沛(驅動程序設備成功STC_ISP.EXE設備....
發表于 2020-07-10 10:21? 49次閱讀
STC單片機開發的注意事項

單片機學習筆記,三個步驟教你學

作為一名電子技術從業人員,你學過單片機嗎?你會運用單片機嗎?我想你一定學過,但不一定會運用。因為學習單片機比學...
發表于 2020-07-10 10:20? 815次閱讀
單片機學習筆記,三個步驟教你學

單片機如何接收編碼器發送的信號

旋轉編碼器是用來測量角度的裝置,其分為單路輸出和雙路輸出兩種,通過這兩種脈沖輸出可以測量轉速及判斷旋....
發表于 2020-07-10 10:19? 47次閱讀
單片機如何接收編碼器發送的信號

單片機部隊掃描鍵盤程序說明

在鍵盤中按鍵數量較多時,為了削減I/O口的占用,一般將按鍵擺放成矩陣方法,如圖1所示。在矩陣式鍵盤中....
發表于 2020-07-10 10:12? 34次閱讀
單片機部隊掃描鍵盤程序說明

單片機燒錄程序的方法步驟

怎么給單片機燒錄程序?單片機keil程序燒錄教程
發表于 2020-07-10 10:06? 51次閱讀
單片機燒錄程序的方法步驟

單片機靜態辦法點亮數碼管電路圖解

電路只驅動一個數碼管,該數碼管為共陰管,公共端接地,段管直連到單片機的P2口,所用單片機為AT89C....
發表于 2020-07-10 10:02? 48次閱讀
單片機靜態辦法點亮數碼管電路圖解

如何構建單片機的最小體系

在了解原理之前, 首要讓咱們考慮一個疑問,啥是單片機, 單片機有啥用? 這是一個有意思的疑問,因為任....
發表于 2020-07-10 09:57? 26次閱讀
如何構建單片機的最小體系

單片機串行口中止程序說明

當單片機接納到一幀數據后,RI會置1,向CPU懇求中止,若之前有中止容許,則發作了中止,進入中止效勞....
發表于 2020-07-10 09:51? 27次閱讀
單片機串行口中止程序說明

單片機常用的調試接口有哪些

搞嵌入式開發和ARM開發搞了半輩子了,調試程序是不可避免的。接觸了那么多的調試規范、調試工具、調試手....
發表于 2020-07-10 09:12? 61次閱讀
單片機常用的調試接口有哪些

國產MCU推出性價比王,世界第一顆32位MCU且...

通過采訪得知該公司在MCU/SOC領域有很多重量級產品量產推出,相信未來在國產MCU/SOC領域中航....
發表于 2020-07-09 17:02? 453次閱讀
國產MCU推出性價比王,世界第一顆32位MCU且...

可以實現把串口助手接收到的數據發送給其他串口的功能嗎

場景如下:串口1連接單片機A,A發送給串口1一組數據,希望實現串口1發送此數據給PC上另一存在的串口2,串口2可以接...
發表于 2020-07-09 16:19? 354次閱讀
可以實現把串口助手接收到的數據發送給其他串口的功能嗎

單片機、ARM、DSP與CPU它們之間的區別是什...

你知道嗎其實單片機、ARM、DSP都是屬于CPU嗎?它們之間到底有什么區別呢?就這個問題下面就讓成都....
發表于 2020-07-09 15:25? 90次閱讀
單片機、ARM、DSP與CPU它們之間的區別是什...

了解I2C總線的功能和特點

讀操作有三種基本操作:當前地址讀、隨機讀和順序讀。三種操作方法類似,只是讀的數據個數不同,可連續讀8....
發表于 2020-07-09 14:50? 65次閱讀
了解I2C總線的功能和特點

ADC支持采樣頻率受供電電壓影響

STM32 ADC:STM32 12位ADC是逐次逼近型的模數轉換器。它有多達19個多路復用通道,允....
發表于 2020-07-09 14:32? 55次閱讀
ADC支持采樣頻率受供電電壓影響

單片機開發串口是應用最為廣泛的通信接口

通用同步收發器(USART)是一種串行接口設備,可以對其進行編程以進行異步或同步通信。
發表于 2020-07-08 11:21? 92次閱讀
單片機開發串口是應用最為廣泛的通信接口

數字濾波算法克服隨機干擾的誤差具有哪些優點?

由上式可以看出,本次濾波的輸出值主要取決于上次濾波的輸出值(注意不是上次的采樣值,這和加權平均濾波是....
發表于 2020-07-08 11:13? 104次閱讀
數字濾波算法克服隨機干擾的誤差具有哪些優點?

單片機和PLC之間有什么區別?

單片機的特點是編程、維護相對復雜,編程方式常用C語言或者匯編語言,成本較低,I/O接口相對有限。
發表于 2020-07-08 11:00? 202次閱讀
單片機和PLC之間有什么區別?
国产成 人 亚洲 欧美