Hi Dani,
would you have some raw data for us to work on? I can't recognize whether your raw data is just 4 points, or already a reactangle...
Thanks,
Niko
Hi Dani,
would you have some raw data for us to work on? I can't recognize whether your raw data is just 4 points, or already a reactangle...
Thanks,
Niko
Hi olaola,
sampling frequency and number of samples is both set at 100,000Hz and 100,000 samples.
That gives you a frequency resolution of 1Hz after the FFT…
When you want a finer resolution you need to increase the sample count!
Kamilnd wrote:[...] when i deploy this to my web server key press stops working...
You never mentioned any web server before. Maybe it is a good point to describe what you want to achieve. Your previous description has been blurry at best and hence we can only provide simple answers which might lead you down a track full of stones and headaches.....
Just as the title, my 9082 can work well yesterday, and I didn't change any settings, but this morning, it can't work any more.
I can not connect it through Lab view, so I tried to restart the computer, the D-link, and the 9082, it seems not make any difference. And the status shown in NI MAX is 'inconsistent IP settings'. However, I tried to change the network setting in NI MAX to static as well, it seems no make any difference.
I don't know what to do next.
Same issue with labview 16 and Scilab 6.0.0 32 bit on windows 7.
Is there a solution ?
Thanks
I made a simple error in my last post. I left a Destroy Queue in place. After removing it there was much better performance. After testing all of the suggestions here are my findings.
Wired Queues have the best performance and all other methods will be measured against using only wires to pass a single reference.
Performance = 1x
Named Queue with (Obtain/ Enqueue/ Destroy) combo where needed
Peformance = 10x
Named Queue with Non-Rentrant FGV Sub-VI
Performance = 4.5x
Named Queue with Pre-Allocated FGV Sub-VI
Performance = 2.2x
Hybrid Named Queue with Pre-Allocated FGV Sub-VI Wired inside each loop. Basically this method cleans up all the wires between various loops and has very little performance overhead.
Performance = 1.06x
All things considered, I will end up using the Hybrid method. It allows for a clean block diagram and has very close performance to using native wires.
Thanks for all the suggestions.
You need to "set a flag" when the threshold is reached and you have sent the email.
Check the flag each time you check the pressure, and don't send an email if the pressure remains low and the flag is set.
Remember to clear the flag when the pressure returns to normal so you will be ready to send another email next time.
How are you determining "performance"? Your first and last setup are pretty much identical, so if you are seeing a 20% "performance" difference I don't think your measure is accurate.
crossrulz wrote:Personally, I take the Action Engine further. I have 3 actions it can perform: Get Reference (does the Obtain if reference is invalid), Send, Close (destroys the queue). If you want to go full out, you have a wrapper VI for the Send action and have the actual AE private to the module that reads the queue. This does require a library for each module. But the module that reads from the queue maintains it (obtain at start, release when done, sit there and read in the middle). And for somebody to send a message, they just call that wrapper VI mentioned earlier. No opening and closing of references. No names needed.
The first time I did this I made a 4th case as well - Dequeue Element. It didn't take long to find that everything locks up when one VI has already called Dequeue and no one can send any messages because it is non re-entrant
This post has nothing to do about queue performance but may give you something to think about for your next project.
I used to use multiple queues like yourself, but got tired of multiple wires and worrying about destroying references, etc. I switched from queues to user events and have not looked back. User Events allow me to have 1 wire/reference reach any loop, subVI, etc, in my program. I use a combination of the JKI State Machine and an architecture similar to
http://forums.ni.com/t5/Example-Program-Drafts/Message-Bus-Architecture-An-Intro/ta-p/3512280
For more information regarding User Events see
https://github.com/JackDunaway/LabVIEW-User-Events-Tips-Tricks-and-Sundry
mcduff
Create value changed even on the array and find the changed array element by comparing old and new event node.
@gregoryj ... I made a wrong calculation. My actual performance difference is 1.06x. I have updated my post to reflect this. The measurements were made with very simple vis in order to get a relative idea of performance. In this case I only ran the VI for 1.17 seconds. If this were in a real application running for a long time the performance difference would approach zero.
Altenbach's suggestion in image form
mcduff
Here's a quick example:
I'm not quite sure what you're looking for here. You want an array to be converted to a string, and then written to a CSV? Or an array of strings to be written to CSV?
Nick B.
Applications Engineer
National Instruments
To get an "index" of the changed cluster element, convert the value from "changed element" to a boolean array using cluster to array and again search for the truth ). The resulting index can be wired to a case structure so you can execute different code depending on which cluster element has changed.
Look in the NI Example Finder with the search term DAQmx. Located under the Help Menu.
You should be able to find a single loop example there. You will need to communicate to your loop to start and stop it.
Otherwise without seeing your VI it is hard to offer suggestions. (You may be able to make a simpler case to post).
mcduff
actually i am new to the labview and communication. can you please share your vi files. I want to check how are you deteting the frames.
Can you also tell me how can I check power delay profile?.
I tried it and it works fine for me (LV2016, Office 2010). I agree it is odd that the break type value is set to 0, but since 0 is not a valid WdBreakType enum type value the Range.InsertBreak method is probably using its default value which is wdPageBreak. Can you show us how you're using it?
Ben64
I don't know if this graph is right for my project but I figured I would try it. I was wondering how I would build the Digital Waveform graph from 2D data, if that's even possible.