Jump to content

Six LabVIEW 8.0 features no one talks about


Recommended Posts

...but I still don't see that they don't open up new avenues of programming like the 4->5, 5->6, or 6->7 upgrades did.

Do you not think the conditional compile (ifdef) node does? Being able to inline your debugging or profiling code and not having to worry about it getting compiled in a release build, and not having to modify any source code to turn it off or on?

Personally, if NI really wanted to make some changes that would make me stand up and say "Time to upgrade", I'd have to go with ... a HTML-parsing string indicator (or some other decent text-formatted implementation);

I don't know if you were at NI Week and saw any of the sessions on the LEGO Mindstorms software, but for that product we created a native HTML control using the Mozilla gecko rendering engine. It's not in LabVIEW proper yet (still has quite a bit of work to get there), but my hope is that we can not only render remote and local HTML pages, but also use the engine for rich formatting of text using HTML tags. We're continually working to improve LabVIEW for many different types of users - enhancing performance of existing features, making things easier to use for new users, as well as adding features for the advanced users like many of you here. I think to say that the new features in 8.0+ are not useful is a bit harsh, however I can totally understand feeling that they are not useful to you.

...or in place of the afterprobe, a probe mode that tabulates values across the run of the VI -- that would be worth the performance hit for me.

You've had this ability for a while. Custom probes allow you to create custom behavior like this quite easily.

J

Link to comment
  • Replies 54
  • Created
  • Last Reply

Top Posters In This Topic

Do you not think the conditional compile (ifdef) node does? Being able to inline your debugging or profiling code and not having to worry about it getting compiled in a release build, and not having to modify any source code to turn it off or on?

Actually, I had forgotten about that. That is a very useful feature, although I really don't think it's on par with the addition of synchronization VIs or events. That is something that's fairly useful (and which I really haven't utilized that much, honestly).

I don't know if you were at NI Week and saw any of the sessions on the LEGO Mindstorms software, but for that product we created a native HTML control using the Mozilla gecko rendering engine. It's not in LabVIEW proper yet (still has quite a bit of work to get there), but my hope is that we can not only render remote and local HTML pages, but also use the engine for rich formatting of text using HTML tags.

I don't really care about inline rendering of web pages. I really want rich text formatting, any implementation will do. HTML is just a convenient (although admittedly not quite optimized) standard.

We're continually working to improve LabVIEW for many different types of users - enhancing performance of existing features, making things easier to use for new users, as well as adding features for the advanced users like many of you here. I think to say that the new features in 8.0+ are not useful is a bit harsh, however I can totally understand feeling that they are not useful to you.

Very true. I apologize if my post was misread as saying "These are not good improvements." For the most part, the changes in 8 are good. I just don't find them useful. The last couple of versions of LabVIEW have certainly made it easier for beginner programmers to use the language. I just don't feel like the changes from 7->8 really expanded the power of LabVIEW. Now, 8.20 might -- the jury is still out on that for me.

You've had this ability for a while. Custom probes allow you to create custom behavior like this quite easily.

J

I've tried to do that with custom probes and usually end up crashing LabVIEW. I'm honestly not sure what I'm doing wrong -- I just right click on a string wire (for instance), select custom probes --> New, select Create a New Probe, put in the probe name, and BOOM, there goes LV. At any rate, I was specifically referring to the afterprobe functionality. In its current implementation, I find it essentially useless. If it also maintained prior iterations of each wire's value (perhaps up to a limit set in the LV options), then it would be a lot more worthwhile for me.

Note: After repeated tries, I did manage to get the custom probe implementation to work. Not sure why it was crashing every time, but once I was able to create one, I've been able to create several with no problems. Not sure what that was all about. I still would like to see that as default behavior for the afterprobe option.

Link to comment

I think i've found a good way to deal with the afterprobe.

I had some code that was buggy, but it was too big to 'highlight' the code. Put a breakpoint before execution of this part and one after. At hitting the first breakpoint started 'afterprobing' and examined the code at the second breakpoint, remove afterprobe and continue as normal. In this way I was able to get a 'screenshot' of some code and how it works without filling my screen with tens of probes or creating an extensive logfile.

Ton

Link to comment
  • 2 weeks later...
In regard to variant, I am missing the type string from the flatten/unflatten to string primitives. This make variant introspection, in the spirit of the OpenG variant tools, pretty much no longer possible for new data type.

OK, I think of myself as a bit of a Labview geek, but I don't get what's so cool about variants. Obviously sometimes you have no choice but to use them, database stuff in particular. But otherwise, why convert from other types to variant?

Also, another person implied that variants are an alternative to passing data by wire. How?

Link to comment
Also, another person implied that variants are an alternative to passing data by wire. How?

I think the idea was that variants allow you to create a general purpose messaging system.

You define a Queue or Notifier using a typdef cluster consisting of an string or enum that represents a command and a variant as the data. You bundle your command and data and Enqueue Element or Send Notification in your originating vi. Your receiving vi has a loop that performs Dequeue Element or Wait on Notifier.

The nice thing is that you can unbundle and evaluate the string or enum to determine how to convert the included variant data back to it's native type; typically using the string/enum as an input to a Case structure. You can do this with a single queue or notifier because the data is a variant type. The use of Queues or Notifiers is the "alternative to passing by wire" part.

You can use this technique to send a message from a low level vi up to your UI. A single Queue/Notifier can set a boolean from one sub-vi that sets a front panel LED, while another sub-vi can use the same Queue/Notifier to pass a Double used as a value of a gauge.

