pvMsglq>greadg->gread=((q->gread+1)%TIMEWEIGHT_TASKQUEUE_SIZE)/*解锁return(pmSg);PushapmSgpacketontoapvMsgpacketqueue@parampisthepmsgtopushontothepacketqueue@paramgisthepacketqueue.W@return0ifsuccessful,-1ifqisfullntTWTMsgSend(TtWTMSg*p,TTWTMSGQUEUE*qintret/if(!TWT_QUEUEFULL(al)iThequeueisntfullsoweaddthenewframeatthecurrentwwritepositionandmovethewritepointer.g->pvMsgla->write]=pg->write=((q->qwrite+1)%TIMEWEIGHTTASKQUEUESIZE;ret=oThestackisfullsowearethrowingawaythisvalue.Keeptrackofthenumberoftimesthishappensg->overflow++ret=-1://*解锁return(ret)**米**米来米***来米*半米*米*半米*米求***半*米米求半**米求半**半求半和*米*//消息分发机制//*算法是//*正常返回0,出错返回-1水米米******水*米*水**米*半*水米米冰半**水水*水米米半米冰水*米水水*水*米水水externintRecToFileMsgProc(T_MSG_REC2FILE*ptMsg);intDispatchMsg(TTWTMSG*ptMsgitif(NULl=ptMsggotoErrRet/*dispatchmsg*/switch(ptMsg->enMsgType)caseTWTPINgPoNgBuffrecRecToFileMsgProcl(TMSG_REC2FE)(pmSg->pMsg);/*处理消息*/destroyMsg(pmSg;/*消毁消息breakdefault.printf("DispatchMsgMsgtypeError!n")break.return0ErrRetprintf("DispatchMsgFail!";return-1./*buffsize*/#defineP|NGPONG_BUFFBSIZE0X20000//10*1024*1024/*10M*/*pingpongbuff*///chargacPINGBUFF[PINGPONGBUFFBSIZE];/*PingBuff*///chargacPONGBUFF[PINGPONG_BUFFBSIZE]*PongBuff*/水米米*********米*水**米*半*水米米水**冰水*水米米半半水半米冰水*米水水*水*米米//*释放pingpongbuff/必然成功//*无返回木***木*水****本**水*水水*水****本水**水水****水水***本***米*水voidDestroyPingPongButt(TPINGPONGBUFFUSEDESptPingPongButt)nLoopif(NULL=ptPingpongbuffreturnfor(nLoop=0;nLooptIngBuffUse[nLoop].pcHeadAddr)free(ptPingPong->tPingBuffUse[nLoop].pcHeadAddr)free(ptPingpongBuff)/初始化pingpongbuff返回pignpongbuff的描述指针//*正常返回0,出错返回-1水水水水水水水水水木水木水水水水水木水木水水水水水水水水本水水水水水水水水水本水水水水水水水水水水水水水TPINGPONGBUFFUSEDESInitPingPongBuff(unsignedintnBuffSizeTPINGPONGBUFFUSEDES*ptBuffDes=NULLintnLoop/*获取buf描述*ifNULL==(ptBuffDes=malloc(sizeof(TPINGPONGBUFFUSEDES))))gotoErrRetmemset(ptBuffDes,0,sizeof(T_PINGPONGBUFFUSE_DES));/*分别初始化ping和pong*/for(nLoop=0;nLooptIngBuffUsenLooppcHeadAddr=mallocnBuffSize))gotoErrRet;ptBuffDes->tIngBuffUselnLoop]nBuffSizenBuffsizeptBuffDes->tPingBuffUse[nLoop].oFfsetptBuffDes->tPingBuffUsenLoop)eUseStatus-=BUFFWRITEABLE;ptBuffDes->eCurUseIDBUFFPINGreturnptBuffDesErrretprintf("lnitPingPongBuffFail!");DestroyIngPongBuff(ptBuffDes)turnnull平**米**米*米***来米米*米*米*半米*米米米来*半米平**米米求*来*半求半来*米求*和*米*/*Resetpingpongbuff//*正常返回0,出错返回-1米米米米水冰米*米米水**米米冰*米水米米米米水米水*水米米来米米x米来米米水冰来来宋来水米来米来冰#defineResetBuffUse(ptBuffuse)ptBuffUse->oFfset0ptBuffUse->eUseStatusBUFFWRITEABLEgenerateafilerecmsg*正常返回消息体的指针,异常返回NULLT_MSG_REC2lGKSenFRMSB(T_BUFF_USE_DES*ptBuffUse,REC_FILE_DESLIST*ptFileListRTMSGREC2FILEKE*ptRFMsg=NULL;if(NULL==(ptRFMsgmalloc(sizeof(T_MSGREC2FILE)returnnUllptRFMsg->ptBuffUseptBuffUseptRFMsg->ptFilelistptFilelist;returnptRFMsg-IMDN开发者社群-imdn.cn"> pvMsglq>greadg->gread=((q->gread+1)%TIMEWEIGHT_TASKQUEUE_SIZE)/*解锁return(pmSg);PushapmSgpacketontoapvMsgpacketqueue@parampisthepmsgtopushontothepacketqueue@paramgisthepacketqueue.W@return0ifsuccessful,-1ifqisfullntTWTMsgSend(TtWTMSg*p,TTWTMSGQUEUE*qintret/if(!TWT_QUEUEFULL(al)iThequeueisntfullsoweaddthenewframeatthecurrentwwritepositionandmovethewritepointer.g->pvMsgla->write]=pg->write=((q->qwrite+1)%TIMEWEIGHTTASKQUEUESIZE;ret=oThestackisfullsowearethrowingawaythisvalue.Keeptrackofthenumberoftimesthishappensg->overflow++ret=-1://*解锁return(ret)**米**米来米***来米*半米*米*半米*米求***半*米米求半**米求半**半求半和*米*//消息分发机制//*算法是//*正常返回0,出错返回-1水米米******水*米*水**米*半*水米米冰半**水水*水米米半米冰水*米水水*水*米水水externintRecToFileMsgProc(T_MSG_REC2FILE*ptMsg);intDispatchMsg(TTWTMSG*ptMsgitif(NULl=ptMsggotoErrRet/*dispatchmsg*/switch(ptMsg->enMsgType)caseTWTPINgPoNgBuffrecRecToFileMsgProcl(TMSG_REC2FE)(pmSg->pMsg);/*处理消息*/destroyMsg(pmSg;/*消毁消息breakdefault.printf("DispatchMsgMsgtypeError!n")break.return0ErrRetprintf("DispatchMsgFail!";return-1./*buffsize*/#defineP|NGPONG_BUFFBSIZE0X20000//10*1024*1024/*10M*/*pingpongbuff*///chargacPINGBUFF[PINGPONGBUFFBSIZE];/*PingBuff*///chargacPONGBUFF[PINGPONG_BUFFBSIZE]*PongBuff*/水米米*********米*水**米*半*水米米水**冰水*水米米半半水半米冰水*米水水*水*米米//*释放pingpongbuff/必然成功//*无返回木***木*水****本**水*水水*水****本水**水水****水水***本***米*水voidDestroyPingPongButt(TPINGPONGBUFFUSEDESptPingPongButt)nLoopif(NULL=ptPingpongbuffreturnfor(nLoop=0;nLooptIngBuffUse[nLoop].pcHeadAddr)free(ptPingPong->tPingBuffUse[nLoop].pcHeadAddr)free(ptPingpongBuff)/初始化pingpongbuff返回pignpongbuff的描述指针//*正常返回0,出错返回-1水水水水水水水水水木水木水水水水水木水木水水水水水水水水本水水水水水水水水水本水水水水水水水水水水水水水TPINGPONGBUFFUSEDESInitPingPongBuff(unsignedintnBuffSizeTPINGPONGBUFFUSEDES*ptBuffDes=NULLintnLoop/*获取buf描述*ifNULL==(ptBuffDes=malloc(sizeof(TPINGPONGBUFFUSEDES))))gotoErrRetmemset(ptBuffDes,0,sizeof(T_PINGPONGBUFFUSE_DES));/*分别初始化ping和pong*/for(nLoop=0;nLooptIngBuffUsenLooppcHeadAddr=mallocnBuffSize))gotoErrRet;ptBuffDes->tIngBuffUselnLoop]nBuffSizenBuffsizeptBuffDes->tPingBuffUse[nLoop].oFfsetptBuffDes->tPingBuffUsenLoop)eUseStatus-=BUFFWRITEABLE;ptBuffDes->eCurUseIDBUFFPINGreturnptBuffDesErrretprintf("lnitPingPongBuffFail!");DestroyIngPongBuff(ptBuffDes)turnnull平**米**米*米***来米米*米*米*半米*米米米来*半米平**米米求*来*半求半来*米求*和*米*/*Resetpingpongbuff//*正常返回0,出错返回-1米米米米水冰米*米米水**米米冰*米水米米米米水米水*水米米来米米x米来米米水冰来来宋来水米来米来冰#defineResetBuffUse(ptBuffuse)ptBuffUse->oFfset0ptBuffUse->eUseStatusBUFFWRITEABLEgenerateafilerecmsg*正常返回消息体的指针,异常返回NULLT_MSG_REC2lGKSenFRMSB(T_BUFF_USE_DES*ptBuffUse,REC_FILE_DESLIST*ptFileListRTMSGREC2FILEKE*ptRFMsg=NULL;if(NULL==(ptRFMsgmalloc(sizeof(T_MSGREC2FILE)returnnUllptRFMsg->ptBuffUseptBuffUseptRFMsg->ptFilelistptFilelist;returnptRFMsg - IMDN开发者社群-imdn.cn">
登录
首页 » Others » 内存乒乓缓存机制和消息分发机制的C代码实现

