06-06-2007 11:54 AM
Hello again everybody,
I have another issue on this list that I would like to talk about this morning, and that is the comments that NI has been forcing it’s free tag color scheme on developers for stylistic reasons.
There are important reasons to maintain consistent style in both your C programs and in your LabVIEW programs (I use C as an example only; the concept really applies to ALL programming languages). This should really not be a surprise to anyone, and I think we all understand the merits of good style. That being said, here is the NI LabVIEW Style Checklist. You’ll notice that in this document, we don’t mention the color of free labels, with the exception of labels along wires. This is because there are sometimes good reasons to change the color of the labels, such as those cited in this thread. NI would never deny certification for not using the default yellow/black free labels (yes, I did verify this). If anyone was previously counted off, I’m not sure what could have happened on those tests. If anyone is interested in discussing it further, we might be able to look into those test results for you (please contact us directly, as I do not believe this forum is an appropriate place for us to discuss specific test grading).
As far as the “why was this option removed” question is concerned, I’m still looking into that. At least I can say that for the past 5 releases it hasn’t been an option that you can configure in the LabVIEW options. Needless to say that if you changed the default color of your LabVIEW free labels it wasn’t a widely-used or known thing (though, it does sound like a useful feature in some cases). If it was done through changing ini settings, I just want to broadly state that we do not recommend modifying or relying on ini settings in LabVIEW.ini as a way to configure LabVIEW environment options. The vast majority of options configurable through the ini are configurable through the LabVIEW options. I know that there are exceptions to this rule, and we try our hardest to preserve the behavior of ini keys across versions. I will continue to look into how this was done, and maybe comment as to why it no longer an option
06-06-2007 06:18 PM
OK, so I have one last update for the day, then we’ll take a heartbeat on the issues and continue where we left off.
We have been looking into the label color issue from a technical standpoint recently. It looks like the behavior you desire is to 1) have the ability to set the background color of the labels to transparent, and 2) change the default application font color.
The first point on here, is something you used to be able to
do through the options, and was removed from the options in 8.2. You can still set this option through the ini
file. Normally NI employees and beta
customers are specifically asked not to talk about features, changes, etc. in
unreleased software. However, since it
was already mentioned and it’s an important change we made, I’ll let you know
that that option has been put back in the options page, and if for some reason
we need to pull it, I’ll be in your corner and make the argument that we should
not remove it. The lava post linked earlier also describes this issue in more detail.
With regards to the second point, as far back as 6.1 the application font color is preserved only while LabVIEW is open. When you restart LabVIEW the color reverts back to black and you have to set it again. The font size is preserved, and I agree that the color should probably be preserved as well (after all, why keep one option and not another?). I went ahead and filed a bug report on this (CAR# 4A5GT93A), and we’ll look into fixing it so that it behaves better. If there is some way to preserve this between LabVIEW launches (even in 6.1) I’d be very interested in knowing it, and I can add it to the known workarounds for the issue.
Ok, so I think I’ve addressed the first 2.5 issues -- Resampling Waveforms, free text default colors, and NI style guidelines. The Pasting of Control Images into MS word, was concluded to be limited to cluster controls. I’ll go ahead and file another bug report on that one as well (CAR# 4A5H4G3A).
With regards to the Toolkit Installation Errors issue, I’m not sure from your description, but is this the problem you are having? If so, the fix is to repair your runtime engine. If this is not the issue, can you please describe in more detail the circumstances of the error, and maybe include the error text and/or a screenshot?
Thanks again folks for your participation and feedback!
06-07-2007 04:58 AM
@Travis M. wrote:
Normally NI employees and beta customers are specifically asked not to talk about features, changes, etc. in unreleased software.
Yeah, sorry about that, but since it was actually an old feature and since Christina already said that it will make its way back into the dialog, I figured there would be no harm done in this specific case.
Now, if I wanted to talk about interesting new features, I could bring up ************** and **************, not to mention the *********************, which is really cool.
06-07-2007 06:16 AM
"*********************, "
Oh Yes! Now if I only had more time to Beta test!
Ben
06-07-2007 06:31 AM
Travis,
Thanks for your efforts here. I have gotten better response through you and the discussion forum that any of my local reps. The biggest other issue is he broken connectivity toolkit and changes to the variant structure which are undocumented. I have developed a network of ATE's that manage firmware and software for various devices, and they all save that firmware as binary images in an SQL server database. In labview I represent those "firmware images" as variants, so when the connectiovity toolkit could no longer save variants it broke every application I have entirely. It took a long time figure out what was wrong and to re-write things. Basically the database toolkit parses out how many bytes to put in each database column by size. It flattens the whole cluster of data and then by type parses out how many bytes are in each column, so if the type is a double it assigns teh next 8 bytes, for example. Variants used to represent their size in the first four bytes, so the toolkit looks at those bytes as an I32 and parses out that many bytes. But now since the size of the variant does not appear to be contained anywhere in the data, the whole parsing concept doesn't work. It saves some random number of bytes to the next column and corrupts the data. So the architecture of the connectivity toolkit itself is incompatible with variants, and its not an easy fix.
I also think that even though you are fixing the specific problem of Resample Waveform (single shot).vi, you should also do some sort of corrective action internally to make sure this type of thing doesn't happen again. It just can't happen ever if you want labview to be used like a real language. Since it does happen and has happened, we have to react accordingly. So one option is to take all the NI palette vi's out of the NI directory, rename them, and call them from a new directory I maintain. This way my code won't target the NI directory for anything and I can be sure it hasn't changed. Or I can rewrite low level code in C and call dll's, so I can be sure anything I wrote in a dll won't change. In addition to these practices I will have maintain multiple versions of labview. If I develop an application in 8.2, I will never upgrade it to a new labview version, and always maintain it in 8.2. This is exceedingly difficult because of the way labview searches all over the place for subvi's and then likes to mass compile things automatically. But if I am careful and back things up I can do it. As long as the runtime engines are backwards compatible, (so the 8.2 runtime will run 7.1 vi's), I should be able to have applications in all different versions of labview. This way new bugs will only affect current projects and not requires weeks of work to fix all previous projects.
By the way I can report one more very minor bug, but I figure while I'm at it... When you create a dynamic vi from a labview class, the dynamic vi comes up with a default grid spacing of 12 even though I have it set to 6 in my options. It probably should come up the same grid spacing as everything else, but since its generated from a template or something I can see why it works like this. I know how to fix it, but would be better if the grid spacing adhered to my custom settings. Kudos on the LVOOP stuff though. I'm only just starting to re-implement code using LVOOP, but it seems to be effective and make good sense so far. I have coded as OO as possible already by using variants to pass in very structured ways, but since you could never really use classes, object oriented stuff also tended to consume a lot of memory as it would be copied all over the place. Now with a real class implementation I'll save a couple hundred MB of RAM and have much better performance I think, since I won't have variants copied in memory everywhere. My only concern now is that it all still works in any future releases!
06-07-2007 06:45 AM
06-07-2007 01:40 PM
06-07-2007 04:19 PM - edited 06-07-2007 04:19 PM
Message Edited by Sudhir Gopinath on 06-07-2007 04:22 PM
06-07-2007 07:07 PM
06-08-2007 09:30 AM