The Parallel For Loop is perfect for parallel processing of an input array, and reassembling the results in the correct order, however this only works if the array is available before the loop starts. There is no equivalent "Parallel While Loop" which might process a data stream - so what is the best architecture for doing this?
In my case, I'm streaming image data from a camera via FPGA, acquiring 1MB every ~5ms - call this a "chunk" of data - and I know I will acquire N chunks (N could be 1000 or more). I then want to process (compress) this data before writing to disk. The compression time varies, but is longer than the acquisition time. So I'd like to have a group of tasks which will each take chunks and return the results - however it's no longer guaranteed that the results are in the same order, so there's a bit of housekeeping to handle that.
I have a workable architecture using channels, but I'd be interested in any better options. Easiest to explain with a simplified code which mimics the real program:
It requires the processing to use a Messenger channel (i.e. Queue) because a Stream channel cannot work in a Parallel For Loop, but this doesn't maintain order. And the reordering is a little messy - perhaps could be tidied using Maps but I don't have 2019 at the moment. The full image is too large to keep in memory (I'm restricted to 32-bit because the acquisition is from an FPGA card), so I need to process and write the data as it becomes available. I've considered writing a separate file for each chunk, but writing millions of small files a day is not particularly efficient or sustainable.
Is there a better approach? Have I missed something? I feel like this must be a solved problem, but I haven't come across an equivalent example. Could there be a Parallel Stream Channel which maintains ordering, or a Parallel While Loop which handles a defined number of tasks?
By Gan Uesli Starling
We have a gage supplied by a company that shipped it with a *.exe application targeted for LVRTE 2009. I need to retarget it for 2017, but don't have the source code. The supplier had said they'd gladly supply me with a copy of the *.LV source, but they have looked and cannot find their own copy in-house.
History of Need: Our global corporate mother ship's IT department, in their infinite wisdom, is mandating an upgrade from Win7 to Win10. That with yet even further constraints. They enforce a list of "approved versions" of "approved applications". And for LVRTE, they are insisting upon 2017, with 2009 being a red light.
So, then, my query. Is converting an app without the source for a higher LVRTE doable at all? File is attached.
If it is doable, instructions on how?
When I try to install LabVIEW 8.5.1 runtime or visa 4.1 on an Intel NUC with CPU i5 7260U I get:
Microsoft Visual C++ Runtime Library
Program ........\LV RunTime 8.5.1\setup.exe
This application has requested the Runtime to terminate it in
an unusual way.
Please contact the application's support team for more
Just in case I installed Visual C++ 2005 redistribution and checked under add remove programs that the Windows feature of allowing version under .net 3.5 to run was enabled.
This is not an ARM based processor so why does LabVIEW has a problem installing on the NUC?
I've been maintaining and improving a LabVIEW project which controls and automates a prototype microscope array for 2 years. I'm an engineering apprentice so I don't have that much experience with LabVIEW.
The current framework of the project is a simple "Producer/Consumer" which has served well but is no longer future proof and scalable. I want to revamp the program which is quite big and complex. And I need help since this will be the first time of actually starting a real project from the ground up.
The most modular and scalable framework I found was the QMH (Queued Message Handler). It's similar to the basic P/C loop and has the possibility to have multiple parallel consumer loops. But I have no experience on starting from 0.
If any you have docs or give advice on starting the project would be appreciated. Especially something on codding with a QMH structure would be helpful.
Cheers from France!
I've got a situation where some controls change their position on the build application however only on the target system.
This is not just limited to a specific type of control and it does not even effect all controls on the same FP.
Up till now the behavior seems to be limited to controls inside a tab-control.
My development machine is Win7 with LabVIEW 2011 installation and the target system operates on XP.
I'm not to much bothered by it since it does not effect my main UI (which is build using classic controls btw), but it is a rather strange behaviour.
Now for a solution:
I had some good results by moving the controls in the dev-environment with space-right / space-left once, therefore the position is not altered, but the build
application seems to run just fine for most of the controls.
I might be able to post a screenshot next week.
Does anybody had experienced a similar behavior with such a setup?
This issue might be related to that topic: http://lavag.org/topic/16911-prevent-control-resize-when-changing-monitors/
However my controls change their actual position, where the related topic changes height & alignment (of the text inside).