Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by Taylorh140

  1. This may bet a better lead; It has a lot of similarity. https://docs.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-waitforsingleobject I have never seen this used. but it does seem to work. With similar performance.
  2. Something we can both be glad about. I think I might have a lead. https://stackoverflow.com/a/35389291 But ,I'm still not sure what's going on there, they clearly did a good job.
  3. In the example above I'm more interested in how NI implemented the waiting on the queue. It seems to have better performance than I would imagine possible. I probably made some bad assumptions on the example. Assumption 1: Two while loops run on different threads. Assumption 2: If threads yield to OS response of queue would be > 1ms on average. Assumption 3: If threads actively wait CPU usage would be high. Assumption 4: Neither of these methods make sense with the information collected.
  4. So lately I have been more interested in scheduling. Two methods I am aware of are below. This is in the context of Windows OS btw. Active Waiting (polling) Know for High CPU usage Accurate to less than 1ms Yielding OS wait (Thread telling OS give someone else my time slice) Very low CPU usage Takes OS integration (e.g. less portable) Much less time accurate jitter etc. expect best performance to be 1ms resolution So I have been curious about the timeout function of the deque element f
  5. I tried to do a test to see if any of the windows fonts do anything. (forgive the long image). I'm starting to wonder if windows has this function in any form. perhaps there are some fonts that do work but the ones included with windows do not seem to do much:
  6. In The Draw Text at a Point VI under the user-specified font there are two settings that I do not understand. -Outline - seems like it should put a black outline or something around the text. as far as i can tell it doesn't do anything. -Shadow - seems like it should put a darker outline around part of the text. as far as i can tell it doesn't do anything. How do these work or lack there of?
  7. Wow, Thanks! It's good to be wrong. It does sound though I was right to be weary of calling DLL's meant to call LabVIEW functions, especially when LabVIEW versions change. But it sound like LabVIEW calls its own exposed functions (lvrt.dll i assume) when dealing with Queues. I wonder if building a dll for calling the queues and then debugging these would give me the prototype. (following the data to the builtin's) #unrecommended but a quick way to do devious things. (most likely learning that it is a bad idea and leaving it alone ha ha).
  8. I thought about this. I was initially turn off because code called from a dll supposedly runs in a different application space. I was concerned I would not be able to access queues by name through the divide. But I guess that plays well to me now knowing enough about the different run (domains) available to LabVIEW. I guess i wouldn't know where to look up the details for these. The Actor framework seems to use these. DLL calls can use these depending on the settings. -Is it just a head-free version of LabVIEW but sharing application memory? is this where the AZ and DS memory di
  9. Odd that Occurrences are documented but Queues are not? I had a feeling that it might be undocumented. LV User Events have nearly the same properties, so that is nice (however these seem more tedious). I might try playing with these functions if I can figure out the prototypes but if not there is just too much to guess. I'm not so familiar how the OS-native api's play with Labview. Other than using TCP/IP. Thanks @dadreamer!
  10. I was looking through the Labview.lib (its just an archive) functions and found: Line 1162: ./objects/labview_lib/win32U/i386/msvc71/release/QueuePreview.i386.obj _QueuePreview Line 1211: ./objects/labview_lib/win32U/i386/msvc71/release/QueueTimeoutRead.i386.obj _QueueTimeoutRead Line 1231: ./objects/labview_lib/win32U/i386/msvc71/release/QueueLossyEnqueue.i386.obj _QueueLossyEnqueue Line 1238: ./objects/labview_lib/win32U/i386/msvc71/release/QueueStatus.i386.obj _QueueStatus Line 1286: ./objects/labview_lib/win32U/i386/msvc71/release/QueueDequeue.i386
  11. So this apparently is the same with MATLAB: https://www.mathworks.com/help/matlab/ref/plus.html In the section: Add Row and Column Vectors a = 1:2; b = (1:3)'; a + b This simple code will not compile in Mathscript its the same story with Add Vector to Matrix It's just a seemingly basic incompatibility and it seems it has something to do with how vectors are handled in basic operations. unless there is some super secret setting to make these compatible ill just have to find a workaround.
  12. No this is definitely cool. It’s cool to know that there is a way to keep the data in the same scope. Now all you need is a (c compiler/assembler) written in labview along with prebuild actions and the world would be your oyster.
  13. I was working on octave with a simple script: im=[3.5 ;3.5 ;3.5] ip=[1/3 ;2/3 ;3/3]*2*pi w=2*pi*15 % 15Hz signal dt=0.0005; t=0:dt:0.05; th=w.*t; i=im.*(sin(th+ip)); % generate abc to generate 3 sinusoids offset by 120 degrees. However Mathscript seems to choke on (th+ip) I'm not actually sure what operation is happening or rather octave has some type of extension to the addition operation. I like the convenience of the above method. but I can't figure out how to do the same thing in mathscript without a for loop.
  14. So the way the map works is we can iterate all elements in the map by indexing on the input of a for or a while. However, This only works for a non-changing Map. if you are adding elements during the loop is there a good way of iterating all non-iterated items? Id like to have a version without a duplicate structure: I have these: This might be the best that can be done. but I thought id ask.
  15. @jacobson I agree that is a way to use it. but it seems like a waste of potential leaving it at just the wall of text. especially since the c++ guys can get fancy profiling tools like this one: https://github.com/wolfpld/tracy (so pretty) And i think I'm not the only one that would write their own tool to present the data if it we could get of all the necessary information. It is just a little disappointing. I became a squeaky wheel: https://forums.ni.com/t5/LabVIEW-Idea-Exchange/Desktop-Execution-Trace-Toolkit-should-be-able-to-present-data/idi-p/4046489 Y'all are welcome
  16. Ahh, This is too bad. I wasn't aware of Real-Time Execution Trace Toolkit. I Guess the title should be more explicit Is there any way to make similar reports using the DETT? (Theoretically?) My eyes always glaze over looking at the wall of text generated from DETT. VI Calls and returns are matched by the tool (Higlighting) but i cant find a way to get this information exported.
  17. I was looking at a user guide for the Desktop Execution Trace Toolkit. And I found this: A pretty graph! ref: http://www.ni.com/pdf/manuals/323738a.pdf I would love to see this kind of detail on my applications but i cant figure out if it was a dropped feature or what the deal is. It sounds like it should just work by default. Maybe its just for real-time targets (lame)? I cant even export enough information from the DETT to redraw a graph like this. But many tools have this kind of execution time view, if it is part of the tool how to i access it and if not how cou
  18. Is this the trick where you have controls off-screen waiting to be moved into place? graphs are limited by the number of plots ready? I've also seen the setup where windows are embedded into the UI and reentrant VIs are use to plot. (setup is pretty non-trival though). I haven't really seen a solution that is nice and modular and easy to drop into particular ui being worked on. Is there another?
  19. For a final Case. Sadly there isn't any non-depreciated Items to replace that vi. Which makes this work for Clusterzilla. ArrayToCluster.vim
  20. So, sometimes when i'm troubleshooting or perhaps the customer doesn't know what they want, its nice to make things a bit more flexible. However I find this difficult with plots, they take a good deal of setup and are pretty hard add remove things flexibly during runtime. I'm curious of any other examples or demonstrations/recommendations for doing similar things. I Made an example here of something that i'm working on for flexible runtime plotting: Plotter.vi Front Panel on PaintGraph.lvproj_My Computer _ 2020-04-22 11-04-10.mp4 Here i have some functions to be desired. I am u
  21. I think i knew about that one. Its quite effective, I just have a natural avoidance of using them in anything production related due to the (not supported stigma). The also use quite a few files, I wish LabVIEW could used fewer files. But mostly I wanted to take a renewed crack at this problem. I used @drjdpowell's solution so I wasn't doing anything unsupported (it should be available to anyone using 2019). (because of the type specialization) Custer To Array: (pass the type directly if possible) otherwise make them a array of variants. Array To Cluster: Get the cluster type a
  22. Here is another shot Late to the game i guess Its a 2019 vim that supports cluster size from 1 to 256. Contains forward and reverse operations. ArrayToCluster.vim ClusterToArray.vim
  23. So there are so many ways to do evaluators. I was trying to minimize mess on the implementation (no recursion or any such nonsense) Single File capible(if function VI is removed) Contains tools for changing rules.(In the form of a spreadsheet) It uses variant attributes for the variable name space. Here it is: Made a nice and simple evaluator should be compatible with older versions of LabVIEW as well. And even gave it some test cases: Also check out the github page: https://github.com/taylorh140/LabVIEW_Eval I've attached the Eval and Functions.
  24. Nice simple find! Thanks for the tip.
  • Create New...

Important Information

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