亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        呂偉龍+向豪+楊雨昕

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

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

        Qt是一個由Trolltech公司開發(fā)的,為桌面,移動端,嵌入式設計的跨平臺的應用程序框架,支持包括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。

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

        1 通信原理介紹

        1.1 數據傳輸系統(tǒng)

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

        1.2 數據傳輸協議

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

        2 上位機軟件設計

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

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

        2.1 設置窗口

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

        2.1.1 基本設置界面

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

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

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

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

        2.1.2 路徑設置界面

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

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

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

        2.2 控制窗口

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

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

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

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

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

        3 關鍵技術的實現

        3.1 地圖的導入和交互

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

        3.2 通訊數據的轉換和分離

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

        3.2.1 數據的轉換

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

        3.2.2 數據的分離

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

        3.3 通信時的界面控制邏輯

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

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

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

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

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

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

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

        4 結束語

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

        參考文獻

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

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

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

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

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

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

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

        作者簡介

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

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

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

        作者單位

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

        无码超乳爆乳中文字幕| 中文字幕乱码亚洲精品一区| 国产97在线 | 免费| 中文字幕无码日韩欧毛| 三级日本午夜在线观看| 超碰观看| 深夜日韩在线观看视频| 女同同志熟女人妻二区| 国产97色在线 | 国产| 四虎国产精品永久在线国在线| 成人综合网亚洲伊人| 国产精品亚洲综合久久婷婷| 日本一区二区视频免费观看| 人妻少妇精品视中文字幕免费| 小辣椒福利视频导航| 久久夜色撩人精品国产小说 | 久久99精品国产麻豆不卡| 亚洲成人电影在线观看精品国产| 日本一级淫片免费啪啪| 亚洲黄片av在线播放| 卡一卡二卡三无人区| 久久亚洲sm情趣捆绑调教| 国产自产拍精品视频免费看| 中文字幕在线乱码亚洲| 欧美熟妇性xxx交潮喷| 欧美午夜a级精美理论片| 国产精品不卡在线视频| 好大好爽我要高潮在线观看| 毛片亚洲av无码精品国产午夜| 亚洲V在线激情| 亚洲一区中文字幕视频| 国产夫妇肉麻对白| 四虎国产精品永久在线无码| 精品人妻一区二区蜜臀av| 精品国产成人av久久| 免费国产黄网站在线观看| 九九99久久精品午夜剧场免费 | 国产自拍av在线观看视频| 国产精品va无码一区二区| 精品久久久久88久久久| 北条麻妃在线中文字幕|