Jump to content

hooovahh

Moderators
  • Posts

    3,365
  • Joined

  • Last visited

  • Days Won

    268

Posts posted by hooovahh

  1. I'm sure someone else can chime in if I'm wrong about any of this, but from what I've seen the VIP and OGP file format is very similar. They both are essentially a zip archive, with file groups, and a spec file, and I believe an icon file.

    You can unzip both programatically, and read the spec file if you want to read information about the package. The spec file is in an INI file format and you should have no problem reading.

    The main difference I know of, is the VIP files cannot be created or edited manually. You cannot take an existing VIP, extract it, add files, then rezip it and use it. This is because there is added checksum information telling VIPM that the package has no corruptions. I don't believe the mechanism to recreate this checksum is documented so editing the package after it is built is prohibited. There is no such restriction on OGP. Extract, replace, and zip works just fine. Both can be installed using VIPM.

    • Like 2
  2. Whenever I find myself in need of a new tray icon, I usually do a search on Iconarchive or Google using descriptive terms for the pictures I have in mind.

    I then download the images or icon files I find interresting, or just the ones I think looks cool :D

    If the file is an icon file I use an icon editor to remove icons bigger then 32x32px in the file (I stick with IcoFX v1.6.4 - mainly because its simple and doesn't have a trial timeout, newer versions do).

    Couple things. I have used Gimp in the past for icon file editing which supports transparencies and multiple icons (as layers) but does have limitations as far as usability to I may try IcoFX.

    Another thing, which may be better in a new post, is what is the restrictions on using icons from sites like the one you posted? It has a "Commercial Icons" section which is where you need to pay to use the icons in a commercial application or website. I don't intend on using it for a commercial application, but a work related one. Does that mean I don't need to pay to legally use these icons? I'm sure most people would just grab images from a Google search and use them without thinking about it, and maybe I should too, but I am just curious about what is legal.

  3. Sounds like you already have an idea of what to do. I've used Orca before to modify MSI installers. I used it to allow an installer to run under a unsupported operating system (Windows 7 at the time). I would give it a shot but adding an option sounds more difficult than just forcing the installer to run like I did. I would be surprises if it wasn't possible, but I would also be surprised if it was easy.

  4. Honestly, one of the best things about this module is also the hardest to show on a spec sheet. It's extremely straight-forward to program.

    The first thing I did (after understanding what this is) was look at the example program to see how easy it is to interface with. Obviously being the one who would have to integrate with it, this is one of my major concerns.

    I think an alternative to this could be using a serial port to talk to an Arduino. NI's toolkit has a set of VIs for manipulating a 16 X 2 LCD.

    I'm also a little surprised something like this didn't exist already. Some kind of quick feed back to an operator would be nice to get the current state of a system without needing communication to a host.

  5. Here's one I posted a while back that you just drop in any For Loop that may take a while. It will pop itself open and show progress if a certain amount of time has elapsed and the loop isn't halfway done yet.

    Darren's Weekly Nugget 06/26/2006

    Very slick, surprised you have no comments on it in the last 6 years. I personally use the WireFlow Progress, available through VIPM. I wrap it in a functional global, so it is easier to use, and has my more commonly used functions exposed. I then wrap that into three sub VIs, Create, Update, and Close that behave as expected with only the needed terminals showing.

    It does have a delay before being shown as well so it isn't seen for quick loading. It also has the ability to cancel, which I think is nice, especially because I can just turn on termination for my for loop, and wire the cancel into that.

  6. As you mention, it is in the online help for the function. We also try to indicate this behavior in the Context Help for Delete From Array:

    post-4441-0-58210100-1349719267.png

    The fact that "last elem" is in parenthesis indicates that this is the behavior when you leave the index input unwired.

    Okay this bugs me a little (but I do use this feature). What I normally see is the control name shown, and then in parenthesis I see the default value, if the value is not the default for that data type. So I may have a VI that will show or hide a VI, and I would want it to show by default. So I would have the control named "Show UI?" and the default would be made TRUE, which is what I would put in parenthesis. So my help would show "Show UI? (TRUE)". But this logic does not stand up with this VI, because I see "index 0 (last element)" is the control named "index 0"? No, it is index and the default is "last element" so I would want to see "index (last element)". I don't believe this is any real standard it is just what I've seen.

    But now that I've thought about it I believe this is probably a lesser known feature, because it is not consistent with the other Array functions. If I leave an Index Array unwired it grabs the first element, not the last. I understand a VI can differ with functionality from one to another, I just think this is one reason why someone would not think that this VI works in this way.

    Also add to the fact that not many VIs (only primitives I believe) behave differently if nothing is wired, verses the constant made from that terminal. I cannot make a sub VI that has a default of a blank string as a terminal input, but have the VI behave differently if I wire a blank string to it, versus wiring nothing to it. Again it goes to the inconsistency seen between this primitive, and other VIs that developers are familiar with.

  7. The method I always used to get the last element in an array is the "Delete Element From Array". If you don't wire anything to the index, or length, you get a scalar of the last element in the array as the "Deleted Portion".

    This is actually mentioned in the help so I wouldn't expect this functionality to change.

    • Like 2
  8. Yup. It used to be 50 about 15 years ago (we moaned like buggery!). There is no restriction now, however.

    See this confuses me a bit. I haven't been using LabVIEW for 15 years so I don't know how it worked back then, but how could they restrict that? Wasn't 15 years ago version 5.x or so? Didn't 5.x EXE's build in the RTE into the EXE so no installer was needed on Windows machines, you just run the EXE on any PC?

    I started using LabVIEW around version 6 and early 7 and I don't ever remember having to buy any RTE licenses. So for as long as I can remember LabVIEW has always had a free way to run EXEs.

  9. Well, be aware that the first season was made by inexperienced producers with such a low budget that it had to be shot in two separate blocks.

    I also gave up on Mad Men because it seemed slow the first few episodes. I'm glad I stuck with Breaking Bad past the first few episodes. I understand shows don't always work well for some reason or another early on, and may get better over time, but I just can't invest 12 hours in a first season of a show if I'm just going to not enjoy it after the first season. Maybe the Brits have a better formula with only 6 episodes a season, but then you have the other problem of only 6 episodes a year of some awesome show. The Guild is 45 minutes for a season, so I don't have much of an excuse.

  10. Well. Here's my experience.........

    ...

    Saying all that, It did take me two weeks to get through to him. I had to go through the "correct channels" first before the NI rep had a good excuse to "escalate" the issue through the system. The key is really building up a contacts list of direct dial numbers to the right people. If you know what you are talking about, they will be happy to take your call as they know it's not a silly problem. NIs problem is that there are too many inexperience people calling support for trivial things and, unfortunately for us, their system has been setup so that the engineers are well buffered from this.

    I agree. NI has some of the best product support I've seen. But getting to talk to the right people, or convincing the right people you know what you're doing, can make the support you get very different.

    I had a memory leak issue when using user events on real time. The issue turned out to be my fault, but I called NI looking for assistance before I knew that. After I explained what I was doing to the first guy I talked to, he told me user events were not allowed on real time. It was at that point I knew I was not talking to the right person.

    One more (not from me but a co-worker). We were ordering some parts from NI, I forget the actual part but it was a common enough part that we thought lead time would be a week or so. When we ordered them they said it would be 8 weeks. We called NI to see if there was anything that could be done to speed it up. After talking to the right person at NI we found out that there was some mounting bracket that was on back order from another supplier in another country which wouldn't be available for 8 weeks. We told NI that we didn't need the mounting brackets and would take them off anyway, so they took an part from the assembly line without the mounting hardware and sent us one. Note that I was told this story and parts of I may have remembered incorrectly, and your results may vary when needing help to get your hardware sooner.

    • Like 1
  11. Can you give a teaser on why it's so good? (I've not seen you give such a strong endorsement since Arrested Development!) Kinda looks like... The League meets Big Bang Theory

    It seems very "meh" for me. I tried watching it when it was first featured on Xbox Live. I didn't make it through the first season. Not because I hated it, it just isn't for me. I see now that it's on Netflix with a few more seasons so I feel like I should give it another try.

  12. Well given that this 'trick/feature' was used in the Core3 materials and WAS NOT EXPLAINED, it is going to lead to misuse and abuse. When my coworker asked me to explain it, I could not and told him he was right to think this was bad form. I prefer any such operation to be explicit. The implicit nature of this will lead to confusing bugs in the future.

    So I understand the abuse side of things for sure, but anything can be abused right? If there is proper documentation, and training (which it sounds like there isn't) then I don't see anything wrong with this feature.

    Should every polymorphic VI not have the "Automatic" option when choosing the type based on the inputs? Should we have to be explicit about that as well? What about Data To Variant, should I have to tell it, hey this is a string and you should convert from string to Variant. I understand this example is weak given that it is a primitive and accepts all data types.

  13. My vote is bug, but I've never seen this.

    Is it possible for you to post the VI? I'm curious to see if this works with other data types or somehow just is convinced a path is wired to the missing Type terminal.

    I guess theoretically this could be a feature, if all of the sink nodes are the same data type. But since NI hasn't done it yet I'm guessing it is a difficult feature to implement, but I would love to have a polymorphic VI change it's type based on an output that's needed, as well as its input.

  14. Most of my to do items aren't things that strictly need to be done so I wouldn't want to break code with them. They're usually along the lines of notes to work on inplaceness, or reminders of the limitations of some placeholder code which eventually need to be ironed out. I do like the idea of a subVI though!

    I'm in this same boat as well. I may want to bring my attention to something later, but I want the code to still be able to be ran. Using something like TODO: and searching for that string (or using the tool posted earlier) helps me see that something is important about the code, without having to break the VI.

  15. I've only made a few XControls, so I might be missing some key aspect to get this to work properly...or it could be a bug, help me figure out which it is. I have a XControl that has the look as a System Combo Box, and functions very similar to one. It works just fine but I found that if I wrote to the control, using a property node, and the SubVI that the control is in isn't being shown, when I show the SubVI the control is blank, but the Value of the control is what I wrote to it.

    Attached is a SubVI that explains what I'm trying to say. Run the VI then set the two controls programatically using the buttons. Then you can read the values of these controls and see that the value you get is the same as you set. Then show the subVI. You'll see that the XControl doesn't have the value you set. Then with the SubVI window open set the XControl again, and you'll see the value change.

    This XControl is capable of handling a local variable, or property node value change write, because it works as expected when the UI is shown, but when the UI isn't seen, the control isn't right if I then show it later.

    Is this a limit or bug of an XControl? Thanks.

    EDIT: Saved in 2011 SP1, and the top level is Main Test.vi

    Double Edit: No one asked for a video demonstration but I figured why not: Video.

    XControl UI Update.zip

  16. Plus, why would you want to pass an event registration refnum around? There should be a one-to-one relationship between event structures and registration refnums. Make a typedef cluster of your events refnums, pass those into a subvi, then obtain a registration refnum from the cluster in the same VI you need it.

    This is the way to go. The only issue to be aware of, is that you shouldn't generate an event in a subVI, for another parallel running subVI, until it has registered for the event. If you do generate the event before it is registered the event will be lost.

    You may want to implement some kind of hand shaking mechanism to ensure that a event is not fired, until it has been registered.

  17. Actually, it was new in 2012 - see Productivity Improvements > Right-click menu option for multiple selected items. I was really excited about it when I heard this was coming (and it is neat on some things - try selecting multiple FP controls, right click and create references - BAM!

    Your example was with two string constants, so that's what I tested, which only had the two items you showed "Visible Items" (not labels), and "Properties". 2011 has "Properties" but not "Visible Items", so I was confused. I wasn't aware that this was a new feature that would work differently with other items on the front panel as well.

  18. I completely agree, and I think you would be hard pressed to find someone who thinks this is the better way of doing things.

    I also wanted to mention that I didn't think this was a "new" feature. I think the only new thing NI added in 2012 was the visible labels. Just so others don't get confused, in 2011 I can select multiple items, and right click and I will get the properties option (I don't remember what version that was added). In 2012 they added the Visible Labels option. I did not think that NI had said that there were other new right click options in 2012, other than Visible Labels.

  19. Did I read that right ShaunR? If I right click on a name node it will let me hide the long names? That's awesome. Thanks I didn't know that.

    Yeah very useful for clusters of clusters of clusters...etc. I do my best to not have any items in my cluster have the same name as another item in another cluster. When hide long names is turned on, a quick glance may not be enough to ensure the right element was selected, if the same name is used.

×
×
  • Create New...

Important Information

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