Tomi Maila
Members-
Posts
849 -
Joined
-
Last visited
-
Days Won
9
Content Type
Profiles
Forums
Downloads
Gallery
Everything posted by Tomi Maila
-
Hey, Funny that you came with your WORM just now as I also wrote a Write-Once-Read-Many variable called One-Time Store and released it last week as a library that ships with the Active VI Toolkit. Unlike your example One-Time Store must be referred with a valid refnum so it cannot be used as a global directly, although the refnum itself can be stored to any of the globals available. The image below illustrates how the One-Time Store library functions. Anybody who is interested in playing around with the One-Time Store library is more than welcome to download the Active VI Toolkit. Cheers, Tomi
-
Hey, Now that I've got the alpha version of Active VI Toolkit released, I've had some time to do some real work once again So I started to play around with LabVIEW 3D picture control released with LabVIEW 8.2, although I'm using it with LV 8.5. I'm trying to get two colored 3D triangle meshes to be displayed one top of another so that the lower mesh would be visible trough the upper mesh. If I understood the 3D picture control documentation correctly, setting the alpha value of a triangle color to below 1.0 should set the primitive to be partially transparent. However this is not what I've experienced with my simple test code. Does anyone have any experience on transparency with 3d picture control? How does one achieve partially transparent surfaces? An example VI (LV 8.2) is attached that presents the failing method I'm using. Cheers, Tomi
-
Hei Janne! I guess most of this is already covered in the thread but as I wanted to reply to my Finnish colleague I decided to answer you anyway As it was said there is not a zoom functionality in LabVIEW, though you could write such by yourself if you wanted. However from user experience point of view I think this is not optimal solution as zooming user interfaces are not very good to use. They may be mandatory in mobile phone web browsers where the target web page is large and the screen is small. However if you are able to modify the user interface then you definitely should make the interface proper for the screen size and not use zooming. It will save user nerves. Well, what methods are there in LabVIEW to make user interfaces for various screen sizes. There are several things you can do. - You can set selected controls to resize when your screen gets larger - You can divide your FP into panes, some of which resize and some of which do not resize when the panel is resized, this is what I ususally do. - If the screen is too small to fit all your controls, you can place them into a tab control. - You can use a tab control to make a wizard user interface. This doesn't suit all use cases but wizards generally use less front panel space. - You can write multiple user interfaces for your application and select programmatically appropriate user interface at runtime. Isolate each user interface into a single VI. Because you are using LabVIEW 8.20, you have access to LabVIEW Object-Oriented Programming, you can isolate each user interface as a LabVIEW class. However I recommend using LabVIEW 8.5. with LVOOP. If you are interested in this option, I can give you some details or blog on it. Cheers, Tomi p.s. Are you coming to NI Days in Helsinki May 7, 2008?
-
Congratulations to tcplomp on reaching the kilo-club!
Tomi Maila replied to crelf's topic in LAVA Lounge
You are catching me fast... Congrats! -
Vanishing reference - how to idenify object on a diagram
Tomi Maila replied to vugie's topic in Development Environment (IDE)
First I suggest strongly that you do traverse the diagram and search for tagged items. That is the safest way to guarantee that the tags remain when objects are copied or moved or when the diagram is edited in an environment where the tool is not being used. Second there is no straight forward way to get a unique static indentifier for each graphic object I can think of. Consider the following situation. You have two identical case structures with both the same label. The only identifier you can get for such a structure is the structure label. Because the label is the same for the two structures, it is no longer unique. You could try to make the identifier unique by using the position and the label pair as an identifier. However, the position of a gobject is not either unique but multiple objects can have same position as well. I would say all build in scripting properties are non-unique that is each property value can be shared with multiple objects. The only unique identifier I can think of is one that you write by yourself as a tag to the objects. If you assign all objects on block diagram a unique tag, then you would have a ID scheme that would allow you to identify objects on block diagram uniquely and would allow you to locate them without traversing all diagram objects or at least some subspace of all diagram objects. Howevere this doesn't solve the problem of moving items as then the path to the object becomes invalid. I guess it's impossible to track all movements of any object unless you have access to LabVIEW source code. Tomi -
I tried to open the LVx source project with LabVIEW 8.5 but it's full of conflicts.
-
Change font size in "Display Message to User" VI?
Tomi Maila replied to george seifert's topic in LabVIEW General
QUOTE(george seifert @ Feb 21 2008, 10:51 PM) No, Display Message to User uses internally 'One Button Dialog' and 'Two Button Dialog' nodes that come with fixed font size and are not configurable. You have to write your own dialog VI if you want fonts that are of non-default size. -
What flavor of Linux do you recomend for LV use?
Tomi Maila replied to LAVA 1.0 Content's topic in Linux
LabVIEW installation on Linux is based on rpm packages, so you better use a linux distribution that is based on rpm packaging system. I've been using Fedora Core 6 with LabVIEW 8.5 for some small tests and application builds and it seems to work. Tomi -
ByRef using LV2 Global example
Tomi Maila replied to Dan Bookwalter's topic in Application Design & Architecture
Use LV2 global to return a key to your data stored into the global. Then store this key to your objects private data. When you need to access the data, use the key in the objects private to fetch the data from the LV2 global. The key can be for example index of an array if you are using an array for data storage or variant attribute name if you are using variant attributes as data storage. Cheers, Tomi -
Read the Frame names of a case structure
Tomi Maila replied to LAVA 1.0 Content's topic in VI Scripting
QUOTE(guruthilak@yahoo.com @ Feb 11 2008, 12:18 PM) It would be helpful if you described how the code doesn't work. p.s. Don't forget to close the block diagram reference. -
Map, implemented with classes, for 8.5
Tomi Maila replied to Aristos Queue's topic in Object-Oriented Programming
QUOTE(Aristos Queue @ Feb 10 2008, 09:10 PM) That didn't have a huge affect. However I noticed that there were a few VIs in the Map class that were consuming most of the time when adding elements to the map, namely Branch Node.lvclass:Insert on Right.vi and Branch Node.lvclass:Insert on Left.vi. Using inplace element structure in these two VIs significantly improved the performance of map element additions. However the performance is still much weaker than in the variant map. Now for 1000, 10 000 and 100 000 elements the addition times for OOP map are 157, 1562 and 17933 ms. So we get nearly linear scaling which is good. However the respective numbers for variant map are 16, 295 and 8509 ms which is still significantly faster but non-linear. I guess for 1 000 000 elements the OOP map would now take the lead. The element removal is now the bottleneck for OOP maps after the change. The removal times of 1000, 10 000 and 100 000 elements are 1 210, 28 917 and 409 072 respectively. The scaling is not linear. The removal times of 1000, 10 000 and 100 000 elements for variant map are 18, 199 and 5108 respectively. Significantly faster than OOP map but again a little stronger non-linearity than with OOP version. Second run suggested by AQ affected the perfomance a little. The addition times of 1000, 10 000 and 100 000 elements are 118, 1555 and 18 508. The removal times of 1000, 10 000 and 100 000 elements are 2035, 55 318 and 641 088 respectively. So the addition times gain a small improvement but the removal times actually perform worse which is totally unexpected. -
Map, implemented with classes, for 8.5
Tomi Maila replied to Aristos Queue's topic in Object-Oriented Programming
QUOTE(brian175 @ Feb 9 2008, 05:00 PM) I can verify Brian's results. However it seems that the balanced version of the OOP map is much slower than AQ's original version. For 1000 elements balanced version is about ten fold slower than the non-balanced version and variant version is about 100 fold faster than the non-balanced version in adding the key-value pairs. For 10000 elements both OOP maps are too slow for me to wait. Clearly they are many folds slower than the variant version. -
Map, implemented with classes, for 8.5
Tomi Maila replied to Aristos Queue's topic in Object-Oriented Programming
Actually LabVIEW has two built-in maps: variants and named queues. Named queues could be used as a map by using the name of the queue as a key and what ever you write into the queue as value. So much about the weak link to the discussion on this thread. I was one day comparing the creation time of a named queue with the creation time of a unammed queue whose reference was stored in a variant map. The creation time for both increased exponentially as the number of queues increased. This is expected behaviour for a binary tree implementation. It appeared that named queues scaled up so much poorer than variant maps that I decided to change my application architecture from using named queues to unnamed queues stored in variant maps. I don't know what map algorithm is behind the named queue primitives but it certainly is poorer than the binary tree implementation of variant attributes in LabVIEW 8.5. -
QUOTE(lavezza @ Feb 8 2008, 12:52 AM) Thanks a lot
-
Hi, I need help from someone who happens to be using LabVIEW on a mac. What is the LabVIEW folder structure for OS X i.e. which folders are there under the LabVIEW installation folder. Especially is there a folder named readme like in Windows with readme files, or is this replaced with a folder named unix like on Linux? Regards, Tomi
-
Map, implemented with classes, for 8.5
Tomi Maila replied to Aristos Queue's topic in Object-Oriented Programming
QUOTE(Aristos Queue @ Feb 5 2008, 07:59 PM) Oh, there is a maintenace release coming up? When should we expect this... ? -
QUOTE(Jim Kring @ Feb 2 2008, 11:19 PM) Hmm... custom signatures could be used to track the dark side usage in high accuracy
-
Related to the subject, I noticed a news today that Nokia has made an offer to aquire Trolltech.
-
Address of an application instance
Tomi Maila replied to Tomi Maila's topic in Application Design & Architecture
QUOTE(tcplomp @ Jan 16 2008, 08:53 PM) This works fine. I built one server application and two client applications and both client applications were able to connect to the same server application simultaneously. The server port was constant and explicitly specified when establishing a connection to the server from the client. -
Why, yes, LabVIEW 8.5 does have recursion...
Tomi Maila replied to Aristos Queue's topic in Object-Oriented Programming
QUOTE(Aristos Queue @ Jan 17 2008, 12:39 AM) So there's your answer. Thanks for the answer