内存乒乓缓存机制和消息分发机制的C代码实现

于 2020-12-03 发布
0 148
下载积分: 1 下载次数: 0

代码说明:

用C代码实现乒乓内存缓冲机制,具体实用价值,帮助您提高内存响应速度与及时数据的处理。unsigned long writeunsigned long greadunsigned long overflowST TWTMSG QUEUE:/ Helper macros for accessing Msg queues. *#define tWt QUEUE EMPty(a)(((g->write==(q)->gread)? 1: 0)#define twt_ QUeUe full(a)(((((q)->qwrite +1% TIMEWEIGHT TASKQUEUE SIZED)==(q)->gread)?1: 0)米 generate a Msg entity*正常返回消息体的指针,异常返回NULLT TWTMSG* generateMsg(tT-TWTMSG* pmSg=nULL,if(NULL =-(ptMsg malloc(sizeof(T TWTMSG)))return NULL;memset(ptMsg, 0, sizeof(T TWTMSG)return pmSg;destroy a Msgvoid destroy Msg(t TWTMSG ptMsgif(NULL ptMsg->pfDestroyMsg)pt Msg->pfDestroy Msg(ptMsg->pvMsg)if (NULL != pt Msg)free(pmSgfree a Msg Queuevoid freeTWTMsg Que(T TWTMSG QUEUE* ptMsgQif(NULL =ptMsg Afree(ptMsg Q);Init a Msg QT TWTMSG QUEUE* initTWTMsg QueoT TWTMSG QUEUE pmSg Q= NULlif (NULL ==(ptMsgQ malloc(sizeof(T_ TWTMSG QUeue)goto ErrRetmemset(ptMsgQ, 0, sizeof(T TWTMSG QUEUE))return pmSg Q;Errretprintf( initTWTMsg Que Fail! ")freeTWTMsgQue(ptMsg Q)return nullPop a pvMsg packet from a msg packet queues param g is the packet queue from which to pop the pbuf@return pointer to pvMsg packet if available, NULl otherwiseT TWTMSG* TWTMsg Get(T_ TWTMSG QUEUE aT TWTMSG*//*加锁if(TWT_ QUEUE_ EMPTY(a))iReturn a NUll pointer if the queue is emptypmSg=NULL;else is The queue is not empty so return the next frame from itand adjust the read pointer accordinglypmSg=g->pvMsglq >greadg->gread =((q->gread +1)% TIMEWEIGHT_TASKQUEUE_ SIZE)/*解锁return(pmSg);Push a pmSg packet onto a pvMsg packet queue@param p is the pmsg to push onto the packet queue@param g is the packet queue.W @return 0 if successful, -1 if q is fullnt TWTMsg Send(T tWTMSg*p, T TWTMSG QUEUE *qint ret/if(!TWT_ QUEUE FULL(al)iThe queue isn t full so we add the new frame at the currentw write position and move the write pointer.g->pvMsgla->write]=pg- >write =((q->qwrite+1)% TIMEWEIGHT TASKQUEUE SIZE;ret =oThe stack is full so we are throwing away this value. Keep trackof the number of times this happensg->overflow++ret =-1://*解锁return(ret)**米**米来米***来米*半米*米*半米*米求***半*米米求半**米求半**半求半和*米*//消息分发机制//*算法是//*正常返回0,出错返回-1水米米******水*米*水**米*半*水米米冰半**水水*水米米半米冰水*米水水*水*米水水extern int RecToFile MsgProc(T_ MSG_ REC2 FILE* ptMsg);int DispatchMsg(T TWTMSG *ptMsgitif(NULl = ptMsg goto ErrRet/*dispatch msg*/switch(ptMsg->en Msg Type)case TWT PINgPoNgBuff recRecTo File Msg Procl(TMSG_REC2FE) (pmSg->pMsg);/*处理消息*/destroy Msg( pmSg;/*消毁消息breakdefault.printf("Dispatch Msg Msgtype Error! n")break.return 0ErrRetprintf("Dispatch Msg Fail! ";return-1./*buff size*/#defineP| NGPONG_ BUFF BSIZE0X20000//10*1024*1024/*10M*/*ping pong buff*///chargacPINGBUFF[PINGPONG BUFF BSIZE]; /* Ping Buff*///chargacPONGBUFF[PINGPONG_ BUFF BSIZE] *Pong Buff*/水米米*********米*水**米*半*水米米水**冰水*水米米半半水半米冰水*米水水*水*米米//*释放 ping pong buff/必然成功//*无返回木***木*水****本**水*水水*水****本水**水水****水水***本***米*水void Destroy Ping Pong Butt(T PINGPONGBUFF USE DES ptPing Pong Butt)nLoopif (NULL = pt Ping pong buffreturnfor (nLoop=0; nLooptIng BuffUse[nLoop]. pcHeadAddr)free(ptPing Pong ->t Ping BuffUse[nLoop]. pcHeadAddr)free(pt Ping pong Buff)/初始化 ping pong buff返回 pign pong buff的描述指针//*正常返回0,出错返回-1水水水水水水水水水木水木水水水水水木水木水水水水水水水水本水水水水水水水水水本水水水水水水水水水水水水水T PINGPONGBUFF USE DES InitPing Pong Buff(unsigned int n BuffSizeT PINGPONGBUFF USE DES* ptBuffDes=NULLintnLoop/*获取buf描述*if NULL==(ptBuffDes=malloc(sizeof(T PINGPONGBUFF USE DES))))goto ErrRetmemset(pt BuffDes, 0, sizeof(T_PINGPONGBUFF USE_ DES));/*分别初始化ping和pong*/for(nLoop=0; nLooptIng BuffUsenLoop pcHeadAddr =malloc n BuffSize))goto Err Ret;ptBuffDes->tIng BuffUselnLoop] nBuffSize nBuffsizeptBuffDes->tPing BuffUse[nLoop]. oFfsetptBuffDes->tPing BuffUsenLoop) eUseStatus-=BUFF WRITEABLE;pt BuffDes->eCurUseIDBUFF PINGreturn pt BuffDesErrretprintf("lnitPing Pong Buff Fail!");DestroyIng Pong Buff(pt BuffDes)turn null平**米**米*米***来米米*米*米*半米*米米米来*半米平**米米求*来*半求半来*米求*和*米*/*Reset ping pong buff//*正常返回0,出错返回-1米米米米水冰米*米米水**米米冰*米水米米米米水米水*水米米来米米x米来米米水冰来来宋来水米来米来冰#define ResetBuffUse(ptBuffuse)pt BuffUse->oFfset0pt BuffUse->eUseStatus BUFF WRITEABLEgenerate a file rec msg*正常返回消息体的指针,异常返回NULLT_MSG_REC2lGK SenFRMSB(T_BUFF_USE_DES *ptBuffUse, REC_FILE_DESLIST *ptFileListRT MSG REC2FILE KE* ptRFMsg= NULL;if(NULL ==(ptRFMsg malloc(sizeof(T_ MSG REC2 FILE)return nUllptRFMsg- >pt BuffUse pt BuffUseptRFMsg->pt Filelist ptFilelist;return ptRFMsg

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • 充电桩BMS通信协议.pdf
    【实例简介】直流充电桩最新BMS通信协议,发布与2015年,2016之后售卖的新能源车都已更新为最新BMS通信协议
    2021-11-21 00:59:25下载
    积分:1
  • opencv红绿灯识别样本(北京市的红绿灯)
    实际到路上拍照回来,然后裁剪出红绿灯,适合opencv + adaboost模型训练
    2020-11-05下载
    积分:1
  • Android实现登录界面和功能实例
    最近一个android小程序需要登录功能,我简单实现了一下。这是整个工程源码,注释嘛,还算详细吧
    2020-12-06下载
    积分:1
  • 图书馆管理系统Java源码+MySQl数据库
    图书馆管理系统(Java编写,MySQl数据库),含SQL数据库脚本文件,程序分客户端和服务端。程序可对用户名、用户学号、用户性别、用户班号、用户所在学院、用户密码、用户邮箱、用户是否借书、标志信息、信息数组、短消息、书的类别、书的名称、书号、出版社、出版日期、作者、书的概要内容、书的总数、书的当前在管总数、书的开始借阅日期等内容进行添加、修改、删除操作。
    2020-12-11下载
    积分:1
  • 天线工手册
    林昌禄老师的天线工程手册,很经典的中文版。供大家下载参考文献303)第11章行波天线11.1行波人线的基本原理(305)11.2长线大线与V形天线菱形大线3104螺旋天线l1.5八木大线(324)l1.6表面波线(329)11.7漏波人线342)参与文献第12章宽频带天线12.1宽频带天线的基本概念12.2“宽带振子天线12.3加载天线(3692.4非频变大线(381)12.5宽频带喇叭大线(40212.6超宽频带接收天线(41012.7宽频带匹配技(413)参考文献第13章绒阵和平面阵13.1阵列线基础(4293.2线阵13.3平面阵13.4方向性和信噪比的最佳化13.5方向图综合(452参考文献(462)第14章微带天线463)概述(463)±4.2微带贴片大线466)14.3微带振子天线和微带隙缝天线(494)14.4宽频带、多频段和频率捷变技术(503)14.5微带线形天线与微带线阵5014.6微带面忤天线参考文献第15章喇叭天线(531)15.]通论15.2主模喇叭天线15.3双模喇叭天线547)15.4多模喇叭天线15.5波纹喇叭天线…56215.6组合喇叭人线15.7其他形式的喇58115.8校正喇叭口亩场的相位分布与透镜天线参考文献第16章反射面天线16·1基木方法和基木公式16.2单反射面天线—一抛物前天线16.3双反射亩天线16.4赋形双反射而天线610)6.5对称双镜天线的效分析6l2)6.6单偏置抛物亩人线16.7双偏置钷物面大线l6.8波束扫描反射面人线(628)6.9溅散板馈源天(638)喇叭抛物而天线(6416.1!抛物柱面天线16、12等强度线波束线(645)参若文献第17章相控阵天线6419)17.1相控:阵人线参数计算公式17.2料阵大线轴射方向性和旁瓣的挖制17.3阵元辐射器的选抒174移相器附遨择17.5相控忤馈电网络的设计(672)17.6相控阵天线的带宽678)17.7柑摔阵天线宽带和宽角匹配方法(681)17.8相控阵的暈化误差(684)17.9颛率扫描大线阵参考文献第18章信号处理天线与阵列倍号处理技术(693)(698.2倍号处理天线18.3自适应∵城滤波天线(718)4白适应抗扰大线系统(737)18.5空间谱估计技术(749第19章时域天线19.!时域人线的研究对象及指标(75l)9.2偶极天线(751)l9.3隙缝轴射器(754)19.4偶极子用作接收天线19.5加载天线19.6渐近线喇叭天线(756)19.7频率无关天线川时城人线19.8脉冲阵列天线75919.9时域凵径辋射及时域面大线19.10时域接收天线与发射天线的关系19.11馈电问题参考文献(769)第三篇天线应用第20章圆极化天线770)20.1引0.2圆极化波的特性与参数20.3圆极化器(7730.4电磁振子惻极化线0.5螺旋人线799)0.6隙缝闶极化天线20.7微带极化天线20.8反射器圆极化极化天线2(0.10其他圆极化天线与文献第21章长、中、短波和超短波通信天线21.!长、中波通信天线设计考虑2.2长、中波通信天线的基本形式及方问性1.3T型与T型大线214笼『型大线1.5高Q铁氧休加感人线(833)21.6短波通信天线设(8321.7水平极化与垂直极化知波通信天线1.8笕带短波通信人线21.9超短波通信天线设计(86721、10超短波接力通信大线1.于栘动通信873参考文献第22章卫星通信天线879)2.l卫星通倍天线发展状况(8792.2对称型双反射镜通信地球站天线的设计22.3对称双镜天线的赋形技术(892)224且星通信天线获得低旁瓣的办法22,5对称型双镜卩通信天线旁瓣源的分析与计算(907)2.6馈源的设计与选择22.7多波束星通信地球站天线22.8跟踪体制及选择参考文献939)第23章雷达天线9403.1达大线的般设计要求………23.2笔形泼束天线扇形波束天线23.4赋形波束人线—余割平方天线…(948)精密龈踪达天线一-单脉冲线及馈源设计(951)36H达天线的电扫描精度妓波束控制(96223.7超视进雷达大线23.8合成!径人线974)参考文献第24章测向天线980)24.)测向系统天线设计原则980)4.2测向系统单兀人线4.3测向系统的宽孔径天线(983244多波束测向24.5伏尔与多普勒伏尔地面天线992)塔康人线24.7仪表着陆系统和微波着陆系统天线(997248环境对测向线场性能的影24.9测向大线系统的误差分析与性能评估考文献第25章飞行体上的天线(I0235.1飞行体L的大25.2椭圆桂面和双曲柱上:的天线l025)253椭圆柱体上的天线园锥体上的天线(045)255椭球体上的天线(105025.6飞行体天线的电兼谷(1056)献第26章毫米波天线概述26.2反射面天线与亳米波馈26.3表衣面被与漏波大线264微带天线与其他的印制天线(I099)26.5集成大线(1108)参考文献第四篇相关论题第27章天线罩(1113般设计考虑(l11327.2外形与结构27.3材料选择(1115)274电磁性能设计参考文前第28章天线的雷达散射截面般概念(1143)28.2反射面天线的R(114728.3阵列人线的HCS1162大线RCS的减缩8.5天线H(S的测量参考文献第29章天线测量(119629.1天线测试场的设计与鉴定(1l969.2振幅方向图测量29.3增益测量(12l0294极化测量(l21929.5相位测量(1223)29.6近场测量(1226)29.7阻抗测量298模型天线法(1242)9.9射电源法(2439.10天线的时域测量参考文献第一篇天线基础第1章引1.1天线功能大线在无线电设备中的主裳功能有两个:第个是能量转换功能,第一个是定向镉射(或接收)功能能量转换功能是指导行波与自由空间波之间的转换,发射天线是将馈线引导的电磁波(高频电流)转换为向空问辐射的电磁波传向远方,接收天线是将空闾的磁波转换为馈线引导的电嵫波(高频电流)送给接收机定向作用是指线辐射或接收电磁波有定的方向性,根据无线电系统设备的要求,发射天线可把电磁波能量集中在一定方向轴射出去,接收天线可只接收特定方向传来的电憾波可以看出,发射天线和接收天线之间的关系类似于发电机与电动机之间的关系,前者是在导行波与自由河波之间往返变换,后者圳在机械能和电能之间往返变换,这种相似性表明:收、发天线之间存在着·定的可逆性。第二汽中4易原理的讨论将证明,只要天线中不含有非线件材料(如铁氧体器件),同一副天线用作发射和川作接收时,其基木特性保持不变。此,本于册中讨论的各种类型天线一般都不特别注明它是发射天线或是接收天线(除特殊应川场合外),都按发射天线处埋。1.2天线类型随着无线电技术的飞速发展和无线电设备应用场合的H靥扩展,已出现了适于不同用途种类繁多的天线,在天线工程设计中选择哪种类型大线很人程度上取决于特应川场合系统的电气和机械方面的要求阵列大线对品种繁多的大线进行分类是件十分难的事。若按工作性线、蛋达天线播天线、电视人线等:若按频段又可分为长波天10 K 100k IM IOM IG 10G 100(线、中波天线、短波天线微波线等。但这些分类法都显得笼不太科学因为有的线既可作发射又可作接收,甚至可收发共用;有的大线既叮用丁通信又可用背达;有的大线既适用于短波又适用于超知波甚至微波。很难将它归属于哪一类行业天线手册将从三个人的方面来讨论天线I程问题,即犬线基础、天线设计和天线应用。在大线分类上则按天线辐射方式进行,适当考虑天线结构、作频段和应川等判素。我们将天线分为四组人寸(/x基木类型:线元天线、行波天线、阵列大线和孔径大线。它们适用的频率范围和天线的大致电尺寸如图1-1所示。表1.1中举出图1-1天线分类些常用天线实例及属的天线类别当然,将天线类型简单地划分为这四红基本形式也仅是·种近似,不能说它十分严密的科学性,因为总还能找到一些例外。但这种分类法有利于读者对本于册的阅表1.1天线类型线元天线阵列大孔径天线单极天线侧射阵角铧喇叭偶极天线菱形天端射阵扇形喇叭螺旋天线直线阵员喇叨陈缠人平面阵多模喇叭载体大线对数时期天线圆形阵混合模喇叭微带天线慢曼波天线波纹喇叭加载大线快波大线信号处坪抛物而瘌叭有源天线漏波逗应阵仪锥大线表面波天线多波束阼单反射面天线鞭状夫线长介质棒天线相控阵双反射面天线密度加权阵球形反射面无线极低副瓣阵偏置反射面天线「焦反射面天线切割反射面天线孔径扫描天线透镜天线角形反射面大线背射人线1.3场区划分假设将发射大线置于图1-2所示球坐标系统的原点处,它向周围辐射电磁波,则其周围的电磁波功率密度(或场强)分布般都是距离r及角坐标(6,q)的函数。因此根据离开天线距离天线位置的不同,将天线周围的场区划分为感应场区,辐射近场区和辐射远场区感应场区感应场冈是指很靠近天线的区域。在这个场区里,电磁波的图t-2球坐标中的天线感应场分量远大于辐射场,而占优势的感应场之电场和磁场的时间相位相差90°,坡印亭矢量为纯虛数,因此,不辐射功率,电场能量和磁场能量柑互交替地贮存于天线附近的空间内。图1-3(a)所小电尺寸小的偶极天线,其感应场区的外边界是λ/2x。这里,入是工作波长。无限大孔径大线不存在感应场区,有限大孔径天线,在其中心区域感应场区仍可忽略,只是在孔径边缘附近存在感应场,感应场随离川天线距离的增加而极快衰减,超过感应场区后,就是辐射场占优势的辐射场区了。图1-3(6)所示电人寸大的孔径大线的帮射场区又分为近场区和远场区1.3.2辐射近场区辐射近场区里电磁场的角分布与离开大线的距离有关,即在不同距离处的天线方向图是不同的。这是因为:(a)由天线各辐射元所建立的场之相对相位关系是随距离而变的;(b)这些场的相对振幅也是随距离而改变的。在辐射近场区的内边界处(即感应区的外边界处),天线方向图是-个主瓣和副瓣难分的起伏包感应场区辐射远场区辐射近场区感应b)孔径天线(a)电尺小小偶坂天线图13天线周围的场区络。随饣离开线距离的增加,直到近远场辐射区时天线方向图的主瓣和副瓣才明显形成,但零点电乎和副辦电平均较3.3辐射远场区辐射近场区的外边就是轴射远场区。这个区域里的特点是:(1)场的大小与离开天线的距离成反比;(2场的角分布(即方问图)与离开天线的距离无关;(3)方向图瓣、鲥瓣和零值点已全部形成辐射远场风的起始边界通常规定为2D(1.1式中,R是从观察点到天线的距离,D足天线孔径的最大线尺寸在这个距离上,孔径中心与孔径边缘到观察点的行程差为边缘与中λ/16,相应的相仪差为225°如果在这个距离上对孔经天线的辐程差=k缘与中心射特性进行测量,其结果与在无穷远距离上测得的结果相差甚微程差=λ/4在【程上是完全可以接受的天线通常是用来向远场区传送能量,因此,天线上作者的主要兴趣也在这一区域上。对孔径线尺寸为D,孔径面上相位恒定的大电尺寸天线而言,远场区的大部分能量集中在±λD弧度的角空间内;在靠近天线的地方,能量主要集中在宽度为D的管道内,如图1-4所示。在近场区的起始部分,可认为辐射大体|是平平行波束区标准-3d点行的;在R≥D2/2A的过渡区域内,场以半角为A/D弧度的锥形向外发散,R=D2/2A处的孔径中心与边缘行程差为A;在R≥近场区R=2Da/k场区2D2/A处则是天线的辐射远场区场在近场区域内的细微变化情况是复杂的,它取决于孔径面图1-4孔径人线的辐射上的特定振幅分布,但流过任一近场“管道”截面的功率恒等于总的辐射功率、随着向远场区的接近,功率密度逐渐趋于1/R2规律变化4功率传输若收、发天线相互处于远场区内,相距为R,若已知发射功率为P1,问接收天线接收的功率为多少?这是-个很有实际用途的工程向题无论通信、需达或电视、播,只要是无线信总传输系统都会面临这题,它与天线特性密切相关,因此,下面进行简要讨论设收发天线设置的相对坐标如图1-5所示。发射线输入功率为P,天线效率为,则辐射功率将是P该辐射功率P住接收天线处产生的功率密度为日,q)D).(6,g)4πR
    2021-05-06下载
    积分:1
  • Android英语学习应用(包含源代码)
    关于作品:这是一个英语学习的小应用。通过网络获取WebService服务的内容,每天教您一句英语短句,此外应用中也附带了词典翻译的功能,可以帮助您更好的理解不懂的单词。在日积月累中学习英语。对于Android编程学者本作包含的内容有Soap通信和WebService交互,手势识别,TextToSpeak等一些知识。
    2020-12-06下载
    积分:1
  • STM32仿PLC功能手册说明
    比较完善的STM32仿PLC方案,IO可以随意设置,功能较多!
    2020-12-05下载
    积分:1
  • AR模型参数估计(随机信号处理)
    随机信号处理AR模型参数估计报告及代码
    2020-12-03下载
    积分:1
  • MQTT推送简单例子服务端java代码实现
    IBM的MQTT给了一个PHP的服务端代码,在网上找了一个JAVA实现服务端代码的例子,调通了。如果想做这个例子需要自己用电脑建一个wifi,手机连上这个wifi,代码中要改几个个地方1 android服务里有几个MQTT_HOST是ip地址改成自己wifi的ip;2 服务端的publish方法是用来发送的,第一个参数是客户端id clientId,要改成自己在手机客户端设定的名字,前面还有个域,比如mqttClient.publish("tokudu/"+clientId, message.getBytes(),0, false); 我的clientId是sly。其他的大家就自己研究
    2020-11-30下载
    积分:1
  • 基于opencv的双目相机标定代码
    双目标定代码。解决方案Opencv已配置好。里面有说明文档和实验图片。可以直接运行,也可以根据自己的需要重新拍摄图像进行双目标定。
    2021-05-06下载
    积分:1
  • 696518资源总数
  • 104349会员总数
  • 32今日下载