日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > 充電吧
[導(dǎo)讀]最近經(jīng)常寫一些通信協(xié)議,因為底層收發(fā)不一樣,使用起來不方便,如果能直接像C中使用回調(diào)函數(shù)就非常方便了,比如用串口發(fā)送,則初始化時傳入串口發(fā)送的回調(diào)函數(shù),用TCP的時候就使用TCP的回調(diào)函數(shù),但是因為涉

最近經(jīng)常寫一些通信協(xié)議,因為底層收發(fā)不一樣,使用起來不方便,如果能直接像C中使用回調(diào)函數(shù)就非常方便了,比如用串口發(fā)送,則初始化時傳入串口發(fā)送的回調(diào)函數(shù),用TCP的時候就使用TCP的回調(diào)函數(shù),但是因為涉及到托管于非托管代碼的指針,使用起來還是有點麻煩,簡單來說就是講托管函數(shù)使用委托,然后將委托的指針找到,轉(zhuǎn)換為C++指針,然后就可以訪問了。

添加命名空間


using?namespace?System::Runtime::InteropServices;


聲明托管


delegate?void?ProcessDelegate(int?len);
ProcessDelegate?^funCallBack1;


初始化托管,并獲取托管函數(shù)的托管指針

funCallBack1?=?gcnew?ProcessDelegate(this,?&溫濕度采集::Form1::printGoodbye);
IntPtr?pvFun?=?Marshal::GetFunctionPointerForDelegate(funCallBack1);//可將pvFun強制轉(zhuǎn)化為void*,再強制轉(zhuǎn)化為FUN類型


需要傳入的回調(diào)函數(shù)實現(xiàn),比如數(shù)據(jù)發(fā)送與接收的具體實現(xiàn),用串口還是TCP方式收發(fā)數(shù)據(jù)

void?printGoodbye(int?len)
{
???printf("送客送客?--?%d/n",?len);
}



初始化,傳入外部接口的函數(shù)指針

callback(10,?(void(*)(int))pvFun.ToInt32());//將托管的指針變?yōu)?2bit的C++指針即可進行調(diào)用


協(xié)議棧中的調(diào)用,一般都是初始化時將回調(diào)函數(shù)指針傳入,使用的時候直接使用回調(diào)函數(shù)即可


void?callback(int?times,?void(*p)(int))
{
	p(times);
}





本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

其實在 c++語言里面const修飾的才算是一個真正的常量,在 c 語言中 const 可以說是個“冒牌貨”。為什么會這樣?其實是 c++ 編譯器對 const 進行了加強,當(dāng) c++ 編譯器遇到常量聲明時,不會像 c...

關(guān)鍵字: c++ C語言 const

返回函數(shù)的引用去初始化一個新的引用這個和前面一樣,都是不會產(chǎn)生副本,但是現(xiàn)在是用返回值去初始化一個引用聲明c,也就是說這時候變成了變量temp的別名,在c的生命周期內(nèi)temp是一直有效的,這樣做完全可以。

關(guān)鍵字: c++ 返回值 引用聲明

什么是回調(diào)函數(shù)?`even.py`#回調(diào)函數(shù)1#生成一個2k形式的偶數(shù)defdouble(x):returnx*2#回調(diào)函數(shù)2#生成一個4k形式的偶數(shù)defquadruple(x):returnx*4`callback_...

關(guān)鍵字: 回調(diào)函數(shù)

C++是一種面向?qū)ο蟮母呒壋绦蛟O(shè)計語言,是C語言的超集。

關(guān)鍵字: c++ C語言

其實回調(diào)函數(shù)和普通函數(shù)沒有本質(zhì)的區(qū)別。首先讓我們來看看普通的函數(shù)調(diào)用,假設(shè)我們在A函數(shù)中調(diào)用函數(shù)func:voidA(){...func();...}想一想,你怎么知道可以調(diào)用func呢?哦,原來func是你自己定義的:...

關(guān)鍵字: 回調(diào)函數(shù)

其實回調(diào)函數(shù)和普通函數(shù)沒有本質(zhì)的區(qū)別。首先讓我們來看看普通的函數(shù)調(diào)用,假設(shè)我們在A函數(shù)中調(diào)用函數(shù)func:voidA(){...func();...}想一想,你怎么知道可以調(diào)用func呢?哦,原來func是你自己定義的:...

關(guān)鍵字: 回調(diào)函數(shù)

01什么是回調(diào)函數(shù)?回調(diào)函數(shù),光聽名字就比普通函數(shù)要高大上一些,那到底什么是回調(diào)函數(shù)呢?恕我讀得書少,沒有在那本書上看到關(guān)于回調(diào)函數(shù)的定義。我在百度上搜了一下,發(fā)現(xiàn)眾說紛紜,有很大一部分都是使用類似這么一個場景來說明:A...

關(guān)鍵字: 回調(diào)函數(shù)

以前寫過一篇關(guān)于回調(diào)函數(shù)的文章C語言函數(shù)指針之回調(diào)函數(shù),今天又安排了一篇。

關(guān)鍵字: 回調(diào)函數(shù) C語言

回調(diào)函數(shù),光聽名字就比普通函數(shù)要高大上一些,那到底什么是回調(diào)函數(shù)呢?

關(guān)鍵字: C語言 嵌入式 回調(diào)函數(shù)

STM32Cube HAL出來六七年了,還是有很多初學(xué)者沒有適應(yīng),今天就分享一個讀者問到的關(guān)于中斷處理的問題。

關(guān)鍵字: 中斷處理 回調(diào)函數(shù)
關(guān)閉