uorb縮寫(xiě)是什么意思,uorb的全稱及含義,uorb全稱意思大全
uorb縮寫(xiě)是什么意思
UORB英文含義
1、UORB的英文全稱:Ubiquitous Object Request Broker | 中文意思:───無(wú)處不在的對(duì)象請(qǐng)求**
2、UORB的英文全稱:Upper Ocklawaha River Basin | 中文意思:───克瓦哈河上游流域
arduino如何輸出一個(gè)數(shù)組如位置坐標(biāo)(x,y).不是賦值而是輸出。
可以試一下把println(x,y);改成:
print("("); print(x); print(","); print(y); println(")");
把數(shù)組拆分輸出
arduino如何輸出一個(gè)數(shù)組如位置坐標(biāo)(x,y).不是賦值而是輸出。
PX4Firmware
經(jīng)常有人將Pixhawk、PX4、APM還有ArduPilot弄混。這里首先還是簡(jiǎn)要說(shuō)明一下:
Pixhawk是飛控硬件平臺(tái),PX4和ArduPilot都是開(kāi)源的可以燒寫(xiě)到Pixhawk飛控中的自駕儀軟件,PX4稱為原生固件,專為Pixhawk打造。APM(Ardupilot Mega)早期也是一款自駕儀硬件,到APM3.0版本,這款基于Arduino Mega的自駕儀已經(jīng)走到了它的終點(diǎn)。ArduPilot早期是APM自駕儀的固件,Pixhawk作為APM的升級(jí)版,也兼容ArduPilot固件,APM自駕儀卒了之后,ArduPilot現(xiàn)在全面支持Pixhawk,現(xiàn)在大家親切的稱ArduPilot固件為APM。
Pixhawk
APM 2.5
PX4
ArduPilot
筆者一直使用的是Pixhawk飛控,研究PX4Firmware。用Source Insight 看代碼是極好的。
PX4固件主要是用C++語(yǔ)言編寫(xiě),真是學(xué)好C++,走遍天下都不怕。使用了NuttX實(shí)時(shí)操作系統(tǒng),整體軟件架構(gòu)不可謂不龐大。
不知道如何開(kāi)頭,復(fù)述一個(gè)人工智能和機(jī)器人領(lǐng)域著名的莫拉維克悖論:和傳統(tǒng)假設(shè)不同,對(duì)計(jì)算機(jī)而言,實(shí)現(xiàn)邏輯推理等人類高級(jí)智慧只需要相對(duì)很少的計(jì)算能力,而實(shí)現(xiàn)感知、運(yùn)動(dòng)等低等級(jí)智慧卻需要巨大的計(jì)算資源。
且從系統(tǒng)說(shuō)起吧。
地面站配置的文件應(yīng)該在芯片flash中,格式化SD卡同時(shí)擦除芯片后配置信息依然存在。
RTFSC
Pixhawk整體邏輯大致為:
commander和navigator產(chǎn)生期望位置
position_estimator估計(jì)當(dāng)前位置
通過(guò)pos_ctrl產(chǎn)生期望姿態(tài)
attitude_estimator估計(jì)當(dāng)前姿態(tài)
通過(guò)att_estimator產(chǎn)生PWM數(shù)值
最后通過(guò)mixer和motor_driver控制電機(jī)
一直都還只是停留在底層,什么時(shí)候能感受一下ETHz這幫人的成果呢,這才是pixhawk啊。
啟動(dòng)函數(shù)
Pixhawk是沒(méi)有main函數(shù)的,飛控上電后,會(huì)自動(dòng)執(zhí)行Firmware/ROMFS/px4fmu_common/init.d文件夾下的rcS 啟動(dòng)腳本(startup script)。這個(gè)腳本位于被編譯到固件中的 ROM文件系統(tǒng)中。這個(gè)腳本檢測(cè)可用的硬件, 加載硬件驅(qū)動(dòng),并且根據(jù)你的設(shè)置啟動(dòng)系統(tǒng)正常運(yùn)行所需的有 app(任務(wù)軟件 ,包括位置和姿態(tài)估計(jì),控制遙測(cè)等)。所有屬于自啟動(dòng)程序的腳本文件可以在init.d文件夾中找到。
uORB是Pixhawk系統(tǒng)中非常重要且關(guān)鍵的一個(gè)模塊,它肩負(fù)了整數(shù)據(jù)傳輸任務(wù),所有的感器、 數(shù)據(jù)傳輸任務(wù)、 GPS、PPM信號(hào)等都要從芯片獲取后通過(guò)uORB進(jìn)行傳輸?shù)礁鱾€(gè)模塊進(jìn)行計(jì)算處理。
uORB 的入口點(diǎn)是 uorb_main函數(shù),在這里它檢查 uORB的啟動(dòng)參數(shù)來(lái)完成對(duì)應(yīng)的功能, uORB支持 start/test/status這 3條啟動(dòng)參數(shù),在 PX4的rcS啟動(dòng)腳本中,使用start參數(shù)來(lái)進(jìn)行初始化,其他 2個(gè)參數(shù)分別用來(lái)進(jìn)行uORB功能的自檢和列出 uORB的當(dāng)前狀態(tài)。
在rcS中使用 start參數(shù)啟動(dòng)uORB后,uORB會(huì)創(chuàng)建并初始化它的設(shè)備實(shí)例,其中的實(shí)現(xiàn)大部分都在CDev基類完成。
rcS啟動(dòng)順序
extern “C” __EXPORT int main(int agrc, char *agrv[ ]);
argc和argv是main函數(shù)的形參,它們是程序的“命令行參數(shù)”。agrc(argument count的縮寫(xiě),意思是參數(shù)個(gè)數(shù)),argv(argument vector的縮寫(xiě),意思是參數(shù)向量),它是一個(gè)*char指針數(shù)組,數(shù)組中每一個(gè)元素指向命令行中的一個(gè)字符串。
main函數(shù)是操作系統(tǒng)調(diào)用的,實(shí)參只能由操作系統(tǒng)給出。在操作命令狀態(tài)下,實(shí)參是和執(zhí)行文件的命令一起給出的。例如在DOS、UNIX或Linux等系統(tǒng)的操作命令狀態(tài)下,在命令行中包括了命令名和需要傳給main函數(shù)的參數(shù)。
命令行的一般形式為:
命令名 參數(shù)1 參數(shù)2 …… 參數(shù)n
命令名和各參數(shù)之間用空格分隔。命令名是可執(zhí)行文件名(此文件包含main函數(shù))。
在rcS執(zhí)行的時(shí)候,比如attitude_estimator_q_main start
那么agrc就等于2,agrv[0]就是attitude_estimator_q_main這個(gè)字符串,argv[1]就是start。
所以要判斷agrv[1]是start還是stop。
就像你在dos命令行里輸入attitude_estimator_q start,自然就給agrc和agrv[]賦值。NuttX系統(tǒng)下的模塊的主函數(shù)名字都是以”_main”開(kāi)始的,但是調(diào)用的時(shí)候不加“_main”。
不管了,就地舉個(gè)栗子,還是attitude_estimator_q_main.cpp這個(gè)文件。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495extern "C" _EXPORT int attitude_estimator_q_main(int argc, char *argv[]); …… int attitude_estimator_q_main(int argc, char *argv[]) { if (argc < 1) { warnx("usage: attitude_estimator_q {start|stop|status}"); return 1; } if (!strcmp(argv[1], "start")) { if (attitude_estimator_q::instance != nullptr) { warnx("already running"); return 1; } attitude_estimator_q::instance = new AttitudeEstimatorQ; if (attitude_estimator_q::instance == nullptr) { warnx("alloc failed"); return 1; } if (OK != attitude_estimator_q::instance->start()) { delete attitude_estimator_q::instance; attitude_estimator_q::instance = nullptr; warnx("start failed"); return 1; } return 0; } if (!strcmp(argv[1], "stop")) { if (attitude_estimator_q::instance == nullptr) { warnx("not running"); return 1; } delete attitude_estimator_q::instance; attitude_estimator_q::instance = nullptr; return 0; } if (!strcmp(argv[1], "status")) { if (attitude_estimator_q::instance) { attitude_estimator_q::instance->print(); warnx("running"); return 0; } else { warnx("not running"); return 1; } } warnx("unrecognized command"); return 1; }在一系列頭文件之后,這里extern “C”告訴編譯器在編譯attitude_estimator_q_main這個(gè)函數(shù)時(shí)按照C的規(guī)則去翻譯相關(guān)的函數(shù)名而不是C++的; __EXPORT 表示將函數(shù)名輸出到鏈接器(Linker)。
然后跳轉(zhuǎn)到函數(shù)的定義部分int attitude_estimator_q_main(int argc, char *argv[]),判斷系統(tǒng)給出的命令行的參數(shù),一系列的判斷,C++在大型項(xiàng)目上的優(yōu)勢(shì)這里有沒(méi)有發(fā)揮出來(lái)!總之你要的是start就對(duì)了。
和attitude_estimator_q相似,一個(gè)正常的應(yīng)用程序啟動(dòng)如下圖所示,直接task_main( ) 吧:
坐標(biāo)系
慣性導(dǎo)航的基礎(chǔ)是精確定義一系列的笛卡兒參考坐標(biāo)系,每一個(gè)坐標(biāo)系都是正交的右手坐標(biāo)系或軸系。
對(duì)地球上進(jìn)行的導(dǎo)航,所定義的坐標(biāo)系要將慣導(dǎo)系統(tǒng)的測(cè)量值與地球的主要方向聯(lián)系起來(lái)。也就是說(shuō),當(dāng)在近地面導(dǎo)航時(shí),該坐標(biāo)系具有實(shí)際意義。因此,習(xí)慣上將原點(diǎn)位于地球中心、相對(duì)于恒星固定的坐標(biāo)系定義為慣性參考坐標(biāo)系,下圖給出了用于陸地導(dǎo)航的固連于地球的參考坐標(biāo)系和當(dāng)?shù)氐乩韺?dǎo)航坐標(biāo)系以及慣性參考坐標(biāo)系。
地球坐標(biāo)系(e系)。原點(diǎn)位于地球中心,坐標(biāo)軸與地球固連,軸向定義為Oxe,Oye,Oze 。其中,Oze 沿地球極軸方向,Oxe軸沿格林尼泊子午面和地球赤道平面的交線。地球坐標(biāo)系相對(duì)于慣性坐標(biāo)系繞Ozi 軸以角速度Ω轉(zhuǎn)動(dòng)。
導(dǎo)航坐標(biāo)系(n系)。是一種當(dāng)?shù)氐乩碜鴺?biāo)系,原點(diǎn)位于導(dǎo)航系統(tǒng)所處的位置P點(diǎn),坐標(biāo)軸指向北、東和當(dāng)?shù)卮咕€方向(向下)。導(dǎo)航坐標(biāo)系相對(duì)于地球固連坐標(biāo)系的旋轉(zhuǎn)角速率wen取決于P 點(diǎn)相對(duì)于地球的運(yùn)動(dòng),通常稱為轉(zhuǎn)移速率。
載體坐標(biāo)系(b系)。一個(gè)正交坐標(biāo)系,軸向分別沿安裝有導(dǎo)航系統(tǒng)的運(yùn)載體的橫滾軸、俯仰軸和偏航軸。
在PX4中,
Local position setpoint in NED frame → 導(dǎo)航坐標(biāo)系(以起飛點(diǎn)home為原點(diǎn)) 北東地 xyz
Global position in WGS84 coordinates → 世界大地坐標(biāo)系(原點(diǎn)位于地球質(zhì)心)
NED earth-fixed frame →個(gè)人覺(jué)得是GPS投影到地面的坐標(biāo)系,原點(diǎn)?
NED body-fixed frame →機(jī)體坐標(biāo)系,x軸正方向?yàn)闄C(jī)頭,z軸正方向下
這里有兩個(gè)函數(shù)不得不提:
123456789101112131415161718192021222324252627282930313233343536373839404142434445//將地理學(xué)坐標(biāo)系(geographic coordinate system)中的點(diǎn)(球)投影到本地方位等距平面(XOY)中 int map_projection_project(const struct map_projection_reference_s *ref, double lat, double lon, float *x,float *y) { if (!map_projection_initialized(ref)) { return -1; } double lat_rad = lat * M_DEG_TO_RAD; // 度 -> 弧度 A/57.295 double lon_rad = lon * M_DEG_TO_RAD; // GPS數(shù)據(jù)角度單位為弧度 double sin_lat = sin(lat_rad); //程序中三角運(yùn)算使用的是弧度 double cos_lat = cos(lat_rad); double cos_d_lon = cos(lon_rad - ref->lon_rad); double arg = ref->sin_lat * sin_lat + ref->cos_lat * cos_lat * cos_d_lon; if (arg > 1.0) { arg = 1.0; } else if (arg < -1.0) { arg = -1.0; //限幅 } double c = acos(arg); double k = (fabs(c) < DBL_EPSILON) ? 1.0 : (c / sin(c));// c為正數(shù) *x = k * (ref->cos_lat * sin_lat - ref->sin_lat * cos_lat * cos_d_lon) * CONSTANTS_RADIUS_OF_EARTH; *y = k * cos_lat * sin(lon_rad - ref->lon_rad) * CONSTANTS_RADIUS_OF_EARTH; return 0; }將球面坐標(biāo)轉(zhuǎn)化為平面坐標(biāo)的過(guò)程便稱為投影。這里將經(jīng)緯度轉(zhuǎn)換成地坐標(biāo)系xy值,也就是說(shuō)是基于GPS的位置自動(dòng)控制 。
采用的是等距方位投影的方法(Azimuthal Equidistant Projection)。
方位投影既不是等面積也不是保形的。讓?duì)?和λ0作為投影中心的緯度和經(jīng)度,則變換方程由下式給出
x=k′cos?sin(λ?λ0)
y=k′[cos?1sinsin?1cos?sin(λ?λ0)]
這里
k′=csinc
并且
cosc=sin?1sin?+cos?1cos?cos(λ?λ0)]
c在這里代表距中心的角距離(一定點(diǎn)到兩物體之間所量度的夾角)。公式的逆表達(dá)如下:
=sin?1(coscsin?1+ysinccos?1c)
以及
λ=?λ0+tan?1(xsincccos?1cosc?ysin?1sinc),λ0+tan?1(?xy),λ0+tan?1(xy),for?1≠±90°for?1=90°for?1=-90°
到中心的角距離由下式給出:
c=x2+y2√
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657//將本地方位等距平面中的點(diǎn)投影到地理學(xué)坐標(biāo)系 int map_projection_global_reproject(float x, float y, double *lat, double *lon) { return map_projection_reproject(&mp_ref, x, y, lat, lon); } __EXPORT int map_projection_reproject(const struct map_projection_reference_s *ref, float x, float y, double *lat, double *lon) { if (!map_projection_initialized(ref)) { return -1; } double x_rad = x / CONSTANTS_RADIUS_OF_EARTH; // 地球半徑 double y_rad = y / CONSTANTS_RADIUS_OF_EARTH; double c = sqrtf(x_rad * x_rad + y_rad * y_rad); double sin_c = sin(c); double cos_c = cos(c); double lat_rad; double lon_rad; if (fabs(c) > DBL_EPSILON) { lat_rad = asin(cos_c * ref->sin_lat + (x_rad * sin_c * ref->cos_lat) / c); lon_rad = (ref->lon_rad + atan2(y_rad * sin_c, c * ref->cos_lat * cos_c - x_rad * ref->sin_lat * sin_c)); } else { lat_rad = ref->lat_rad; lon_rad = ref->lon_rad; } *lat = lat_rad * 180.0 / M_PI; // 弧度 -> 度 *lon = lon_rad * 180.0 / M_PI; return 0; }先map_projection_reproject( )再map_projection_project( )。這種方式將位置轉(zhuǎn)換為經(jīng)緯度和高度, 然后用位置估計(jì)參數(shù)來(lái)更新經(jīng)緯度和高度,接著轉(zhuǎn)換回位置參考點(diǎn),屬于GPS數(shù)據(jù)轉(zhuǎn)換的方式。
poll
int poll(struct pollfd fds[], nfds_t nfds, int timeout)
功能:監(jiān)控文件描述符(多個(gè));
說(shuō)明:timemout=0,poll()函數(shù)立即返回而不阻塞;timeout=INFTIM(-1),poll()會(huì)一直阻塞下去,直到檢測(cè)到return >0;
參數(shù):
fds:struct pollfd結(jié)構(gòu)類型的數(shù)組;
nfds:用于標(biāo)記數(shù)組fds中的結(jié)構(gòu)體元素的總數(shù)量;
timeout:是poll函數(shù)調(diào)用阻塞的時(shí)間,單位:毫秒;
返回值:
>0:數(shù)組fds中準(zhǔn)備好讀、寫(xiě)或出錯(cuò)狀態(tài)的那些socket描述符的總數(shù)量;
==0:poll()函數(shù)會(huì)阻塞timeout所指定的毫秒時(shí)間長(zhǎng)度之后返回;
-1:poll函數(shù)調(diào)用失敗;同時(shí)會(huì)自動(dòng)設(shè)置全局變量errno;
poll( )函數(shù)用于監(jiān)測(cè)多個(gè)等待事件,若事件未發(fā)生,進(jìn)程睡眠,放棄CPU控制權(quán)。若監(jiān)測(cè)的任何一個(gè)事件發(fā)生,poll函數(shù)將喚醒睡眠的進(jìn)程,并判斷是什么等待事件發(fā)生,并執(zhí)行相應(yīng)的操作。poll( )函數(shù)退出后,struct polldf變量的所有值被清零,需要重新設(shè)置。
uORB
uORB(Micro Object Request Broker,微對(duì)象請(qǐng)求**器)是PX4/Pixhawk系統(tǒng)中非常重要且關(guān)鍵的一個(gè)模塊,它肩負(fù)了整個(gè)系統(tǒng)的數(shù)據(jù)傳輸任務(wù),所有的傳感器數(shù)據(jù)、GPS、PPM信號(hào)等都要從芯片獲取后通過(guò)uORB進(jìn)行傳輸?shù)礁鱾€(gè)模塊進(jìn)行計(jì)算處理。實(shí)際上uORB是一套跨「進(jìn)程」 的IPC通訊模塊。在Pixhawk中, 所有的功能被獨(dú)立以進(jìn)程模塊為單位進(jìn)行實(shí)現(xiàn)并工作。而進(jìn)程間的數(shù)據(jù)交互就由為重要,必須要能夠符合實(shí)時(shí)、有序的特點(diǎn)。
Pixhawk使用的是NuttX實(shí)時(shí)ARM系統(tǒng),uORB實(shí)際上是多個(gè)進(jìn)程打開(kāi)同一個(gè)設(shè)備文件,進(jìn)程間通過(guò)此文件節(jié)點(diǎn)進(jìn)行數(shù)據(jù)交互和共享。進(jìn)程通過(guò)命名的「總線」交換的消息稱之為「主題」(topic),在Pixhawk 中,一個(gè)主題僅包含一種消息類型,通俗點(diǎn)就是數(shù)據(jù)類型。每個(gè)進(jìn)程可以「訂閱」或者「發(fā)布」主題,可以存在多個(gè)發(fā)布者,或者一個(gè)進(jìn)程可以訂閱多個(gè)主題,但是一條總線上始終只有一條消息。
應(yīng)用層中操作基礎(chǔ)飛行的應(yīng)用之間都是隔離的,這樣提供了一種安保模式,以確?;A(chǔ)操作獨(dú)立的高級(jí)別系統(tǒng)狀態(tài)的穩(wěn)定性。而溝通它們的就是uORB。
源碼中關(guān)于uORB有幾個(gè)常見(jiàn)的函數(shù):
公告主題
在數(shù)據(jù)被發(fā)布到一個(gè)主題前,它必須被公告,發(fā)布者可以使用下面的API來(lái)公告一個(gè)新的主題
extern int orb_advertise(const struct orb_metadata *meta, const void *data);
參數(shù):
meta:uORB元對(duì)象,可以認(rèn)為是主題id,一般是通過(guò)ORB_ID(主題名)來(lái)賦值;
data:指向一個(gè)已被初始化,發(fā)布者要發(fā)布的數(shù)據(jù)存儲(chǔ)變量的指針;
返回值:
錯(cuò)誤則返回ERROR;成功則返回一個(gè)可以發(fā)布主題的句柄;如果待發(fā)布的主題沒(méi)有定義或聲明則會(huì)返回-1,然后會(huì)將errno賦值為ENOENT;
公告也可以發(fā)布初始化數(shù)據(jù)到主題,meta參數(shù)是傳遞給API的一個(gè)指針,指向由ORB_DEFINE()宏定義好的數(shù)據(jù),通常使用ORB_ID()宏來(lái)根據(jù)主題名稱獲取該指針。請(qǐng)注意,雖然主題更新可以從中斷處理函數(shù)發(fā)布,公告主題必須在常規(guī)的線程上下文中執(zhí)行。
發(fā)布更新
一旦公告了一個(gè)主題,公告主題后返回的句柄可使用下面的API來(lái)發(fā)布主題更新。
extern int orb_publish(const struct orb_metadata *meta, int handle, const void *data);
參數(shù):
meta:uORB元對(duì)象,可以認(rèn)為是主題id,一般是通過(guò)ORB_ID(主題名)來(lái)賦值;
handle:orb_advertise函數(shù)返回的句柄;
data:指向待發(fā)布數(shù)據(jù)的指針;
返回值:
OK表示成功;錯(cuò)誤返回ERROR;否則則有根據(jù)的去設(shè)置errno;
uORB不會(huì)緩存多個(gè)更新,當(dāng)用戶檢查一個(gè)主題,他們將只能看到最新的更新。
訂閱主題
訂閱主題的要求如下:
調(diào)用ORB_DEFINE()或ORB_DEFINE_OPTIONAL()宏(在訂閱者的頭文件中包含他們) 發(fā)布到主題的數(shù)據(jù)結(jié)構(gòu)定義(通常與發(fā)布者使用同一頭文件)
如果滿足上面的條件后,訂閱者可以使用下面的api來(lái)訂閱一個(gè)主題:
extern int orb_subscribe(const struct orb_metadata *meta);
參數(shù):
meta:uORB元對(duì)象,可以認(rèn)為是主題id,一般是通過(guò)ORB_ID(主題名)來(lái)賦值;
返回值:
錯(cuò)誤則返回ERROR;成功則返回一個(gè)可以讀取數(shù)據(jù)、更新話題的句柄;如果待訂閱的主題沒(méi)有定義或聲明則會(huì)返回-1,然后會(huì)將errno賦值為ENOENT;
即使訂閱的主題沒(méi)有被公告,但是也能訂閱成功;但是在這種情況下,卻得不到數(shù)據(jù),直到主題被公告;如果可選主題不存在于固件之中,訂閱到可選的主題將會(huì)失敗,但其他主題即便發(fā)布者沒(méi)有進(jìn)行公告也會(huì)訂閱成功,這樣可大大降低系統(tǒng)對(duì)啟動(dòng)順序的安排。
取消訂閱
要取消訂閱一個(gè)主題,可以用下面的API
extern int orb_unsubscribe(int handle);
拷貝數(shù)據(jù)
訂閱者不能引用ORB中存儲(chǔ)的數(shù)據(jù)或其他訂閱共享的數(shù)據(jù),而是在訂閱者請(qǐng)求時(shí)從ORB拷貝數(shù)據(jù)到訂閱者的臨時(shí)緩沖區(qū)。副本拷貝的方式可以避免鎖定ORB的問(wèn)題,并保持兩者之間(發(fā)布者,訂閱者)的API接口簡(jiǎn)單。它也允許訂閱者在必要的時(shí)候直接修改拷貝副本的數(shù)據(jù)供自己使用。從訂閱的主題中獲取數(shù)據(jù)并將數(shù)據(jù)保存到buffer中。
當(dāng)訂閱者想要把主題中的最新數(shù)據(jù)拷貝一份全新的副本,可以使用:
extern int orb_copy(const struct orb_metadata *meta, int handle, void *buffer);
參數(shù):
meta:uORB元對(duì)象,可以認(rèn)為是主題id,一般是通過(guò)ORB_ID(主題名)來(lái)賦值;
handle:訂閱主題返回的句柄;
buffer:從主題中獲取的數(shù)據(jù);
返回值:
返回OK表示獲取數(shù)據(jù)成功,錯(cuò)誤返回ERROR;否則則有根據(jù)的去設(shè)置errno;
拷貝是以原子操作進(jìn)行的,所以可以保證獲取到發(fā)布者最新的數(shù)據(jù)。
檢查更新
訂閱者可以使用下面的API來(lái)檢查一個(gè)主題在發(fā)布者最后更新后,有沒(méi)有人調(diào)用過(guò)orb_copy來(lái)接收,處理:
extern int orb_check(int handle, bool *updated);
語(yǔ)句,很多時(shí)候Source Insight無(wú)法跳轉(zhuǎn)到
本站其他內(nèi)容推薦
1、vandal debrief nutty mechanism homburg torchiere tracer risque mossy spline
2、bell rang(bells rang中文翻譯,bells rang是什么意思,bells rang發(fā)音、用法及例句)
3、decieve(deceive中文翻譯,deceive是什么意思,deceive發(fā)音、用法及例句)
4、干城之將的意思,干城之將成語(yǔ)解釋,干城之將是什么意思含義寓意
8、切實(shí)的近義詞是什么,切實(shí)的近義詞,切實(shí)是什么意思,切實(shí)的同義詞
9、necrotic是什么意思,necrotic中文翻譯,necrotic怎么讀、發(fā)音、用法及例句
10、controls
11、arugula
版權(quán)聲明: 本站僅提供信息存儲(chǔ)空間服務(wù),旨在傳遞更多信息,不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任,不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé)。如因作品內(nèi)容、版權(quán)和其它問(wèn)題需要同本網(wǎng)聯(lián)系的,請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。