Jump to content


  • Posts

  • Joined

  • Last visited

  • Days Won


Everything posted by Taylorh140

  1. @FantasticNerd I don't make the rules, as far as this particular situation I can only speculate why. I would guess NDA would be required as well as other complicated approvals. In this case we are requesting a installer/setup procedure. but these things take time, in the meanwhile we are limited in testing. It's great the MAX/NIPM have a list of installed stuff. This is typically where i start too. Now wouldn't it be nice if NI just had a utility that looked at the exe, and made an installer that had all the components :).
  2. It just so happens that sometimes I am suppose to reproduce a test system made by a customer. There may have been an installer at one point but no-one knows anymore and they don't want to share the source vis. In the past i have download each NI library installed on that particular PC and installed it on the other until i get it all to play nicely. However it takes some time and is quite tedious. Is this the only way?
  3. @Rolf Kalbermatter I appreciate you mentioning this. I myself was weighing this. VI -> Smaller better for sharing examples but can have evil code in them. Slightly harder to make. Image -> Safer to share but lager and much more limited. Easy to make. I was originally leaning toward an image but, I think your right VIs are better. I don't think I've come across malicious VIs here, at least that i know of .
  4. Be careful of Pragma pack when your trying to line things up for larger types.
  5. I added what I have to https://github.com/taylorh140/Pgui. It's only right since I copied the enabling technology right from this forum. I don't know if ill have a huge amount of time to work on this but ill defiantly try and improve it when I can. There is still a lot of things that would be nice to develop for this.
  6. This is true. bad habit I guess. I used openGDS for this w/ EndevoGoop400, so far I like it. But it is still new to me so there are possibly design The enabling technology for this was from @Norm Kirchner so respect where it is due. Being able to translate images allows one to build a UI component and move it into place. Each drawn component can now pretend it is the only UI component on the picture control. I'll try to get a GitHub page published soonish.
  7. Two questions about this: 1. Does something like this already exist? 2. Is this something that could be useful? Every once in a while I need dynamic UI components that can be generated at runtime. One nice thing to use for this is a picture control; however it doesn't lend itself as well to keeping other pieces of function such as mouse click events and such. I put together a mini library of UI functions for this that has the ability to be extended. The UI can be generated dynamically at runtime and be any picture thing that you can draw. Using Standard layout techniques that you might find in other GUI libraries. The hierarchy generation can always be simplified by using some type of templating string. Example1.vi Front Panel on Pgui2.lvproj_My Computer _ 2021-07-02 14-03-54.mp4
  8. 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.
  9. 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.
  10. 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.
  11. 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 for a while. To me waiting on this seems to take little to no CPU usage. but has much better than 1ms resolution. 30us +- 10us in the example below. How can I replicate this kind of performance? Is there a secret method I am not aware of (reality says yes)?
  12. 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:
  13. 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?
  14. 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).
  15. 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 differences come in? more to learn here clearly. I got the PostLVUserEvent to work nicely.. I am working in Rust to see how the two play together, which is a new experience for me. It also gives some nice promises about how the safe code will work... but so far everything to do with this interface is currently unsafe :). This also means that most of the goodness of the language doesn't apply, but i can wrap up all the unsafe things in nice calls and get a good interface. Here is a sample of how the interface can look in rust. #[no_mangle] pub extern "C" fn AddONE(ptr:LvUHandle){ let h=LvArray1DW::<f64>::from(ptr); //Wrap pointer and get type as a 1D array of doubles. let g=h.to_array_mut(); // Access mutable slice for i in 0..g.len(){ g[i]=g[i]+1.0; // Add one to each element } } Note: I am using LabVIEW Handles for array in windows (but the pdf describing the interface says that windows array handles are not supported .. why?) Note Response: I guess the documentation says the Windows API does not support LabVIEW handles, like user32.dll not the LV interface to the custom DLL.
  16. 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!
  17. 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.obj _QueueDequeue Line 1348: ./objects/labview_lib/win32U/i386/msvc71/release/QueueObtain.i386.obj _QueueObtain Line 1691: ./objects/labview_lib/win32U/i386/msvc71/release/QueueEnqueue.i386.obj _QueueEnqueue I assume that means i can interact with Labview Queues in application space, which would be a nice way to transfer information and call back. But I cant find any documentation on how to use these eg. documentation or prototypes. If someone can point me in the right direction that would be great!
  18. 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.
  19. 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.
  20. 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.
  21. 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.
  22. @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 to join me.
  23. 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.
  • Create New...

Important Information

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