Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


shoneill last won the day on December 4 2018

shoneill had the most liked content!

Community Reputation


About shoneill

  • Rank
    The 500 club

LabVIEW Information

  • Version
    LabVIEW NXG 2.0
  • Since

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. One VI to rule them all, one VI to find them, One VI to bring them all and in the darkness bind them.
  2. To make sure no Events are lost I usually just register the user event at the moment of creation and pass out the event registration refnum for the event. Then, any events sent before the Event loop is running are not lost, they are stored within the event registration refnum queue. A different idea is the ability to get the last sent value. I typically involve the event loop in this as it "owns" the values and other processes may actually update the values (such as internal consistency checks) so that the last "sent" value is not actually up-to-date. But I canunderstand the idea behind being able to efficiently get this value back.
  3. I had a look at the code, but I guess it's lost on me a little. So the idea is that the code allows for stateful sending of events, that one can recall immediately the last value sent via Event (stored in a Notifier)?
  4. Separate out the external Queue from the internal one. If the internal queue has elements in it, ignore the external queue. Only read an element from the external queue when the internal is empty. You can extend this to N layers by maintaining a stack of queues, where element zero is the external queue (should never be destroyed). All internal states which enque further states do so on a newly-created internal queue and pushes all other queues down the stack. This way you get deterministic execution of your states. Guaranteed execution order without interruption and a way of investigating the execution flow (depth of stack and so on). Of course when an internal Queue is empty, it is destroyed and the top-most queue is retrieved from the stack. I keep coming back to the definition of a "Pushdown Automaton" even though it really does not fit, but it helps me to visualise what's going on. Imagine that the input tape and the stack are the same thing. Each input tape is an element of the stack. Pushing and popping input tapes allows you to essentially create subroutines.
  5. Nice. Never heard of that one before. Fits nicely.
  6. Maybe it's a new version of the Marshmallow test.
  7. It would be nice to have a changelog accessible before having to download the installer first.... All I see is a critical patch link, but this doesn't look like a changelog to me at all. Have I missed something?
  8. BTW, the ability to connect a NULL reference is intended. This way, you can switch off certain events by modifying the Event Registration Refnum entries with NULL values. I have code where I register for certain events outside of a loop with exclusively NULL references, only to have a different event actually deliver the correct event references to listen to. This way the Event registration refnum is created at initialisation but remains essentially inactive until "primed".
  9. Why would there be a coercion dot on the input of a function whose name implies it is being used for a coercion? The fact that a coercion is taking place is obvious due to the presence of the node for doing the coercion...... That aside, I think the addition of type safety would be a welcome additional function. But does your function allow us to coerce a U8 to a U16 for example? Here no data is lost and it should be completely safe (under the assumption the programmer knows what they are doing).
  10. Hmm, maybe the manual "Save As..." and the Programmatic "Save As..." are not equivalent? Or memory fails me. I thought it wasn't neccessary to replace the controls if doing a manual "Save As...".
  11. which is basically just automating what I said above..... Do you really need to change the controls? When you do a Save As from LV, it changes the type of the controls for you.....
  12. Right-click the Default class in project and choose "Save As...", then create an unopened copy. You only need to rename the terminaly, but there's a quick drop shortcut available for that somewhere (rename labels). You need to manually change inheritance.
  13. A Class knows only it's parent, not it's grandparent before being instantiated. Dynamic loading of classes prevents knowing this beforehand.
  14. Ah, so you need 250kHz throughput, not 4us latency. Then why on earth was the 4us so prominent in the earlier posts..... anyway..... Yes, given an maximum allowed latency, parallel processing over several FFT processes will help you get to where you need to be. Just keep track of the resource utilisation of the FFT cores. It seems like the Radix-4 burst IO version allows 10 channels of 16-bit resolution with a base clock of 250MHz and a latency of approx. 26us. Streaming allows only one channel, so I don't know how well that's going to work out for you.... I have no experience with the FFP IPCore. (except what i have just tried in order to get the information listed above).
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.