Jump to content

Jim Kring

Members
  • Posts

    3,905
  • Joined

  • Last visited

  • Days Won

    34

Posts posted by Jim Kring

  1. QUOTE (Val Brown @ Nov 17 2008, 10:13 AM)

    There is "Not A Semaphore" for the simple reason (I assume) that one might want to test for its existence. This is similar structurally, is it not, to having "Not A Refnum..." and such.

    Yes, especially since the "Not A Refnum" function does not handle Semaphores (or "classic", non-native Queues and Notifiers).

  2. QUOTE (BrokenArrow @ Nov 16 2008, 10:53 AM)

    I really can't see what you can do with a Semaphore that you couldn't do with a local, global, or a Notifier. Does anyone here commonly use them?

    Semaphores are ideal for enforcing mutually exclusive access (i.e. locking and unlocking) to a shared resource (global data store, communication pipes/sessions, instruments, etc.). For one great example, see:

    "LabVIEW for Everyone", 3rd edition >> Appendix D, "LabVIEW Object-Oriented Programming" >> Semaphored Data Store (pages 912-917)

    Semaphores are rarely used, casually, in LabVIEW programming. However, they are extremely useful in certain situations.

  3. I am using "vi.lib\AppBuilder\BuildTargetBuildSpecification.vi" to build a Build Specification in my LabVIEW Project, programmatically. The build takes a while and I would like to get status information while the build is happening, just like the progress/status dialog shows when you run the Build Specification from within the Project Environment. I have not found any way to get the status information.

    I did find a global variable, "ABAPI Dist Build Status.glb.vi", that looks promising. However, it probably only has status information in the Application Context in which the builder is running. I'm wondering what the name of this application context is, so that I can try to obtain the status information. Any ideas?

  4. Should this concept should be coupled to the term "source"? This problem is generally applicable to identifying members of any set that have an external dependency (which effectively causes the entire set to have said dependency).

    What if we describe these things as "externally dependent" or "having external dependencies"?

    Or, along the lines of your original idea, what about calling these things "internal-enders"?

  5. QUOTE (Aristos Queue @ Oct 19 2008, 08:39 PM)

    a. The behavior is not new for any of the three properties shown here.

    b. There's a very simple principle at work here. The question "Is *" has three answers: true, false and not a valid question to ask. For example, before checking IsClone, you should have already passed an "Is VI of StandardVI type?" test. It makes code more robust in the long term. When we introduce a brand new VI type, it is much better for code to light up with errors that scream "this code has never been intended to handle this new VI type and you should visit it to explicitly handle it somehow" as opposed to silently doing something that may or may not be valid to do with that type. Here's an example: Suppose we introduce a new "recursion VI type" that explicitly allows recursion in some strange way. But there is some piece of code somewhere that does the following:

    1. Traverse VIs looking for a cycle of references

    2. When a cycle is found, check each VI and ask "Is 'share reentrant clones' enabled on this VI? If not, return error (recursion not allowed).

    This new Recursion VI type does not have "share clones enabled". Indeed, it is never valid for this new type to even have clones. Your code is now wrong if one of these new types comes along, but if the property just says "false", you'll never know it.

    For the record, there is no Recursive VI type in existence anywhere in development, but it was a hypothetical example that I came up with to illustrate this point.

    If LabVIEW wants to enforce whether the question is valid, shouldn't it be enforced at edit-time through reference wire type? What I mean is: shouldn't there be VI Server subtypes of VI, just like there are control and lvlib subtypes? It sounds like the editor is being lazy and making life harder for me.

    :2cents:

  6. When reading the "Is *" properties of a VI, the Property Node will output Error 1035 with the explanation that "Operation is invalid for this type of VI."

    This doesn't make sense to me. Shouldn't these properties simply output FALSE if you try to read them for VI subtypes (Poly VIs, Globals, CTLs, etc.) that don't have the property? Raising an error just makes code dysfunctional -- the worst thing is that this seems to be a new behavior and is breaking my existing code.

    Download File:post-17-1224467548.vi

    post-17-1224467612.png?width=400

  7. HChandler,

    Chris and Joe pointed you in the right directions.

    By far, using VIPM Professional to download and create a VI Package Configuration (*.vipc) file containing the required packages is the easiest approach. (I've just finished updating the page with instructions that Chris referenced.)

    Regarding the installation of non-approved software, you'll definitely want to get VIPM and the OpenG packages approved by your organization :) I know that I couldn't live without the OpenG VIs.

    If you have any questions or need help with VIPM, please feel free to post to the JKI Software forums or send us a message.

    Thanks,

    -Jim

  8. QUOTE (Minh Pham @ Sep 30 2008, 10:56 PM)

    Dont like the GUI of this site much, I'd better stick with this site as I am still a new member to this

    awesome site. Go LAVA !

    The point of the stackoverflow.com site is that users ask programming questions and people reply with answers to the programming questions. Answers get voted up and down, with the best answers floating to the top. LAVA is much more than this -- it's a discussion forum with a suite of other community features like a wiki, code repository, and more.

  9. QUOTE (Tomi Maila @ Sep 17 2008, 09:34 AM)

    Toby, that is a good point. However you must also consider if your intellectual property is actually more safe on a managed third party server or on your own server where security issues are patched on a random basis.

    I agree with this sentiment, Tomi.

    Hosting companies (more so with highly reputable ones) have a huge incentive to ensure the security of their customers' data -- it's the life-blood of their business. So, it's s something that they must continuously consider, test, and build into their process. I'm sure that service providers can do a much better job of security than most small- and medium-sized companies. However, large companies (with large IT departments) can probably do a good job of security, too. But, they typically tend to do this by severely crippling the usefulness and adaptability of the IT environment. For example, they make sure that your subversion server is secure by not providing you with (or letting you manage your own) subversion server :(

    The good news is that the corporate world is starting to get more comfortable with the idea of software and IT resources as a service. Large companies just move slow and have large IT teams that need to hold onto their jobs.

×
×
  • Create New...

Important Information

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