登录
首页 » Others » Labwindow_cvi TCP UDP通信例程

Labwindow_cvi TCP UDP通信例程

于 2021-05-06 发布
0 234
下载积分: 1 下载次数: 1

代码说明:

该文件包含Labwindows/cvi TCP和UDP通信的实例程序

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

发表评论

0 个回复

  • 内存乒乓缓存机制和消息分发机制的C代码实现
    用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
    2020-12-03下载
    积分:1
  • 数字控制振荡器_nco_的fpga实现
    介绍了NCO 数字控制振荡器的工作原理 详细分析了数控振荡器的性能指标和其在FPGA中的实现方法 最后给出了新设计的数控振荡器在QUARTUS2 中的仿真结果第12卷第11期电子元器件用VoL 12 No. 112010年11月Electronic Component Device ApplicationsNov.20102069n80#顶(101#围100am)20020数篇0291潮0x)萨:日6959173国0国L图1 QUARTUS II下仿真波形图功率谱密度函数信号波形图X:4080-sn(2pi*18e61)Y5014余强信号H正弦信"7彐300>…-÷a是2500300035004C004500500055006000250255260265270275280285290图2输出频率为408ⅥH的信号波形与功率谱密度5结束语参考文献本文通过分析数控振荡器的实现原理和性张欣扩频通信数字基带信号处理算法及其vS实现能,给出了通过FPGA来实现NCO的具体方法[M]北京:科学出版社,2004同时通过 QUARTUSⅡ中的仿真验证了本设计的[2]楼顺天MAT.AB7x程序设计语言[M西安:西安电子科技大学出版社,200正确性。结果证明,用该方法设计的NCO可以输3]汤伟良,等数控振荡器在FPGA中的实现门微型机与出多种频率的信号,同时也可以减少资源消耗。应用,2003,22)X(上接第41页表1分档信息及对应放大/哀减量息,也提高了实时数控AGC电路的动态范围和整档位输入信号功放大衰档位输入信号功放大衰个系统的精度。实验结果表明,该电路能够实现号率范围/dBm减量dB号率范围/dBm诚量/dB实时AGC的电路功能,并有效扩展了动态范围。1「12,20186「-33,-24)3523,12)7参考文献36,3)8[51,4杨小牛,楼才义,徐建良软件无线电原理与应用[Ml4-15,-6)9[-80,-51)北京:电子工业出版社,200151-24,-1526实时放大衰减。同时利用FPGA器件良好的数字2]韩尧秦开宇基于数字补偿的实时自动增益控制技术研究[.电子科技大学学报,2007,36(1):79-81特性实现了数控AGC的设计,从而实现了对信号3陈爽高性能频谱分析仪中频信号处理技术研究U的实时数字增益补偿,有效减少了电路体积。同合肥:合肥工业大学,2007时,采用两级数控增益放大/衰減器级联和根据[4曹鹏,费元春.大动态范囯数字中频ACC系统的设计两路不同增益通道提取的度值来判断档位信门北京理工大学学报,2003,23(5:613-61644电子元器件在用2010.11www.ecda.cn
    2020-12-07下载
    积分:1
  • FPGA PWM。。。。。。。。。。。.rar
    【实例简介】fpga学习,。。。。。。。。。。。。。。。。。。。。。
    2021-12-13 00:47:24下载
    积分:1
  • 电子密码锁 单片机课设
    电子密码锁是现代电子科技与安全结合的产物。它在现代锁业扮演着重要的角色,本文的主要内容是用AT89c52单片机为核心控制元件,用存储器24c04进行存储密码锁的密码,当用户输入的密码与存储器储存的密码相同时,即可开锁成功,并也可以修改密码,若不相同,则不能开锁,并提示密码错误。
    2020-12-08下载
    积分:1
  • 神经网络bp算法ppt讲义
    感知器神经网络内容包括基于BP算法的多层前馈网络模型BP算法的实现,基本思想,推导过程,程序实现,BP学习算法的功能
    2020-12-09下载
    积分:1
  • 基于windows的蓝牙扫描、连接、通讯(vs2010运行成功)
    之前下载的BlueToothExc代码,文件不全,这是完整的代码,能运行成功
    2020-12-12下载
    积分:1
  • 全球78707个主要城市数据库, 含经纬度及国家省份,已经导出成了SQL文件
    全世界78707个主要城市信息MYSQL数据库,包含经纬度坐标值,已经导出成了SQL文件,因为比较大,有10M
    2020-05-30下载
    积分:1
  • 二进制粒子群优化算法源码
    针对解形式为二进制编码形式的问题的粒子群优化算法matlab源码
    2020-11-28下载
    积分:1
  • 基于MATLAB的电力系统潮流计算
    本代码用于五节点系统(第五节点为平衡节点)的在直角坐标系下的潮流计算,也可以拓展为任意节点的情况。共含有四个子程序,分别为雅克比矩阵的计算、功率电压不平衡计算、中间好、过程以及最终结果计算。适用于课程设计,亲测有效。
    2021-05-06下载
    积分:1
  • 西门子S7-1200 SCL指令手册.pdf
    西门子1200PLC SCL编程指令手册,详细介绍西直门1200和1500PLC的SCL编程指令R_TRG检测信号上升沿(S7-1200,S7-1500)RTR|G:检测信号上升沿唱圆说明使用检测信号上升沿”指爷,可以检测输入CLK的从“0"到“1”的状态变化。该指合捋输入CLK的当前值与保存在指定实例中的上次查询(边沿存储位)的状态进行比较。如果该指合检测到输入CLK的状态从“03变成了“1”,就会在输出Q中生成一个信号上升沿,输出的值将为TRUE或“1”一个周期。在其它任何情况下,该指合输出的信号状态均为“0”。烀该指合插入程序中时,烀自动打开“调用选项" Call options)对话框。在该对话框中,可以指定将边沿存储位存储在自身数据块中(单背景)或者作为局部变量存储在块接口中(多重背景)。语法“检测信号上升沿”指爷的语法如下所示(CLK:=参数下表列出了“检测信号上升沿”指爷的参数:参数声明数据类型存储区说明CLKInputBOOL、Q、M、D、L|到达信号,查询该信号的边QOutputBOOL1、Q、MAD、L边沿检测的结果示例以下示例说明了该指合的工作原理SCLR TRIG DB"(CLK : -TagIn>Tagout)i输入CLK中变量的上一个状态存储在“ R TRIG DB”变量中。如果在操作数Tagn1和"Tagn2”或在操作数“Tagn3中检测到信号状态从“0变为“1”,则输出“ Tagout_Q的信号状态为“”一个周期。3F_TRG:检测信号下降沿(S7-1200,S7-1500)FTRG检测信号下降沿唱圆说明使用检测信号下降沿”指爷,可以检测输入CLK的从“1”到"0”的状态变化。该指合捋输入CLK的当前值与保存在指定实例中的上次查询(边沿存储位)的状态进行比较。如果该指合检测到输入CLK的状态从“1"变成了“0,就会在输出Q中生成一个信号下降沿,即输出的值烀为TRUE或“1”一个周期。在其它任何情况下,该指合输出的信号状态均为“0”。烀该指合插入程序中时,烀自动打开“调用选项" Call options)对话框。在该对话框中,可以指定将边沿存储位存储在自身数据块中(单背景)或者作为局部变量存储在块接口中(多重背景)。语法“检测信号下降沿”指爷的语法如下所示(CLK:=参数下表列出了“检测信号下降沿指合的参数:参数声明数据类型存储区说明CLKInputBOOLQ,M、D、L到达信号,查询该信号的边沿QOutputBOOLQ、M、D、L|边沿检测的结果示例以下示例说明了该指合的工作原理SCLF TRIG DB(CLK :TagIn2 =>Tagout)输入CLK中变量的上一个状态存储在“FTRG_DB"变量中。如果检测到操作数“Tagn"的信号状态从“1变为“0”,则输出" Tagout"的信号状态为“1"4定时器操作(S7-1200,S7-1500)定时器操作该章节包括以下主题的信息:TP:生成脉冲S7-1200,S7-1500)TON:接通延时(S7-1200S7-1500ToF∴关断延时(S7-1200,S7-1500)●TONR:时间累加器(S7-1200,S7-1500)RESET TIMER:复位定时器(S7-1200,S7-1500)PRESET TIMER:加戟持续时间(S7-1200,S7-1500)°传统(S7-15005TP:生成脉冲(S7-1200,S7-1500)TP:生成脉冲唱圆说明使用“生成脉冲”指合来设置持续时间PT的参数Q。当参数|N的逻辑运算结果(RLO)从0变为“1”(信号上升沿)时,启动该指合。指合启动时,预设的时间PT即开始计时。随后无论输入信号如何改变都会将参数Q设置为时间PT。如果持续时间PT仍在计时,即使检测到新的上升沿,参数Q的信号状态也不会受到影响。可通过ET参数查询当前的时间值。该时间值从T#0s开始,在达到持续时间PT后结束。达到持续时间PT时,且参数|N的信号状态为“0”,则复位参数ET。说明如果程序中未调用定时器(这是因为会忽略定时器),则输出ET会在定时器计时结束后立即返回个常数值。每次调用“生成脉冲指合,都会为其分配一个G定时器用于存储指合数据。对于S7-1200cPUEC定时器是一个 C TIMER或 TP TIME数据类型的结构,可如下声明声明为一个系统数据类型为|C_TMER的数据块(例如,MyEC_TMER●声明为块中“ Static程序段内类型为 TP TIME的局部变量(例如,# MyTP_TIMER)对于S7-1500cPUEC定时器是一个 C TIMER、旧 C LTIMER、 TP TIME或 TP LTIME数据类型的结构,可如下声明声明为一个系统数据类型为 C TIMER或lC_ LTIMER的数据块(例如," MylEC_TIMER”)声明为块中 Static部分的 TP TIME或 TP LTIME类型的局部变量(例如,# MyTP_ TIMER)在程序中插入该指合时,将打开“调用选项” Call options)对话框,可以指定C定时器将存储在自身数据块中(单个背景)或者作为局部变量存储在块接口中(多重背景如果创建了一个单独的数据块则该数据块捋保存到项目树“程序块>系统块"( Program blocks> System blocks)路径中的“程序资源( Program resources)文件夹内。有关本主题的更多信息,请参见“另请参见"。只有在调用该指合且每次都会访问Q或ET输出时,才会更新指爷数据。语法生成脉冲”指合的语法如下所示●系统数据类型为EC_ Timer的数据块(全局DB)SCLTP(IN:=PT:=ET=>●局部变量TP:生成脉冲(S7-1200,87-1500)SCLmoloc1 timer(工NPT:=rQ=>)该指合的语法由以下部分组成参数声明数据类型存储区说明s7-1200S7-1500NBOOLBOOL.M.D.|启动输及脉冲的持续时PTIniTIMETIMEl、Q、M、D、间。LTIMEPT参数的值必须为正数OutputBOOLBOOLQ、M、D、在PT持续时间内保持置位状态的操作数TIMEETOutputMEl、Q、M、DLTIME当前时间值有关有效数据类型的更多信息,请参见“另请参见"。脉冲时序图下图显示了“生成脉冲”指合的脉冲时序图PTPTPTET示例7TP:生成脉冲(S7-1200,S7-1500)以下示例说明了该指爷的工作原理SCLTP DB".TP(IN Tag start,PT :=Tag PresetTime"Tag statusET =>"Tag ElapsedTime")i当“ Tag_ start"操作数的信号状态从“0”变为“1"时,PT参数预设的时间段开始计时,同时"Tag_ Status"操作数置位为“1”。当前时间值存储在 Tag_ ElapsedTime"操作数中8TON:接通延时(S7-1200,S7-1500)TON:接通延时唱圆说明可以使用接通延时”指合捋Q参数的设置延时PT指定的一段时间。当参数N的逻辑运算结果(RLO从“0变为“1”(信号上升沿)时,启动该指合。指合启动时,预设的时间PT即开始计时。超过持续时间PT时,参数Q的信号状态变为“1。只要启动输入仍为“1”,参数Q就保持置位。如果|N参数的信号状态从“1变为"0”,则复位参数Q。当在参数N上检测到一个新的信号上升沿时,将重新启动定时器功能。可通过ET参数查询当前的时间值。该时间值从T#0s开始,在达到持续时间PT后结束。只要参数N的信号状态变为0”,就立即复位ET参数。说明如果程序中未调用定时器(这是因为会忽略定时器),则输出ET会在定时器计时结束后立即返回一个常数值。每次调用“接通延时指合,必须捋其分配给存储指合数据的EC定时器对于S7-1200CPUEC定时器是一个 C TIMER或 TON TIME数据类型的结构,可如下声明●声明为一个系统数据类型为 C TIMER的数据块(例如, MylEC_ TIMER”)●声明为块中“ Static"程序段内类型为 TON TIME的局部变量(例如,# MyTON_TIMER)对于S71500cPUEC定时器是一个|EC_TMER、 EC LTIMER、TON_TME或 TON LTIME数据类型的结构,可如下声明●声明为一个系统数据类型为旧EC_ TIMER或C_ LTIMER的数据块(例如," MylEC_TIMER")声明为块中“ Static"部分的 TON TIME或 TON LTIME类型的局部变量(例如,# My TON_ TIMER)在程序中插入该指合时,捋打开“调用选项( Call options)对话框,可以指定C定时器烀存储在白身数据块中(单个背景)或者作为局部变量存储在块接口中(多重背景)。如果创建了一个单独的数据块,则该数据块捋保存到项目树“程序块>系统块( Program blocks> System blocks)路径中的“程序资源Program resources)文件夹内。有关本主题的更多信息,请参见“另请参见”。只有在调用该指合且每次都会访问Q或ET输出时,才会更新指合数据。语法接通延时指合的语法如下所示●系统数据类型为C_Tmer的数据块(全局DB)SCLTON(N:=PT:=,Q=>,三=>)9TON:接通延时(S7-1200,S7-1500)●局部变量SCLmoloc1 timer(工N:=rPT:=rQ=>ET)该指合的语法由以下部分组成参数声明数据类型存储区说明s7-1200s7-1500NInputBOOLBOOLl、Q、M、D启动输入接通延时的持TIME、Q、M、D、续时间PTInputTIMELTIMEPT参数的值必须为正数定时器PT内时OutputBOOLQ、M、D、间用完时,保持BOOL置位状态的操作数。TIMETIMEQ、M、DETOutputLTIME当前时间值有关有效数据类型的更多信息,请参见“另请参见”。脉冲时序图下图显示了“接通延时指合的脉冲时序图PTET
    2020-12-03下载
    积分:1
  • 696518资源总数
  • 106148会员总数
  • 10今日下载