程序总体有两个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不间断地读数据,是不是会影响其他的程序,不知道我们的担心是不是多余的
请各位帮忙分析分析!谢谢
snaillulu 你好,
感谢使用NI中文技术论坛! 请问最大等待时间设置为0ms的目的是什么?这样设置的结果是,在指定时间,即0ms内,如果没有接收到任何字节,函数将会完成操作并返回错误。此外,建议用生产者消费者结构来编写你的任务,因为队列的先进先出原则确保数据不会丢失,前提是队列不溢出。
Application Design Patterns: Producer/Consumer
http://zone.ni.com/devzone/cda/tut/p/id/3023
NISH AE
W. Yan