999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于QT的串口通信程序設(shè)計

2020-01-18 05:51:56鄭忠楷蔣學(xué)程羅志灶
電子技術(shù)與軟件工程 2019年24期
關(guān)鍵詞:程序

文/鄭忠楷 蔣學(xué)程 羅志灶

Qt是一個跨平臺的C++圖形用戶界面應(yīng)用程序框架。它提供給應(yīng)用程序開發(fā)者建立藝術(shù)級的圖形用戶界面所需的所用功能。Qt是完全面向?qū)ο蟮模苋菀讛U展,并且允許真正地組件編程.由挪威TrollTech公司出品,開放源代碼,完全面向?qū)ο?,模塊化程度高,可重用性好,容易擴展,允許真正的組件編程,提供了信號/槽機制,替代回調(diào)函數(shù),使組件間信號信號傳遞更安全、簡單,應(yīng)用非常廣泛。QT還提供了多個C++類;Qt對各個模塊進行了良好的封裝,使各模塊可重用性較好;優(yōu)良的跨平臺特性,使用Qt類編寫的程序可以實現(xiàn)“一次編碼,到處編譯”,極大的降低了跨平臺開發(fā)的難度;支持Windows,Linux,Solaris,Su-nOS,F(xiàn)reeBSD,BSD/OS,SCO,AIX,OS390,QNX 等操作系統(tǒng),面向?qū)ο蠛苋菀讛U展。Qt 提供了一種稱為signals/slots 的安全類型來替代callback,具有良好的封裝機制,可重用性較好。同時包含近700API類庫,允許真正的組件編程,是一種開源軟件,使用起來簡便且高效,具有良好的可移植性,目前主流的具有移植性的GUIAPI開發(fā)包有miniGUI,Qt,OpenGUI。但是在自動化應(yīng)用程序開發(fā)時,QT忘記提供給應(yīng)用程序開發(fā)者一個很重要的工具—串口類,畢竟大多數(shù)單片機還是使用串口和上位機軟件完成通信的。在MFC/BorlandC的可視化程序開發(fā)工具里有都提供一個標準串口的控件,使我們十分快捷方便的開發(fā)出串口應(yīng)用程序。因此我們有必要討論一下如何在QT Creator下進行串口應(yīng)用程序的開發(fā)。

圖1

1 串行通信簡介

在數(shù)字信號傳輸中只有 “1”和“0”,從電平上而言也就是只有 “高電平”、“低電平”;這些“高電平”、“低電平”如果一塊兒同時在多根導(dǎo)線上傳輸,同時組成1組二進制數(shù),那就是我們所說的并行傳輸;并行傳輸具有同時多個位的特點,但是在遠距離通信、無線通信上;由于物理條件的限制,我們目前還是大量采用串行傳輸;也就是把“1”和“0”逐個排列組成一串有序的序列進行傳輸。因為,從上面所說的可以看出,并行傳輸需要的線材多,不能無線通信,而且關(guān)鍵的一點是 — 多根線材及各自的分布參數(shù)決定了它們的每位延時特性不能完全一致,這在高速數(shù)據(jù)傳輸時是不能繞開的一個大缺點。因此實際應(yīng)用中出現(xiàn)了串行通信方式。

圖2:窗口設(shè)計結(jié)構(gòu)

圖3

1.1 同步串行

采用串行通信時,每一位何時采樣--何時確定它是“1”和“0”就很關(guān)鍵;如果我們在傳輸“1”和“0”的同時傳輸一個時鐘信號,標明它的時間,這樣的串行傳輸我們就把它叫做同步傳輸,常見的有 SPI、I2C等協(xié)議。

圖1為同步串口時序——利用同時傳輸?shù)臅r鐘(下降沿、粗點劃線時刻)確定每位何時采樣——何時確定它是“1”和“0”。

1.2 異步串行

