07-29-2015 07:13 AM
The Fetch Rx Data vi contained in the Rx Streaming (Host) example doesn't seem to want to time out for me. When a data underflow occurs, instead of timing out and giving up (per the documentation), it just locks up whatever loop it's in until the application is restarted. Is there a way to modify this vi to prevent it from stalling my RX loop?
If I drill down to the Fetch Rx Data (U32) vi, I can see that the Timeout method in the Invoke function is grayed out. Is that significant?
Thanks.
07-30-2015 03:46 PM
What version of LabVIEW are you using? The grayed out style of the Timeout (ms) is expected so I don't believe that is the source of the error. Have you tried wiring in a 0 to the Timeout (ms) to see if it immediately times out and throws an error?
07-30-2015 05:59 PM
Thanks for the suggestion. I see now that the timeout does actually do something. Just not what I want it to do.
If I don't wire the Timeout input and then I stop the FIFO data, it stalls the loop while it's waiting for more data. If I feed it more data then it's happy and the loop iterates. If I wait until it times out (10 seconds by default) the loop stays locked up for good. If I stop the application I get no error, but if I stop just the loop it throws a -50400 at me.
If I wire a 0 to the timeout it doesn't work at all because there are gaps in my FIFO data (the FPGA won't send any unless it's triggered).
So I guess my question becomes this: does anyone know of a way to poll the DMA FIFO status so that I can execute Fetch RX Data conditionally?
Thanks again.
07-31-2015 07:54 AM
@Gato-Ray-d wrote:
What version of LabVIEW are you using?
It occurred to me that I didn't actually answer this question. I'm using LV 2014.
07-31-2015 04:06 PM
What information do you want to poll for and what conditions do you want to fetch on?
08-01-2015 09:14 AM
@Gato-Ray-d wrote:
What information do you want to poll for and what conditions do you want to fetch on?
I just need a method of determining whether or not there's data in the FIFO. If there isn't, I could skip the Fetch RX Data vi (and several other downstream functions) and keep the loop from locking up.
I'd be looking for such a solution right now but another programmer has our development system tied up today...
Regards, and thanks for the input.
08-03-2015 11:32 PM
What if instead of employing a polling function, you configured the DMA FIFO to a known size using the Configure invoke method and only iterated the loop to the number of times you specify?
Here is a link elaborating on the functionality of this invoke method: http://zone.ni.com/reference/en-XX/help/371599E-01/lvfpgahost/fpga_method_fifo_config/