基於MFC串口連續通信的簡易實現

2020-11-24 電子產品世界

摘要 設計了一種在MFC中實現與串口連續通信的簡易方法,利用微軟提供的MSComm控制項,仿照MODBUS-RTU協議,並根據數據包之間的時間間隔T1,將間隔

本文引用地址:http://www.eepw.com.cn/article/201610/306451.htm

串口通信適用於長距離控制與數據傳輸,許多單片機在內部均集成了串口通信模塊,而計算機的作業系統也內嵌有對串口通信的支持。在現代各工業控制和數據傳輸等通信系統領域中,單片機與計算機的串口通信得到了廣泛應用。因此,在Windows作業系統下實現串口通信,開發與單片機通信軟體顯得尤為重要。MFC(Microsoft Foundation Classes),是微軟公司提供的一個類庫(Class Libraries),以C++類的形式封裝了Windows的API,且包含一個應用程式框架,減少了應用程式開發人員的工作量,因此基於VC++的MFC平臺開發串口通信界面程序的方式深受程式設計師青睞。

傳統串口通信軟體採用兩種方法處理連續傳輸的數據包。一種是採用固定字節長度的數據包協議,該方法靈活性差,即使傳輸極少字節的數據也必須使用固定長度的數據包。另一種方法是加入數據包包頭,該方法必須先對接收到的每個字節進行判斷,從而造成了CPU的大量浪費。本文採用微軟的MSComm控制項,設計了一種簡便的方法,有效彌補了以上兩種方法的缺陷。

1 數據包連續串口通信原理

單片機的時鐘頻率遠小於計算機CPU,如常用單片機C8051F02頻率為25 MHz,低於計算機CPU上GHz的處理速度。單片機傳給上位機的數據,每個數據包均獨立反映硬體對上位機的一個響應狀態或硬體處理完的一個任務。因此,單片機連續傳送數據包時,數據包之間存在一定的時間間隔,而每個數據包中相鄰字節是連接傳送的,時間間隔遠小於數據包之間的間隔。

仿照MODBUS-RTU協議,利用數據包之間的時間間隔T作為是否去讀寫串口緩存的判斷依據,其只需滿足以下兩個條件:(1)單獨數據包自身發送時,數據包內部數據字節之間發送時間間隔小於時間T;(2)不同的數據包之間發送時間間隔>T,便可實現從串口緩存中連接讀取接收到的數據包。

2 基於MFC的軟體設計方案

計算機串口通信界面軟體包括串口初始化、Comm事件響應、時間間隔判斷、讀取串口數據和數據處理,其具體流程如圖1所示。

3 軟體代碼實現

打開VS2008軟體開發平臺,新建一個MFC程序,並插入一個MSComm串口控制項。增加了控制項響應函數,數據包時間間隔T此處暫設為20 ms。為調試方便,加入時間溢出標誌m_time_out_flag變量。

m_time_out_flag=0;//時間溢出標誌設為0,表明數據已處理完

為了方便測試,此處添加的數據處理函數是在一個大的編輯框中,將串口接收到的連接數據包全部顯示出來。

4 軟體驗證與結果分析

在單片機開發板中,燒入每隔25 ms向串口發送數據包「Xidian University」的小程序,成功後連接到計算機,並打開編寫的MFC串口通信軟體以及單片機開發板電源,具體效果如圖2所示。

設置時間間隔T為不同的值,相應地修改單片機的數據包發送時間間隔,並在不同CPU型號計算機下進行多次測試,測出結果平均值如表1所示。

從表1中可得出結論,計算機CPU的處理速度越快,數據包長度越短,時間間隔T可設的值也越小。另外,經測試,當數據處理函數變複雜時,最小時間間隔T可設的值也會相應增大。

5 結束語

文中方法,充分利用了數據包內部數據字節間發送時間間隔小,數據包之間發送時間間隔大的特點。採用微軟提供的MSComm控制項,在Comm事件中設置定時器,並根據計算機CPU處理速度、數據包長度、數據處理函數複雜程度,選取適當的T值。當定時器時間T溢出時,讀取並處理串口緩衝區中的數據。由於是根據數據包之間發送的時間間隔T來判斷數據包,所以數據包長度可不固定,也無需對每個數據字節進行判斷,故有效解決了計算機與串口間的連接數據包傳輸處理問題。


