labview UDP高速通讯问题

问题1:

当UDP包以很高的数据速度(大于2Mb/s)传入时,数据包开始丢失,尤其当CPU还需要处理其他的任务时。

解答: 

当UDP数据包传输速率足够大时,Labview将无法维持UDP的套接字缓冲区。这个问题只有当labview把缓冲区中的数据转移到队列或者写入文件中时发生。那么,可以通过增加操作系统的套接字缓冲区的大小来解决这个问题,这样会提供更多的时间让labview来处理缓冲区的数据,保证在套接字缓冲区溢出之前读取数据。


以上为NI官网的回答。

但在实际的使用过程中,这个缓冲区的大小是不能设置的,推断以上说明不能实施。

问题2

“增加操作系统的套接字缓冲区的大小”如何实现?

问题3

在LabVIEW中使用UDP

UDP不是基于连接的协议,如TCP,因此无须在发送或接收数据前先建立与目的地址的连接。但是,需要在发送每个数据报前指定数据的目的地址。操作系统不报告传输错误。

使用打开UDP函数,在端口上打开一个UDP套接字。可同时打开的UDP端口数量取决于操作系统。“打开UDP”函数用于返回唯一指定UDP套接字的网络连接句柄。该连接句柄可在以后的VI调用中引用这个套接字。

写入UDP函数用于将数据发送到一个目的地址,读取UDP函数用于读取该数据。每个写操作需要一个目的地址和端口。每个读操作包含一个源地址和端口。UDP会保留为发送命令而指定的数据报的字节数。

理论上,数据报可以任意大小。然而,鉴于UDP可靠性不如TCP,通常不会通过UDP发送大型数据报。

当端口上所有的通信完毕,可使用关闭UDP函数以释放系统资源。

 

问题3

如何实现千兆以太网?
使用第三方软件,WinPcap,对其开发包中的函数进行二次封装,打包成dll库。其工作原理和实现方式网上有篇文章,

《基于LabVIEW的以太网数据监听与通信》讲述了此方法实现的原理。

WinPcap的资料可以在网上自行搜索。开发包和资料都可以找到。打包完成的动态库可以在我的资源里搜索到。名称“Labview调用WinPcap使用千兆以太网”
实际测试已经通过。以上资料整合与NI的网站。
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值