我們也可以預(yù)先約定好——每隔固定的時間間隔傳輸不同的位,利用一個序列的“1”和“0”他們各自所在的時間位置自身來確定它的時間點,這樣的串行傳輸我們就把它叫做異步傳輸,如RS232/RS485協(xié)議,那這樣為了我們在接收端能很好的與發(fā)送端時間一致,我們就要約定一個固定的時間間隔——這就叫做波特率——每秒傳送了多少個位,它的單位是bps(每秒發(fā)送多少位)。 相比于同步串行通信,異步串行通信不需要傳輸同步時鐘,又具有較好的抗干擾能力,這在通信端口有限或者遠距離傳輸時能夠 較好的節(jié)省資源。異步串行通信中非常重要的一點就是波特率的約定,因為異步通信沒有單獨用于傳輸時鐘信號的連接線,收發(fā)端對于每位“1”和“0”占用的時間要有著十分明確的規(guī)定—波特率。同時,在PC上通用異步串行口有著專門的一個地址“串口號”—用來區(qū)分多個UART口,常見的有 “UART0”~ “UART15”。具體每臺計算機的“串口號”分配我們可以從“桌面”-“我的電腦”-“右鍵”-“屬性”-“設(shè)備管理器”-“端口(COM)”中看到。

2 QT下對異步串行口的編程

2.1 文件準備

因為在QT Creator中不像在MFC/BorlandC的可視化程序開發(fā)工具中有現(xiàn)成的API控件可以供異步串口使用,所以我們需要自行準備額外的一些輔助文件,這些文件可以從https://sourceforge.net/projects/qextserialport/files/下載 ;在windoews平臺下需要以下六個文件:qextserialbase.cpp、qextserialbase.h、qextserialport.cpp、qextserialport.h、win_qextserialport.cpp、win_qextserialport.h。下載好文件后把它們統(tǒng)一拷貝到QT即將建立工程的文件夾--即“當前文件夾”下。

2.2 窗體設(shè)計

打開QT Creator選擇新建一個工程,具體可以根據(jù)用戶需要選擇是“窗體應(yīng)用程序”還是“控制臺應(yīng)用程序”。目前我們大多數(shù)情況下選擇開發(fā)“窗體應(yīng)用程序”便于用戶操作。在左側(cè)“項目”的“源文件”和“頭文件”中對應(yīng)添加剛才下載的六個文件,然后再在界面文件“.ui”上添加一個“spinBox”控件 和3個“PushButton”控件 ,分別用于選擇等下將要控制的“串口號”和“打開”、“ 關(guān)閉”串口;以及發(fā)送數(shù)據(jù)。 接著再在窗體上添加“textBrowser”、“ textEdit”兩個控件用于顯示接收到的串口信息和編輯準備發(fā)送的串口信息。如圖2所示。

2.3 程序編寫

隨后我們就可以在主文件 “mainwindow.h”中添加#include "win_qextserialport.h",添加槽函數(shù)聲明 void readMyCom();在主文件中“mainwindow.cpp” 添加對象聲明Win_QextSerialPort *myCom; struct PortSettings myComSetting = {BAUD9600,DATA_8,PAR_NONE,STOP_1,FLOW_OFF,500};修改“打開”按鈕控件的槽函數(shù)了,在其中編寫

//信號和槽函數(shù)關(guān)聯(lián),當串口緩沖區(qū)有數(shù)據(jù)時,進行讀串口操作(如圖3)。

這樣成功打開串口后QT程序會給出一個對話框讓用戶確認打開了“串口7”。

我們可以通過修改myComSetting中的參數(shù)來修改諸如“波特率”、“數(shù)據(jù)位”、“校驗位”、“停止位”、“硬件流控制”、“延時”等等具體的串口參數(shù),以便調(diào)整有關(guān)串口的其他的應(yīng)用程序開發(fā);例如BAUD9600表示波特率設(shè)定為9600,DATA_8表示數(shù)據(jù)位為8位,PAR_NONE表示沒有采用寄偶校驗位,F(xiàn)LOW_OFF表示關(guān)閉硬件流控制,500表示延時500ms。同時, 修改主文件“mainwindow.cpp”中”發(fā)送”按鈕的槽函數(shù)如下:

myCom->write(ui->textEdit->text().toAscii()); //把文本編輯器內(nèi)容發(fā)送到串口

增加主文件“mainwindow.cpp”中一個接收串口消息槽函數(shù)如下:

這樣就可以在接收端顯示接收到的文本信息了。

圖4

圖5

3 上機實驗

右鍵點擊“我的電腦”-“屬性”-“設(shè)備管理器”可以看到如圖4所示界面。