相關焦點

  • 基於ZYNQ系列 SoC和AD9361實現的簡易頻譜分析儀
    摘要:頻譜分析儀是用來檢測電信號頻譜特徵的儀器,在通信、雷達以及電子產品研發等領域有著廣泛的應用。本文設計了基於ZYNQ系列SoC(System on chip)和AD9361實現的簡易頻譜分析儀,頻譜數據可以通過串口發送給上位機,並在上位機中通過MATLAB進行數據處理和分析。相比普通頻譜分析儀,該簡易頻譜分析儀使用便捷,體積小,且十分便於功能擴展。
  • 基於單片機的簡易多通道虛擬示波器的設計
    通過PC機上虛擬儀器平臺LabVIEW開發的上位機軟體對波形進行顯示和處理,從而達到簡易虛擬示波器的效果。本文引用地址:http://www.eepw.com.cn/article/201611/323627.htm  1 簡易多通道虛擬示波器系統的設計  簡易多通道虛擬示波器系統的原理方框圖如圖1所示,數據採集由主控晶片ATmega16進行,採集後的數據通過RS232串口通信晶片Max232將TTL電平轉換為RS232電平,提供與PC機的接口,將數據量傳送給PC機的LabVIEW
  • LabVIEW串口通信的一個例子-串口"示波器"
    很早就想做一個類似的東西了,正好這學期學了LabVIEW,作業就交了這個,基於LabVIEW的「串口示波器」上位機。1.程序界面:串口接收程序框圖介紹:當串口狀態為真時,調用串口屬性節點」Bytes at Port」,如果串口緩衝區有X字節的數據就接收X字節的數據。
  • 基於C8051F040單片機的CAN總線和RS-232串口通信設計
    為了實現對CAN總線和RS-232串口雙向通信需求,提出了一種基於C8051F040單片機的數據通信方案,並完成系統設計。分析了CAN總線和RS-232串口的通信特點,介紹了單片機硬體,並對軟體的設計思路與流程做了詳盡描述,完成功能檢測。實驗結果表明,該設計達到了要求。
  • 計算機串口通信基礎
    計算機串口通信基礎 李倩 發表於 2018-07-12 08:08:37 串口通信是非常重要的,首先了解下基礎 計算機串口通信基礎 隨著多微機系統的廣泛應用和計算機網絡技術的普及
  • 淺談硬體串口通信基礎概念
    串口通信(Serial Communication),是指外設和計算機間通過數據信號線、地線等按位進行傳輸數據的一種通信方式,屬於串行通信方式。串口是一種接口標準,它規定了接口的電氣標準,沒有規定接口插件電纜以及使用的協議。
  • 基於樹莓派的多串口多總線伺服器設計
    引言本文引用地址:http://www.eepw.com.cn/article/201609/304386.htm工業控制中,各設備的信號採集和監控只靠串口總線難以實現擴展,要將現場控制網絡和信息網絡相連,就需要解決串口通信協議和網際網路通信協議的轉換問題,即把原有設備轉換為具備網絡接口的外設,這樣可以將傳統串行鏈路上的數據傳輸到信息網絡上,而無需更換原有設備。
  • 基於串口通訊技術實現流量計計量系統的設計
    基於串口通訊技術實現流量計計量系統的設計 佚名 發表於 2020-11-23 09:53:17 一、 引言 地衡計量是企業物資計量的主要手段之一。
  • 串口轉乙太網實現了TCP/IP的嵌入式協議轉換
    串口轉乙太網模塊是嵌入式設備、單片機和物聯網採集系統基於TCP/IP協議接入網絡的一種方便、穩定的解決方案。一端為TTL(UART/RS232/RS485/RS422)串口,另一端可連接RJ45網絡埠。串口通過將數據發送到模塊的TTL級串口,無需更多操作,就可以直接將數據發送到指定的網絡伺服器。那麼串口轉乙太網如何進行通信呢?
  • 簡易多通道虛擬示波器的技術研究
    通過PC機上虛擬儀器平臺LabVIEW開發的上位機軟體對波形進行顯示和處理,從而達到簡易虛擬示波器的效果。本文引用地址:http://www.eepw.com.cn/article/201701/337759.htm  1 簡易多通道虛擬示波器系統的設計  簡易多通道虛擬示波器系統的原理方框圖如圖1所示,數據採集由主控晶片ATmega16進行,採集後的數據通過RS232串口通信晶片Max232將TTL電平轉換為RS232電平,提供與PC機的接口
  • 串口波特率轉換的純軟體實現
    本軟體用Visual Basic軟體編寫,串口用MSCOMM控制項實現。核心功能就是將Mscomm1接收的數據立即送到Mscomm2的發送區。難點在於對16進位數據的轉換處理。If Next Text1 = strData Call hexSend2 發送一個16進位 strData = "" Else Text1 = Text1 & strBuff If MSComm2.PortOpen = False Then MsgBox "請打開串口
  • 什麼是「串口」?
    大多數計算機包含兩個基於RS232的串口。串口同時也是儀器儀表設備通用的通信協議;很多GPIB兼容的設備也帶有RS-232口。同時,串口通信協議也可以用於獲取遠程採集設備的數據。串口通信的概念非常簡單,串口按位(bit)發送和接收字節。儘管比按字節(byte)的並行通信慢,但是串口可以在使用一根線發送數據的同時用另一根線接收數據。
  • 基於軟體無線電的短波通信中頻數位化
    晶片配置時,由於內部控制寄存器大都是32位字長,而uP接口只有8位寬,每個控制字需要連續加載4次才能完成,在此期間,片選線和讀寫線都必須保持有效狀態。一般採用uP埠(接DSP外部數據線)進行晶片配置,而用串口輸出下變頻後的數據,因此接口邏輯相對比較簡單。圖4給出了一種AD6620與TMS320C54x的參考接口方案。其中AD6620串口輸出採用了主機模式,即由AD6620提供串口時鐘和幀同步,DSP通過串口中斷接收數據。
  • 機房常見的串口伺服器有哪些?它的作用是?
    對於串口伺服器,兩個關鍵詞是串口和網絡。網絡分為內網和外網兩種,內網一般指乙太網,外網指Internet,它是進行全球範圍內通信的有效手段。
  • 異步串行通信協議的設計與實現
    串行通信能夠節省傳 輸線,特別是數據位數很多和傳輸距離較遠時,這一優點更 為突出。現在流行的高級語言一般都支持對串口直接操作, 常用的單片機也把串行通訊口作為一個標準接口集成在單片 機內,串行通訊接口的開發具有開發周期短、開發簡單等特 點。目前異步串行通信已廣泛用於微機之間的通信、工業控 制系統中的數據採集與控制、遠程數據的傳送等領域。
  • 中標麒麟作業系統串口調試方法研究
    串口作為一種廣泛應用的計算機接口,計算機對設備進行通信控制幾乎都是通過串口進行的。在中標麒麟作業系統下進行串口調試與Windows不同,本文將介紹兩種中標麒麟作業系統下的串口調試方法。本文引用地址:http://www.eepw.com.cn/article/148103.htm1串口編程在任何作業系統下,串口調試程序的編寫都是按照打開串口設備、初始化串口和串口讀寫操作的步驟進行[2]。1.1打開串口中標麒麟作業系統與Linux系統類似都是基於文件的,把硬體設備都看作文件,對硬體設備進行操作,就是對設備文件的操作[3]。
  • 基於TL431簡易電路實現電壓檢測的方法
    電壓檢測是光纖通信設備必備的功能,是實現設備的掉電警告的信息來源,從而達到上報掉電警告到後臺伺服器或網管,雖然當前有專用的電壓檢測晶片,但隨著通信設備成本下降的迫切壓力,就必須尋找更加低廉且性能穩定的替代電路,那麼使得成本降低,從而提高了產品在國際市場上的競爭力。
  • RS232 RS485 串口 電平標準
    RS485和RS232一樣都是基於串口的通訊接口,數據收發的操作是一致的,但是它們在實際應用中通訊模式卻有著很大的區別,RS232接口為全雙工數據通訊模式,而RS485接口為半雙工數據通訊模式,數據的收發不能同時進行,為了保證數據收發的不衝突,硬體上是通過方向切換來實現的,相應也要求軟體上必須將收發的過程嚴格地分開。
  • 串口通信原理和控制程序
    以USART1為例的串口初始化本文引用地址:http://www.eepw.com.cn/article/201809/391492.htm  本程序調用了STM32自帶的固件庫,工程中具體的文件見下圖:
  • 如何設計及實現基於ARM9的彩色TFT-LCD模塊?
    為了解決圖像等大容量數據在TFT-LCD顯示屏上的應用,本文提出了一種基於ARM9處理器S3C2440X的彩色液晶顯示模塊。模塊能夠實現對字符及彩色RGB格式圖像的顯示,同時還可以顯示JPEG格式的圖像。