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

基于Qt的飛行器通用上位機軟件設計

2017-06-05 11:55:24呂偉龍向豪楊雨昕
電子技術與軟件工程 2017年7期

呂偉龍+向豪+楊雨昕

摘 要 針對飛行器上位機控制器的應用需求,設計了一個適用于桌面、移動端、嵌入式平臺等的跨平臺飛行器上位機軟件。本系統基于Qt5.5框架,運用C++語言編寫出主程序,在Qt框架中調用百度地圖,實現飛行器的路徑規劃與顯示;采用JSON格式自定義的通信協議,實現上、下位機的數據交換和上位機的命令發布。另外,本文還詳細討論了通信時的界面控制邏輯與飛行器安全飛行的控制方案。

【關鍵詞】多旋翼飛行器 上位機 圖形視圖框架 數據傳輸協議

Qt是一個由Trolltech公司開發的,為桌面,移動端,嵌入式設計的跨平臺的應用程序框架,支持包括Linux,OS X,Windows,VxWorks,QNX,Android,iOS,BlackBerry,Sailfish OS等平臺。Qt本身不是一種編程語言,它是一個用C++寫的框架。預處理器(MOC元對象編譯器)被用于利用某些特征(例如信號和槽)來拓展C++語言。在編譯步驟中,MOC解析用Qt擴展的C++源文件并從中生成符合標準的C++的源文件。因此框架本身和應用程序/庫使用它可以通過任何符合標準的C++編譯器例如Clang,GCC,ICC,MinGW和MSVC。

多旋翼飛行器由于其能夠垂直起降,并且具有機動靈活的特點,不僅廣泛應用于軍事、農業、商業等領域,而且近些年逐漸進入大眾的視野里,成為普通百姓也能購買、操作的機械“玩具”。但由于多旋翼飛行器的旋翼轉速極快,如果誤操作或者飛行器失控很容易發生危險;市面上也很少有能夠支持多品牌、多種多旋翼飛行器的上位機程序。為了解決這些問題,本文基于Qt平臺設計了一種控制簡單、操作安全、用戶體驗較好的通用飛行器上位機系統。

1 通信原理介紹

1.1 數據傳輸系統

本文采用的是一個主從式的數據傳輸系統。主設備(上位機)先對數據進行處理,然后再向從設備(下位機)發送所要執行的命令;從設備接收到數據后分析是哪種命令,接著發送已接收到的信號和相關的信息給主設備;主設備接收到從設備已接收的信號后,開始重復第一步,依次循環。數據傳輸系統的流程圖如圖1所示。

1.2 數據傳輸協議

本文采用的通信協議利用的是輕量級數據交換格式JSON,具體交換內容如表1所示。

2 上位機軟件設計

上位機軟件的主要功能結構圖如圖2所示。

采用Qt框架,C++語言實現的上位機軟件,主要包括以下窗口:

2.1 設置窗口

主要實現通信前對各種相關數據的設置和路徑規劃,同時也將相關信息在窗口中顯示給用戶,主要包括以下界面:

2.1.1 基本設置界面

主要實現對通信所需的各個數據的初始化和電量顯示,主要包括以下功能(界面如圖3所示):

(1)串口設置:通過調用Qt的

串口庫來對串口的幾個參數(串口號,波特率,數據位,停止位,校驗位,流控)進行設置,用戶可以在設置好參數后,點擊打開串口按鈕開始通信。

(2)安全相關提示設置:可在次部分對失控行為,低電量、超低電量提示進行設置,也可以在次部分看到電池電量,保證飛行器的安全。

2.1.2 路徑設置界面

主要實現在開始任務前對飛行路徑的設置,主要包括以下功能(界面如圖4所示):

(1)地圖顯示:通過調用Qt的庫加載在線地圖,地圖里包括操作手當前位置、飛行器當前位置和飛行器的行動軌跡。

(2)飛行路徑設置:用戶可以通過點擊地圖來規劃飛行器的飛行軌跡,也可以按下旁邊的刪除一個/刪除全部按鈕來對之前點擊的軌跡進行修改,主要通過修改.html的代碼實現。

2.2 控制窗口

主要實現通信時對各種相關部件的控制,同時也將相關信息在窗口中顯示給用戶,主要包括以下功能(界面如圖5所示):