從中我們可以得知計算機上被我們使用“USB-串口”設(shè)備的方式,即通過采用PL2303芯片組的方式添加了2個串口,串口號分別是“COM4”和“COM6”。我們將“COM4”和“COM6”設(shè)備的“TX”線和“RX”線分別互相連接,再在2個應(yīng)用程序中分別打開“COM4”和“COM6”,然后在一個程序的發(fā)送端文本編輯欄輸入想要發(fā)送的文本,點擊“發(fā)送”按鈕,另外一個程序的接收端就得到了以下的結(jié)果;說明程序的串口收發(fā)已經(jīng)實現(xiàn)。我們還可以通過內(nèi)部賦值的方式給發(fā)送端送出其他的數(shù)據(jù),用此方法完成“計算機”-“串口”-“單片機”的上位機和下位機通信。如圖5所示。

4 小結(jié)

本次實驗編程過程簡單,實現(xiàn)方便,粗略實現(xiàn)了PC機的串口編程通信,完成了串口的“串口號選擇”、“串口基本參數(shù)的設(shè)置”、“串口數(shù)據(jù)的收發(fā)”等基本功能,在此基礎(chǔ)之上可以修改適應(yīng)用戶的不同需求,從而實現(xiàn)“計算機”-“串口”-“單片機”的一些常用通信。適合一些“上位機”-“下位機”架構(gòu)的自動化儀器儀表設(shè)備推廣應(yīng)用。

猜你喜歡
程序
給Windows添加程序快速切換欄
電腦愛好者(2020年6期)2020-05-26 09:27:33
試論我國未決羈押程序的立法完善
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
基于VMM的程序行為異常檢測
偵查實驗批準程序初探
我國刑事速裁程序的構(gòu)建
創(chuàng)衛(wèi)暗訪程序有待改進
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 亚洲 日韩 激情 无码 中出| 国产在线第二页| 天天婬欲婬香婬色婬视频播放| 国产91无毒不卡在线观看| 欧美性精品| 香蕉久久永久视频| 欧美精品综合视频一区二区| 波多野结衣中文字幕一区二区| 国产精品高清国产三级囯产AV| 99在线视频精品| 欧美a网站| 亚洲色图在线观看| 久草性视频| 亚洲精品色AV无码看| 久久这里只有精品2| 天堂亚洲网| 欧美日韩北条麻妃一区二区| 婷婷六月综合| 91精品啪在线观看国产| 久久亚洲国产一区二区| 潮喷在线无码白浆| 国产亚洲精品va在线| 九色91在线视频| 久久这里只有精品国产99| 亚洲AV无码乱码在线观看裸奔| 亚洲综合狠狠| 少妇高潮惨叫久久久久久| a欧美在线| m男亚洲一区中文字幕| 伊人五月丁香综合AⅤ| 一本一道波多野结衣av黑人在线| 国产在线精彩视频论坛| a毛片在线| 色综合久久无码网| 国产成人高精品免费视频| 激情六月丁香婷婷| 国产在线视频导航| v天堂中文在线| 欧美在线中文字幕| 9cao视频精品| 成人在线欧美| 久久久久人妻一区精品色奶水| 日韩A∨精品日韩精品无码| 国产欧美日韩视频怡春院| 日韩视频免费| 欧美国产精品不卡在线观看| 青青草a国产免费观看| 日韩在线影院| 91精品啪在线观看国产| 91视频首页| 亚洲伊人天堂| 欧美在线精品一区二区三区| 亚洲无码视频图片| 国产黄在线免费观看| 精品无码国产自产野外拍在线| 巨熟乳波霸若妻中文观看免费| 99久久精品视香蕉蕉| 中文字幕在线不卡视频| 亚洲午夜综合网| 原味小视频在线www国产| 波多野结衣二区| 亚洲人成人伊人成综合网无码| 99久久精品免费视频| 久久久久国产一级毛片高清板| 国产麻豆永久视频| 久久久久九九精品影院| 亚洲精品无码久久久久苍井空| 91亚洲免费视频| 久久综合色视频| 福利视频一区| 亚洲成年人片| 亚洲日本韩在线观看| 99在线视频网站| 国产毛片网站| 波多野结衣久久高清免费| 亚洲综合色婷婷中文字幕| 日韩久草视频| 国产99视频精品免费观看9e| 亚洲天堂免费观看| 欧美亚洲一区二区三区在线| 一本大道东京热无码av| 久久精品午夜视频|