JDave
Members-
Posts
414 -
Joined
-
Last visited
-
Days Won
3
Content Type
Profiles
Forums
Downloads
Gallery
Everything posted by JDave
-
How to use GetProperty and SetProperty of generic Classes?
JDave replied to Karlos Marder's topic in VI Scripting
Using the method described in this thread gives a lot of good info!! (thanks metin :thumbup: ) It seems, however, to just be limited to properties that the Property Pages update. Has there been any luck in finding the property indices of properties not updated by any Property Pages? Properties like position and size.... David -
I played around with some of this a bit trying to make a replace function. Grabbing all the code and sticking it into a frame wouldn't be too hard, but I agree that wiring it back up would be interesting. You could even make it act like an XNode of a sort, though you wouldn't really be able to edit it easily. Rewiring would not look the same as the original wiring half of the time, but it could be done. You would have to place tunnels on the frame according to where they were on the control pane, but you would have to query the pane to get the right layout. I haven't played with any of that, but I am sure it would be more than interesting. I suppose it could be written to accept just the standard 4x2x2x4 layout. Just some thoughts... David
-
Getting the name of the active window
JDave replied to Mark Balla's topic in Application Design & Architecture
I tried this out on my system (Windows XP, LV 7.1.1) and it will return the correct windows text length for LV windows, but the last dll call will not return the actual string. It works fine on other app. windows. Any ideas? David -
I really like the idea of being able to define some error table on a per project basis. They already have conditional disable symbols on the project level, and that would be quite an addition. Sounds like a great Wish List item. It is possible to use some error-handling templates and automatically build some error VIs for each project (using scripting or not). You can use an enumerated type for the errors, and then define some offset within the 5000-10000 region that your errors will slip into. I saw this in some freeware from Moore Good Ideas, and I am sure others have done similar things.
-
How to allow user to change plot name?
JDave replied to LVFreak's topic in Application Design & Architecture
You need to use the Active Plot property to select each plot. By default the active plot is the first one, which is why changing Plot.Name changes the first one. If you select a different Active Plot, the same property will change the name of the selected plot. David -
Amen to that.
-
I started coding in LabVIEW because there was an interesting project that came up which happened to use LabVIEW. I wanted to work on the project, and I was interested in learning another programming language, so I jumped on. Starting from a computer engineering background with some circuit and EE classes, not to mention a lot of MATLAB and Simulink experience, LabVIEW felt quite intuitive. I started with 7.1 so there was already a rich set of programming tools available (DataSocket, Queues, Events, etc.). So I really enjoyed my new language. First big turnoff - Namespace issues. Relinking of subVIs to others of the same name but different path. Ouch. Favorite aspect - Tie between the ease of creating multiple VIs that communicate with eachother, and the ability to reuse code because every subVI has the potential of reuse. In the end, I might just be a typical EE programmer who fell in love with a wired SW development world. David
-
Directory Organization in a large application
JDave replied to JDave's topic in Application Design & Architecture
Thanks for the responses thus far. On my last project (~60 of my own VIs plus some OpenG and driver VIs) I used different folders for GUI VIs, subVIs, drivers, and then a folder for subVIs that had a direct reuse capability (mostly because I was building cool things as I was going and I wanted to get at them easier in the future). Since this project is looking more weighty, I appreciate some other ideas. Organizing the code is always interesting. Though when I was coding in C++ a lot of the smaller functions were just contained inside of the larger files. One thing I have really liked about LabVIEW is that each time I solve a problem (however small) I have a highly reusable block to drop onto other programs. That is wonderful. But it does make for a few more files... Thanks again, David -
I am starting on a large project and I don't want to end up with one folder containing 500 VIs. I wanted to ask what people have done (that they have liked or disliked) for organizing such a project. Do you just place larger tools in their own folders and then have some misc. folders for random or common VIs? I am not going to use GOOP, for various reasons, if this affects your responses. Thanks, David
-
The invoke node for "Replace No Attributes" has 4 new inputs in 8.0, which are descriptively labeled Param 0..3 There is no documentation and they are required inputs. Using 0 for all four does not give what I would deem the desired result. Has anyone achieved any results with this? David
-
It seems that the FP.Origin property still works in 8.0, but it is deprecated. If you bring the function in from 7.1 you will get the Origin of the top-left pane on the panel. Appears to me this is a reasonable behavior, and there is no need to deprecate it.
-
AFAIK, the Front Panel in 8 is no longer a single pane. With splitter bars (pane separators), there are possibly multiple panes with multiple origins. The front panel origin would then be the first pane origin (for a single pane application). It would be nice to have a FP.Origin property that just grabs the first pane's origin. On a side note, the top-left pane becomes the main pane, in that controls created from the block diagram show up here. :headbang: Took me a while to handle that one. I had a "Status Bar" at the top and I eventually had to get rid of the separator and put it in only at the very end to avoid controls showing up where I didn't expect them. David
-
Effective way to insert and delete middle array element.
JDave replied to Vladimir's topic in LabVIEW General
Jim Kring talked about using clusters rather than separate arrays in this thread. Of course that would mean clusters within clusters.... But it is a twist on the same idea. -
Effective way to insert and delete middle array element.
JDave replied to Vladimir's topic in LabVIEW General
True. I didn't think of the memory allocation issues and I probably misunderstood the question. I agree that the static array with "replace array subset" is a good choice. Can't think of anything else in pure G. -
Effective way to insert and delete middle array element.
JDave replied to Vladimir's topic in LabVIEW General
-
I password protected it on April 1, after reading Michael's wonderful joke. But since he didn't go through with it... I actually was hoping people would rip through the code and give me pointers where needed. Here is the code without password. I thought about making the window be small and then expand open for options, but I didn't want to take the time. Is there a simple way to do the resizing necessary for this? Or is there a more elegant way of doing configuration of this sort? I forgot in my original post to thank all the people who had posted code examples. This wouldn't have been possible otherwise. I took tricks from all over, so thanks to all !!! Download File:post-1519-1144777714.llb David
-
You have to go to the second page of the thread to get the version that was updated for 8.0 (works in 7 still as well). Stanislav updated it and posted the new version.
-
Well, I finished my first scripting widget and I wanted to see what everyone thought. I got the idea from a *Wish List* post a while back. Why doesn't pasting simply replace the selected item? So here it is. Features: Copy something to the clipboard. Select another item(s). Press the Replace button or use the hot key to replace. It runs continuously on top and can have a hot key for Windows systems. It is written in 7.1 but it is 8.0 compatible (though the hot key recognition is not as nice, the LabVIEW system seems to get a hold of the keys a bit more than in 7.1). Structures are replaced entirely. If the classes don't match up, nothing is done. If nothing is selected, you have the option to do a normal paste, but this doesn't paste to where the last mouse click was (how do you get that?) There are different setup options that are changeable at run time. Download File:post-1519-1144715140.llb Tell me what you think. David
-
How can I disable/resotre Keyboard and mouse function
JDave replied to Cool-LV's topic in Application Design & Architecture
LabVIEW cannot do this directly. Your best bet is to search for ways to do this in the operating system, and then call them from LabVIEW. Aitor gave you a start this direction. I don't think there is an API for this in Windows, though I know that programs can be written to accomplish this. See this url Toddler Keys for a novel application that locks your system against toddlers. :thumbup: David -
That is a wonderful application, but mine is orders of magnitude more basic. I am going to post it sometime this week. Hopefully you will like it.
-
Thanks. That worked !! :thumbup: Sorry for the delay, but I have been off taking a mandatory training class. :thumbdown: David
-
If I understand correctly, you should be able to just preload the file data into an array. If the data is already at the correct rate, you can leave it as is. Otherwise you will have to resample it. Then as you are inputting your data stream, you will just append a new array with your 'next' data stream value and another array with the 'next' preloaded array value. This will cause both arrays to contain the same amount of data for the display. Finally, send both arrays to the display graph. I don't have DAQ installed on this machine or I would post an example. David
-
Perusing the site led me to notice a birthday. Considering yesterday's mischief I am not sure exactly how happy of a birthday I want to wish to Michael... :laugh: Honestly, thanks for this wonderful site. Happy Birthday Michael !! David
-
At the risk of asking too many questions... Here is another one. Has anyone ever successfully used the Replace invoke node one a control with the Path input? I am :headbang: right now. I want to replace a control with an existing control, but if I use the Replace invoke node with a .ctl file as follows: It tells me: So what is the expected file type for a control? On a side note, while researching this in the scripting forum (and while dashing to download stuff yesterday) I noticed a thread about creating custom controls. While you cannot create a new control in a .ctl file, you can delete the old one and *paste* a new one in. Maybe someone already noticed this. Works for type-def files as well.
-
April 1, Gotta love it