(1)云臺控制:用戶可以通過點擊其中的按鈕,來改變云臺的狀態(光圈,變倍,焦距,方向)并保存至本地,每次交換數據結束后自動清空此類數據。

(2)任務指令發布:提供8個指令方便用戶操控飛行器,當用戶點擊按鈕后,根據用戶所要發布的指令,讀取相關本地數據,自動構成一個符合JSON要求的字符串并通過串口發送出去。

(3)高度速度控制:用戶可以通過滑動控件來改變飛行器的高度和速度。

(4)相關信息顯示:在每次交換信息之后,將新傳來的關鍵數據顯示出來,方便用戶在控制飛行器時實時的獲取飛行器的關鍵信息。

3 關鍵技術的實現

3.1 地圖的導入和交互

要想在Qt框架中導入百度地圖,首先要到百度地圖API官網上注冊一個密鑰,可在通過其網站自動生成一個在線地圖的.html文件,也可自己編寫;然后在Qt設計師界面創建一個QWebView的控件,再將QWebView控件中URL選項填入之前生成的.html文件地址,注意要調用此控件的前提是在.pro文件里添加一行QT +=webkitwidgets;接著可以修改之前的.html文件,通過百度地圖的API,設計適合本系統的顯示內容(如飛行路徑等);最后通過調用庫中的evaluateJavaScript()函數和addToJavaScriptWindowObject()函數完成Qt與地圖的交互。

3.2 通訊數據的轉換和分離

因為本系統調用的是Qt內部的串口庫,所以不需要過多的研究底層的通信和解析方式,通過調用次庫中的write()和readAll()函數可以直觀的用字符串進行通信。我們要做的就是在這個庫的基礎上,設計一個較為簡單直觀的通信協議,方便上、下位機轉換、分離。

3.2.1 數據的轉換

本系統的數據交換量不大,故采用輕量級的數據交換格式JSON。通過Qt內部的JSON庫可以很方便的轉換數據到本地。

3.2.2 數據的分離

因為串口的數據是每隔一段時間全部讀取一次,再加上外界有可能有干擾,由此讀取的數據很有可能丟失或出錯,所以需要對有用的數據進行分離。本系統利用字符‘&和‘|表示一個命令的開頭和結尾,從串口讀取數據后,先將數據存入一個數據緩沖區,再將緩沖區里的數據從頭開始掃,當描掃到第一個‘&后將‘&前的所有數據刪除,再從次位開始掃描,直到出現‘|結束,把中間的數據提出,并轉換為有效的數據;若有2個‘&連續出現,則認為是第一個‘&之后的數據錯誤,將第二個‘&前的所有字符刪除。

3.3 通信時的界面控制邏輯

本系統的操作命令一共有如表1所示的9種,其中前8種為手動發出的命令,它們在軟件中各有一個按鈕可以操控,但是它們的執行有先后次序,例如開始任務命令需要在起飛后才能執行,所以開始命令只能在起飛命令發送并完成后才可以發送。為了防止用戶在發送命令時產生誤操作,也為了用戶能更好的明白本系統的命令執行流程,故在通信過程中,本系統加入了一些限制條件,初始狀態下可按的僅有起飛按鈕,具體如表2。

3.4 飛行器安全飛行的控制方案

由于多旋翼飛行器的旋翼轉速極快,如果誤操作或者飛行器失控很容易發生危險,所以安全性問題是必須要解決的問題。因此,本系統設計了以下幾點在安全性方面的優化:

(1)低電量提示:可以設置在電池處于低于20%電量的時候,上位機軟件跳出提示窗口,提示用戶已低于20%電量。默認開啟。

(2)超低電量提示:可以設置在電池處于低于10%電量的時候,上位機軟件跳出提示窗口,提示用戶已低于10%電量,并終止當前命令,執行失控行為。此時本系統不允許用戶繼續進行操作,用戶只能通過遙控器來操作飛行器。默認開啟。

(3)失控行為設置:本系統中失控行為可設置的一共分為3種,懸停、返航、降落。默認為懸停。

(4)為了防止用戶過快的改變高度/速度使飛行器失控,本系統設置了一個閥值--當用戶一次性改變高度/速度超過10米/10米每秒時,本系統會跳出彈窗提示用戶不能過快的改變高度/速度,并將改變量返回至原值±10。

4 結束語