Link to comment
OK, I think of myself as a bit of a Labview geek, but I don't get what's so cool about variants. Obviously sometimes you have no choice but to use them, database stuff in particular. But otherwise, why convert from other types to variant?

Also, another person implied that variants are an alternative to passing data by wire. How?

With variant you can write generic utilities that will take anything as an input. From your statement I suspect that you are not using the OpenG variant tools. As an example, the OpenG variant configuration VIs allows you to read and write ini file with an extreme ease (compare to the native LV way) [see image below].

post-121-1158251634.png?width=400

I have seen them beeing used (or used them myself) for many generic utilities such as XML tools (controls --> XML, XML --> controls), generic logger tool, a pyhton data to LV data and LV data to python data tool and many more.

PJM

Link to comment
...And I don't have enough records to warrant the need of an Access database (.mdb).
Plus, if you don't have enough data to warrant a DB, you might as well just read the entire file and work on that data and then save all of it back to the file. Unless your file is more than several MBs you probably shouldn't notice any performance problems and it will be easier to work on.
Link to comment
Plus, if you don't have enough data to warrant a DB, you might as well just read the entire file and work on that data and then save all of it back to the file. Unless your file is more than several MBs you probably shouldn't notice any performance problems and it will be easier to work on.

I agree that loading the whole file would probably work in this case. But if you want to use a database on a local machine with you could try something like SQLite or Firebird or one of many other embedded databases.

Link to comment
  • 3 weeks later...
One minus...i have to cross the internet to get in my Perforce depot, this causes LV to hang(1-3 seconds) frequently due to all the queries made to verify if the file is in the depot, checked out, etc...

So after a while i disabled it... :(

There's some P4 settings you can put in for remote depots that creates a local mirror of the depot and only syncs back occassionally. I've only heard about these settings from our international R&D folks (the ones in Shanghai who have to access the P4 servers here in Austin, TX) so I can't give you any more info than that, but it might be worth skimming the P4 help documents.

Link to comment
There's some P4 settings you can put in for remote depots that creates a local mirror of the depot and only syncs back occassionally. I've only heard about these settings from our international R&D folks (the ones in Shanghai who have to access the P4 servers here in Austin, TX) so I can't give you any more info than that, but it might be worth skimming the P4 help documents.

I looked into the doc and the only solution i saw ther was to setup a proxy server, wich i don't want to do. Could you put me in contact with someone at Shangai to see if this is the solution they implemented?

For the time being i deactivated the SCC and returned to the tools i used before LV8. Basically a function that puts all the modified code in edit when i start it.

Link to comment
  • 3 months later...

My favorite 8.0 feature that nobody talks about is the gravity well that aligns labels with terminals on the block diagram. I use that hundreds of times a week and it makes the life of my cursor keys a lot easier (and longer).

Yet another 8.0 feature that nobody talks about is the DIAdem Report Generation Express VI - which is partly because not everybody has DIAdem installed. So I have made talking about it really easy by videotaping it for you :thumbup:

Have fun,

Herbert

Download File:post-7544-1169255337.wmv

Link to comment
Yet another 8.0 feature that nobody talks about is the DIAdem Report Generation Express VI - which is partly because not everybody has DIAdem installed. So I have made talking about it really easy by videotaping it for you :thumbup:

This video and your other posts on TDMS and DIAdem are very helpful...thanks a lot :thumbup:

Link to comment
Yet another 8.0 feature that nobody talks about is the DIAdem Report Generation Express VI - which is partly because not everybody has DIAdem installed. So I have made talking about it really easy by videotaping it for you :thumbup:

Hi Herbert,

we use lv to control diadem, but we have one issue with the waterfall display (the new one added in 10.1) we get several heap memory issues (if it happens to show up on your desk, please have a look... (it should contain a zip of 7.7 meg)

Ton

Link to comment
My favorite 8.0 feature that nobody talks about is the gravity well that aligns labels with terminals on the block diagram. I use that hundreds of times a week and it makes the life of my cursor keys a lot easier (and longer).

Yet another 8.0 feature that nobody talks about is the DIAdem Report Generation Express VI - which is partly because not everybody has DIAdem installed. So I have made talking about it really easy by videotaping it for you :thumbup:

Have fun,

Herbert

Great post. Thanks for doing that.

George

Link to comment
In regard to variant, I am missing the type string from the flatten/unflatten to string primitives. This make variant introspection, in the spirit of the OpenG variant tools, pretty much no longer possible for new data type.

I am using the professional version of LabVIEW and the flatten/unflatten to string primitives are located in the "Numberic -> Data Manipulation" pallete.

Link to comment
  • 1 month later...

QUOTE(Herbert @ Jan 19 2007, 08:24 PM)

My favorite 8.0 feature that nobody talks about is the gravity well that aligns labels with terminals on the block diagram. I use that hundreds of times a week and it makes the life of my cursor keys a lot easier (and longer).

Yet another 8.0 feature that nobody talks about is the DIAdem Report Generation Express VI - which is partly because not everybody has DIAdem installed. So I have made talking about it really easy by videotaping it for you :thumbup:

Have fun,

Herbert

The unfortunate part of DIAdem Report Generation Express VI is that it requires DIAdem. My company was considering puchasing it but then we found out the cost of User Run Time licensing. You have to buy licensing to deploy DIAdem to users and that is a big problem. NI should really relook this part. I mean this is too much money. So without DIAdem that express VI is useless, alas very nice if NI wasn't so greedy.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.




×
×
  • Create New...

Important Information

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