FollowMe設計思路

2021-08-01 05:14:33 字數 1165 閱讀 3114

標頭檔案包含以下標頭檔案:

原始檔包含以下標頭檔案:

定義乙個結構體motionreport_s,包含時間標記,x軸位置,y軸位置和高度,xyz軸速度和加速度。

定義乙個新列舉,位置為0,速度為1,加速度為2,高度等級為3。

定義變數:

定義乙個公有槽: voidfollowmehandlemanager(const qstring&); (跟蹤引導處理管理器) 如果飛行器有px4韌體且飛行模式包含px4,那麼呼叫enable函式啟動並返回,否則不啟動。

定義兩個私有槽:

初始化:將estimatation_capabilities初始化為0,將運動報告結構體中的資料成員用memset初始化,啟動計時器並設定單次激發為false,然後把計時器和運動報告聯絡起來。

成員函式:

followme類實現了對當前位置的獲取,以及xyz軸方向上的速度計算,通過計時器不斷傳送位置資訊,達到了對飛行器位置實時監控的目的。為了避免同乙個檔案被include多次

1 #ifndef方式

2 #pragma once方式

在能夠支援這兩種方式的編譯器上,二者並沒有太大的區別,但是兩者仍然還是有一些細微的區別。

方式一:

#ifndef __somefile_h__

#define __somefile_h__

... ... // 一些宣告語句

#endif

方式二:

#pragma once

... ... // 一些宣告語句

#ifndef的方式依賴於巨集名字不能衝突,這不光可以保證同乙個檔案不會被包含多次,也能保證內容完全相同的兩個檔案不會被不小心同時包含。當然,缺點就是如果不同標頭檔案的巨集名不小心「撞車」,可能就會導致標頭檔案明明存在,編譯器卻硬說找不到宣告的狀況

#pragma once則由編譯器提供保證:同乙個檔案不會被包含多次。注意這裡所說的「同乙個檔案」是指物理上的乙個檔案,而不是指內容相同的兩個檔案。帶來的好處是,你不必再費勁想個巨集名了,當然也就不會出現巨集名碰撞引發的奇怪問題。對應的缺點就是如果某個標頭檔案有多份拷貝,本方法不能保證他們不被重複包含。當然,相比巨集名碰撞引發的「找不到宣告」的問題,重複包含更容易被發現並修正。

方式一由語言支援所以移植性好,方式二 可以避免名字衝突

反射設計思路

前幾天看了看反射的設計思路。想起可以使用action來反調相關的類的方法。設計思路 先建兩個表乙個是所有的action.根據action來獲取所有的actionbean.actionbean實際上是需要呼叫的類的方法。這個方法放在乙個map中。乙個action可以呼叫多個actionbean.可以在...

Nodejs Q promise設計思路

q庫為nodejs提供了乙個基於promise的程式設計方式,從此避免了一層又一層的callback呼叫。不過q的靈活性也給我造成了很大困擾,我可以用promise去resolve promise麼,我在then裡return promise可以麼?因此我研究了下q庫的源 幸運的是,q庫提供了乙份詳...

互動設計 設計思路

1 分析階段 需求分析 使用者場景模擬 競品分析 聆聽使用者心聲 需求分析 對於乙個產品來說,必然有對使用者需求的分析內容,更多的是從mrd與prd獲得,或者從產品需求評審會議上得到需求分析的內容,當然可以直接與產品經理交流獲得相關產品需求。如果說設計原則是所有設計的出發點的話,那麼使用者需求就是本...