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

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

最近經(jīng)常寫一些通信協(xié)議,因?yàn)榈讓邮瞻l(fā)不一樣,使用起來(lái)不方便,如果能直接像C中使用回調(diào)函數(shù)就非常方便了,比如用串口發(fā)送,則初始化時(shí)傳入串口發(fā)送的回調(diào)函數(shù),用TCP的時(shí)候就使用TCP的回調(diào)函數(shù),但是因?yàn)樯婕暗酵泄苡诜峭泄艽a的指針,使用起來(lái)還是有點(diǎn)麻煩,簡(jiǎn)單來(lái)說(shuō)就是講托管函數(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強(qiáng)制轉(zhuǎn)化為void*,再?gòu)?qiáng)制轉(zhuǎn)化為FUN類型


需要傳入的回調(diào)函數(shù)實(shí)現(xiàn),比如數(shù)據(jù)發(fā)送與接收的具體實(shí)現(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++指針即可進(jìn)行調(diào)用


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


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





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

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

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

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

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

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

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

C++是一種面向?qū)ο蟮母呒?jí)程序設(shè)計(jì)語(yǔ)言,是C語(yǔ)言的超集。

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

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

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

其實(shí)回調(diào)函數(shù)和普通函數(shù)沒有本質(zhì)的區(qū)別。首先讓我們來(lái)看看普通的函數(shù)調(diào)用,假設(shè)我們?cè)贏函數(shù)中調(diào)用函數(shù)func:voidA(){...func();...}想一想,你怎么知道可以調(diào)用func呢?哦,原來(lái)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)眾說(shuō)紛紜,有很大一部分都是使用類似這么一個(gè)場(chǎng)景來(lái)說(shuō)明:A...

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

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

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

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

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

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

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