文中介紹了一種適用于桌面、移動端、嵌入式平臺等的跨平臺飛行器上位機軟件。對如何在Qt中導入地圖以及如何運用Qt框架進行快速開發做了簡單的介紹,詳細的分析了上、下位機的通信原理、飛行器安全飛行的控制方案和通信時的界面控制邏輯。該軟件運用Qt框架大大縮短了軟件開發時間并減小了軟件開發難度。軟件模塊功能分明,易于開發和維護且具有控制簡單,操作安全的特點,適用于大部分廠商開發的飛行器。

參考文獻

[1]黃超.基于Qt的嵌入式GUI的研究與實現[D].吉林大學,2011.

[2]張春艷.基于Qt的嵌入式圖形用戶界面研究與實現[D].大連海事大學,2008.

[3]邢四為.基于JSON的信息交互系統的研究與實現[D].安徽大學,2013.

[4]柯艷,李杰,孔祥雷,劉吉吉.基于USB2.0的多路數據采集系統上位機軟件設計[J].測試技術學報,2010(04):351-356.

[5]孫迪,李沛鴻.百度地圖API在WebGIS中的應用[J].河南科技,2013(22):165-166.

[6]百度開發者中心.百度API介紹.http://lbsyun.baidu.com/.2016.

[7]Qt開發者中心.Qt維基.http://wiki.qt.io/Main.2017.

作者簡介

呂偉龍(1996-),男,江蘇省南京市人。學生,本科大三,研究方向為軟件工程系統分析設計,算法研究等。

向豪(1996-),男,湖北省荊門市人。學生,本科大三。

楊雨昕(1995-),男,江蘇省鎮江市人。學生,本科大三。

作者單位

中南民族大學計算機科學學院 湖北省武漢市 430000

主站蜘蛛池模板: 日本在线亚洲| 国产在线视频欧美亚综合| 日韩人妻无码制服丝袜视频| 亚洲一区二区日韩欧美gif| 97青草最新免费精品视频| 中文字幕无码制服中字| 欧美亚洲日韩中文| 久草网视频在线| 久久精品中文字幕免费| 92精品国产自产在线观看| 欧美国产菊爆免费观看| 鲁鲁鲁爽爽爽在线视频观看| 国产99欧美精品久久精品久久| 国产成人亚洲无吗淙合青草| 99在线观看免费视频| 国产91在线|中文| 久久久久亚洲AV成人网站软件| 精品久久久久久久久久久| 免费一看一级毛片| 全部免费毛片免费播放| 91福利片| 91青草视频| 久久综合婷婷| 成人年鲁鲁在线观看视频| 成人看片欧美一区二区| 色综合狠狠操| 午夜视频日本| 国产亚洲精品97在线观看| 99热这里都是国产精品| 国产精品久久精品| 国产玖玖玖精品视频| 日韩少妇激情一区二区| 2018日日摸夜夜添狠狠躁| 欧美在线中文字幕| 欧美a在线视频| 成年看免费观看视频拍拍| 九九这里只有精品视频| 91 九色视频丝袜| 亚洲人成网站日本片| 中文字幕永久在线看| 色综合成人| 天天综合亚洲| 福利在线不卡| 九色视频在线免费观看| 国产成人精品2021欧美日韩| 亚洲高清资源| 国产极品美女在线| 18禁影院亚洲专区| 五月婷婷精品| 国产区在线看| 国产区网址| 久久久久九九精品影院| 97综合久久| 欧美成人日韩| 青青草一区二区免费精品| 婷婷五月在线| 国产视频你懂得| 中文字幕在线一区二区在线| 福利在线一区| 欧美啪啪网| 亚洲aⅴ天堂| 最新国产在线| 91视频99| 久久99精品久久久久久不卡| 无码国内精品人妻少妇蜜桃视频| 精品伊人久久久香线蕉 | 亚洲网综合| 国产一级毛片网站| 国产91视频免费| 99视频精品全国免费品| 亚洲国产亚洲综合在线尤物| 日韩精品专区免费无码aⅴ| 国产网站免费| 国产在线啪| 国产精品久久久久久久久久久久| 国产白浆视频| 久久人搡人人玩人妻精品一| 久久精品aⅴ无码中文字幕| 午夜福利亚洲精品| 久久亚洲精少妇毛片午夜无码 | 色老二精品视频在线观看| 毛片免费在线视频|