NI LabVIEW,CVI,数据采集等产品讨论区

取消
显示结果 
搜索替代 
您的意思是: 

急!!!UDP的问题

程序总体有两个while循环,循环1为UDP收数,循环2为数据处理
1  循环1通过UDP READER 收数据,UDP函数设置为:最大等待时间是0ms,最大数据长度为548字节,收到数据后进行数据校验,将通过校验的数据根据IP号分别导入不同全局变量,然后循环1强制等待5ms(调用wait函数)。
2  循环2每一秒循环一次,将在循环1中导入的的数据进行数据分析。
3  两个循环并行进行
问:循环1中等待的5ms对UDP收数有没有影响,为什么原先设置为50ms就会出现数据丢失的情况?

 

另外,既然两个while循环是并行进行的,循环1的5ms对于循环2应该是没有影响的,应该不存在循环2来不及处理的情况

后来,我们尝试过把5ms改为1ms,也没有出现丢数据的现象,但是我们担心让UDP不间断地读数据,是不是会影响其他的程序,不知道我们的担心是不是多余的

请各位帮忙分析分析!谢谢

0 项奖励
1 条消息(共 3 条)
3,609 次查看

snaillulu 你好,

 

感谢使用NI中文技术论坛! 请问最大等待时间设置为0ms的目的是什么?这样设置的结果是,在指定时间,即0ms内,如果没有接收到任何字节,函数将会完成操作并返回错误。此外,建议用生产者消费者结构来编写你的任务,因为队列的先进先出原则确保数据不会丢失,前提是队列不溢出。

 

Application Design Patterns: Producer/Consumer

http://zone.ni.com/devzone/cda/tut/p/id/3023 

 

NISH AE

W. Yan 

"spawn more overlords" means "create another subVI, dude", literally
0 项奖励
2 条消息(共 3 条)
3,597 次查看
谢谢!
当初这么设置是想让UDP reader一直去读端口,那如果说我把最大等待时间改为5ms,在把循环1中强制wait的5ms去掉是否可以避免udp收不到数而报错的问题?这样是否也能避免丢数据的问题?
对方发送的数据不是很多,1秒4000个字节的数据,队列应该没有出现溢出
帖子被snaillulu在 06-11-2010 06:14 AM
时编辑过了
0 项奖励
3 条消息(共 3 条)
3,592 次查看