Jump to content

hooovahh

Moderators
  • Posts

    3,365
  • Joined

  • Last visited

  • Days Won

    268

Posts posted by hooovahh

  1. Yeah that setting in the VI properties is mostly useless.  I say mostly because it does function, just not consistently with more than a few controls.  You may resize to make it bigger, then go back to smaller and controls will move slightly, things won't be aligned any more and other general UI issues.  

     

    For these reasons I never use that function.  Instead I make my UI scale appropriately, using a series of splitters, and some times the Panel/Pane Resize events.  The more complicated the UI the more work it is but it pays off in the long run when a EXE can be ran on any monitor resolution greater than some limit.  If you have 2012 open the Finite DAQ Acquire example, it does some basic UI scaling using splitters.

  2. Use the Variant Attribute.  You can have an attribute named "Potato" and set the value to 100.  Then Set another attribute (on the same variant) called "Apple" with a value of 13.  Then read the attribute with the name "Potato" and you will get your 100 back.  You will need to tell the Read Attribute function what the data type of Potato is but that's the only catch.

  3. I can't hide the color boxes, because the color boxes are in a series of arrays.  

    Yeah I realized that after I posted.

     

    Attached is my test that I think does what you want, or atleast will help you in one possible solution.  It is a virtual array.  You have a UI element that looks like an array but it is actually several clusters and a vertical scrollbar.  Then the values in the cluster are changed based on the scrollbar to simulate an array control.  You can then click and change the color, and going transparent will make the control not visible.  This is some rougher code I was in a hurry and probably spent too much time on it as it is.

    Transparent Color Box Test.zip

  4. I don't fully understand your problem but a transparent color box confuses me a little.  Generally a color box is there so a user can select a color, how is the user going to know that the color box is there if it is transparent?  Won't it look like nothing is there at all?  Could you possibly make the color box not visible if they select transparent?  I guess you would then need to detect a mouse down and show it again so they can select another color.

  5. I can't find any official post from NI. I will not.

    You will not what?  I was asking if this was something made by NI

     

    Module generation - I have not tested, so later will be.

    Later will be what? Module generation?  What does that mean?

     

    I do not have that description.

    You have a problem with this, without a description?

    Yes, we all have a problem understanding your posts.  Descriptions would help.

     

    I wonder whether to give "FPGA Module Generation Toolkit", when "FPGA Scripting" too difficult without description.

     

    Your posts are hard to understand and your code is not documented.  If you are looking for help and beta testers please try explaining what is going on.  I still have no idea what your code does.  I assume it makes FPGA VIs but that's the only useful information I've been able to understand, and that was in the title.

  6. Okay we need a little more context.  I see that this is just a bunch of menu file so I assume the scripting functional already existed they just aren't on the palette.  So where did these mnu files come from?  Did you make them?  I can't find any official post from NI.

  7. Well a few links that I'm sure you've already seen.

     

    Ben's Docking example 

     

    Dynapanels

     

    tst array of subpanels

     

    Snap off windows

     

    Messing Around with Splitters (can't seem to find source)

     

    By combining all of these you can get some neat UI functions.  I've tested a few UI techniques and you can get some very nice flowing applications.  I think what you are trying to do is very possible but will take some time ironing out the kinks.  The things I've done with it were not as feature complete as what you are proposing.  One thing to keep in mind is it maybe a good place for some OO code.  You might be able to make new instances of a classes and then override the class with functions for the specific UI element.  This could be an architecture where there are instructions on how to make your own UI elements that can be plugged in and used.

  8. I used VMWare and actually liked it more than VPC.  VMWare also supports sharing USB devices, so I could share NI USB DAQ devices to my virtual PC and it could be used.  I think VPC has some support for this now but I think it only works with USB storage devices.  There is a performance hit for sure but it wasn't too bad, especially with a fresh Windows image. VMWare also supported 64-bit Windows as the guest OS, and multicore. 

  9. Has anyone with Developer Suite SSP received DVDs yet with Labview 2012 SP1 on it?

     

    Thanks. --Joe

    I have.  I'm not sure when I got it though because I just downloaded SP1 when it come out, and just recently noticed a pack of DVDs with the SP1 release.

  10. As a matter of fact there is an API to access the Lithium data, but you would have to be some kind of geek to be using that to analyze trends on the idea exchange.

    If such a geek did exist, I am pretty sure he would tell you that projections have my idea ahead of yours 180.12 to 151.66 after two years time. Of course that geek's predictions tend to be better when the tail is not disturbed too much.

    That geek would probably also be very happy if the property node idea were implemented. In fact, I am pretty sure he would think it is a great idea.

    ...

    ...

     

    (but seriously cool)

  11. Couple things.  I downloaded the zip and all that was in it was a text file with some strange characters, no code.

     

    What you maybe talking about is the VI needs to have the compiled code in the .vi file for it to be dynamically loaded.  If you go to the VI properties under the General section there is a check box for "Separate compiled code from source file" you want this off, or else it won't be able to be dynamically called.  Not sure what version this feature was added (around 2009) but if the checkbox isn't there you can't separate the compiled code so there is no issue.

  12. Thanks for reply, but i don't want to use event I want to enable and disable of column index of 2D array.

    Please see below attached imageattachicon.gifArray Collumn enable disable.jpg

    Each element of an array has the same properties.  Therefore you cannot disable some elements of an array using properties, you must disable all of them or enable all of them.  Is there something wrong with using an event to programatically disable them?

  13. The main reasons are probably cleanliness, code safety and efficiency. A variant will cause a data copy, which is not a big deal if you're comparing a boolean, but could be an issue if it's an array with 10M elements. If you also make all your VIs work only with variants, then you will either start getting variants in the BD or the user will be forced to repeatedly convert back (and possibly make mistakes).

    My intend was on the read to have a polymorphic VI for each type (variant being one of them) which performs the Variant to Data back to what is needed.  I only was curious about replacing all of the writes with one Variant VI.  I can't do the reverse because there's no way of changing a control at run time to the type needed.

     

     

    In the end, if you create a tool which will be reused many times, it takes considerably less effort to make it easy to use upfront than it does to make it simple to build. If you create an automated tool to help with the polyVI creation, then the effort becomes even more minimal.

    I did do this to make life a little easier.  I create the polymorphic instances programatically, but not the polymorphic VI itself.  I come to hate the polymorphic VI editor more and more with usability issues that make it slow to work with.

     

     

    The real thing we need here is for LV to be able to automatically adapt VIs to work based on input type. NI has known this for years, but so far hasn't managed to come up with a stable and reliable mechanism. Hopefully at some point they will and then we won't have to deal with this any more.

    Yeah I know, I can't wait to see the solution to this (sounds like not until 2015 or later).  

  14. I couldn't find a "Reuse Discussion" section so sorry if this could be in a better category.  

     

    Lets say I have a reuse VI.  It does some stuff with data that is passed in but the type of the data doesn't matter so I make it a Variant.  Now this is sorta generic where I can use this with any data type, but there will be a "dirty dot" showing that a data type conversion took place whenever I use it with a data type other than a variant.  The more correct way to do this is to create a polymorphic VI, with a VI type for as many data types as I think will be used (string, boolean, VI Ref, path, numerics etc).  Then when this is used it will call the same Variant VI but with a "To Variant" primitive before calling the variant version.

     

    My question is this.  Is all of this necessary?  If I create a VI that works with a Variant, do I really need to make types for all of them that simply have the explicit "To Data" conversion instead of just using the variant version that does the conversion it self.

     

    One example I see of this is the "Data Changed?" VI from OpenG under the comparison pallet. This VI will work with any data type, and its default is a variant.  So why did OpenG go through the trouble of making a version that works with 40+ other data types?  In this example OpenG did not call the variant version but instead made one version for each data type, but I see the benefit of all other types just calling the Variant version.  This way if I make an update I just have to update the variant version and all others call that.  Otherwise any code update to one polymorphic types, means updating all other types.

  15. Create an event for the "Mouse Down?" on the array control.  Then use the VI here to get the index that the mouse is on based the coordinates of the mouse.  Then if the column equals the value you want to not allow the user to edit, then send a TRUE to the "Discard?" terminal (all of this within the same "Mouse Down?" event).

     

    I tried making a VI to show you but for some reason I can't download the VI from Lava.  There's been some minor database issues around here lately so I hope when you read this you are able to get the VI.

     

    EDIT: I believe this is the same VI on NI's forums.

  16. Probably you could also try HELPer from http://vigods.com/toolkits/HELPer/helper.html. It's NI certified toolkit for doing exactly what you want. And arguably, with much less fuss over it than in mentioned above solution. Just try it.

    This doesn't appear to be "exactly" what was asked for.  The tool you linked to does not generate CHM files at all (correct me if I'm wrong) it only makes HTML help files.

  17. Nope. Don't know you or what your real name is (a hoover is a vacuum cleaner over here and in everyday usage). It was, and always will be a typo (apologies).

     

    My handle, however, IS my real name. (I don't care how you spell it and even I get it wrong sometimes whilst typing. Luckily I rarely refer to myself in the third person ;) )

    Oh my apologies.  A Hoover is a vacuum in the states as well.  However when I say my name is Hoover people some times ask "How do you spell that, like the vacuum?" I say "No like the president".

  18. Yup.

    What hoover said.

     

    attachicon.gifread.vi

    Sorry if this is off topic but this is the second time you have called me by my name (sorta) do I know you?  How do you know me by my name?  And not that it bothers me but could you please refer to me as "hooovahh" (or hoovah if you don't count the correct number of letters) other members may only know me by my alias and I think it was be easier if we referred to each other by our internet names.

  19. The "Data Type" terminal in the read defines what the data type out will be.  You wired a constant of a string with the value of 0.  This tells the read VI that the data in the file is a string.  You should wire your cluster to the data type terminal, then the output will be that cluster.

     

    EDIT: Also if you wire a -1 to the count terminal it read the whole file.  When I ran you VI it gave an end of file error so they way you were calculating the remaining bytes was incorrect.

  20. The way I resolved a similar issue was to use the "Path to Command Line String.vi" (which isn't on the palettes) rather than path to string then hacking the string. It seems to work on all platforms.

     

    attachicon.gifpath2string.png

     

    You can then just use all the path primitives (e.g. strip and build) to traverse the path without worrying about the underlying format.

    I've never heard of this primitive before, but I couldn't get your snippet to work.  I tried in 2012 SP1 but it just added it as an image (I first saved it to my PC locally then dragged it to the BD).  I opened the file in a PNG editor and I couldn't find the VI data inside.  Would you mind posting a VI file with that primitive in it? 

  21. This can't be done the way you described it.  Every item in an array has the same data for all properties, only the value can change based on each item.  That being said you can achieve the same look by creating an array of clusters, where the two items in the cluster is a string (with transparent borders) and a slider.  Then you can bundle the name and the value.

     

    Attached is an example of what I'm saying save in 2011.

    Array Signal Example.vi

×
×
  • Create New...

Important Information

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