Jump to content

Francois Normandin

Members
  • Posts

    1,209
  • Joined

  • Last visited

  • Days Won

    46

Posts posted by Francois Normandin

  1. Congratulations Stephen and many thanks for your involvement in bringing OOP to LabVIEW.

    I can say that it changed a lot of things in my programming, all of them for the better. It's given me the opportunity to tackle problems in a whole new light and I feel I've improved both my pleasure and productivity while tackling them.

    I hope I can say the same again in 3-5 years. ;)

  2. NI has a set of wifi DAQs. Easy to deploy, reliable, same coding as any other NI modules.

    http://sine.ni.com/nips/cds/view/p/lang/en/nid/205686

    If you don't have the budget for these nice modules, you could setup a bluetooth connection (115 200bps) to get enough bandwidth.

    http://arduino.cc/en/Main/ArduinoBoardBluetooth

    You'll need to feed the microcontroller with your analog data which means you'll need to create a shield with 2x 16-bit analog ADC chips. But the rest is just sending your stream of bits over Bluetooth to your computer.

  3. Without being demanding :) have you thought of creating a "Silver" style expansion pack? How much effort would required in getting that working?

    Unzip this file under the "LabVIEW Data\LAVA\Control Templates" directory and you'll get a Silver-looking template installed.

    Silver.zip

    Note that this button doesn't resize well, just like the other templates, because it creates a fixed-size image of all button states.

    I'll investigate how to programatically change decals, but that's not something you should expect soon. I have too many other things on my mind.

    You can also create your own templates and drop them in the same directory as stated above. SImply create three PNGs with the button backgrounds you wish and name them like the templates (templatename_1.png, templatename_2.png, templatename_3.png), then make sure that these pictures are "clipboard-copied" on the templatename.ctl different states. The rest is magic ;) .

    edit: You should do the template in the lowest possible version, so that it can be called from whichever version you use...

  4. This seems to be the same problem than UI Tools: Control addon.

    I'll check this and post a new version in VIP file format soon. Stay tuned.

    New version uploaded with corrected namespacing for the JKI State Machine dependency.

    Please report if this doesn't solve the problem.

    Note that this package gets installed in the new LAVA palette...

  5. In VIPM I had selected Refresh Palettes and Mass Compile so I'm not quite sure what I've done wrong.

    The current versions for UI Tools Addon I have installed are:

    Control Class = 1.1.0.3

    Control Class (System) = 1.1.0.3

    jki_lib_state_machine = 2.0.0-1

    Should I just re-install the previous version (1.1.0.1 or 1.0.15-1)?

    Hi Chris,

    Sorry for the late reply, I've been on vacation last week.

    This package is an opg file dating back to vipm 3. I had to deal with post-install and pre-uninstall VIs myself. I might have made a mistake in the code and there's a messing up during upgrading.

    When I downgraded to 1.0.15 in LV2010, I got the same problem you have. (missing jki files with uitools namespace)

    I downloaded 1.0.14 and downgraded it one more step and it worked. But I couldn't get version 1.0.15 or 1.1.0 working. It seems the error is also with the Bitman dependencies.

    I'll try and put up a package 1.2 in *.vip format.

    In the meantime, you can use 1.0.14. Let me know if that's a workable solution in the meantime.

  6. Hi,

    I've installed your addon in LV2011 (RGT 2011) and it works fine in the IDE.

    But when creating an executable using the RGT (only for Microsoft Word) the application throws an error 2208 and doesn't execute on a machine without the full development system.

    Can anybody confirm this?

    Regards,

    Bastian

    Hi Bastian,

    just to make sure... this add-on doesn't give you access to Word and Excel reports without a purchased license from NI. It simply adds OpenOffice Writer to the list of choices in the Report Generation Palette.

    If you have a valid RGT for Word license and my add-on doesn't work in an executable, then it's something I'll investigate.

    There shouldn't be any links between the RGT for Word/Excel sold by NI and this piece of code, but the package does replace a single VI to select the right class (the one including ooWriter in the Enum). It has been done in LV2009, so perhaps something has changed in LV2011.

    Did you ever try the addon in an executable with LV2009 or 2010? (Is this a new issue with 2011?)

  7. I am trying to use similar pieces to what have been mentioned so far. However, I need to be able to spawn VI clones of several different VIs that have different connector panes from each other (different inputs, but same outputs) to be run in subpanels, and then read the outputs from these clones.

    I played with exactly what you describe when the new LV2011 was launched. However, I decided to implement an event callback instead of reading results with the Asynchronous Call function. I used my Dynamic Dispatched method to make sure that all children clones received the event reference to notify the caller of the results. If you need the clones to send different data, make your event type be of a common ancestor to all these types and your caller can deal with each answer in a different way as it sees fit.

  8. That's a very old thread... I'm not sure I remember why I wrote my answer like that. Of course, you're right that it is not a viable solution to use code that could break later.

    I think I meant that if you make your package "version = 9.0", then you will not be able to install it on other LV versions using VIPM. In essence, you would not be able to update your code to a new version unless you get rid of all this package's VIs. That will prevent it from breaking in a future LabVIEW version because you cannot use it unless you copy it by yourself instead of using VIPM. But if you do so, you cannot blame the original packager for the break in your code. That's what I think I meant by "limit your responsability": by making it strictly a LV9.0 package.

    For the rest, I kind of suggested that it might never break, so the packager could take a chance and just package it for any future versions... That in itself is not good advice (but that seems to have been what I meant at the time) and Chris suggested a better approach would be to incrementally repackage it each year and deprecate the old package. I agree with that.

  9. You wouldn't have to make a totally new package - once the functionality is confirmed in the new version, then you'd just need to update the old package to support the new version, right? Does VIPM allow selection of different versions? Say, 2009 and 2010 only?

    Like Jon said.

    Of course, vip files are not editable using text editor due to checksum, but an opg file certainly would be updatable easily for newer versions... Not that I would do that: it would be faster to simply change the install requirements and repackage it as you suggest.

  10. At one particular instance of my application, I want to force the child to call the parent method (irrespective of having dynamic dispatch terminal – addition function in this case).

    Is anyone aware of any work around for this type of usage?

    Thanks,

    Vidula

    The problem comes from your choice of inheritance hierarchy.

    Inheritance should always be a "Is A?" relationship.

    In your case here, multiplication is not an addition... so multiplication should not be the child of addition. They could both be children of a parent class named something like "Arithmetic operation". Addition is an arithmetic operation, multiplication is an arithmetic operation.

    Now it does not mean that you cannot perform an addition in one instance and a multiplication in another, but this should be implemented differently and never forced arbitrarily from the outside.

    Consider this example where you have a parent class that is a generic 2D geometry where you have stored a collection of points that delimit any geometry (array of points).

    You could have a child class for a triangle, which would always have 3 points. And you could have another child for rectangles, which would have 4 points.

    When you call a method that is common to both children, for example "Measure Area", you will be calling the parent method which will dynamically dispatch the appropriate child method depending on the object type that is propagating on your wire. The implementation of the children methods will differ.

    • Like 1
  11. And now the problem: When setting the Edit Position this way the tree structure scrolls so that the value column (column 1) is at te left most position, so now I can edit, but I can't see what I am editing ;)

    I tried using the "Top Left Visible Cell" Property but then the cell I want to edit loses focus...

    Is there any way to make the tree structure scroll to the left again? so that both columns are visible

    Or another way to easily edit a cell?

    The way you code it is correct. However I only see the described behavior when the column I edit is larger than the control width.

    I don't think you get what you want unless you set your column widths so that both your columns can be shown completely at the same time.

    If the horizontal scrolling bar is shown, then it's a good bet that the cells will shift when you edit.

×
×
  • Create New...

Important Information

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