Jump to content

orko

Members
  • Posts

    576
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by orko

  1. QUOTE (crelf @ Apr 11 2008, 10:44 AM)

    I don't like it at all - give me the option to install it, but don't push it on me. It's an updater - so it should stick to updating. Personally, I think an updater installing unauthorized software is a big security risk.

    You mean like the Microsoft Updater just "updates" existing software? :laugh:

    Don't get me wrong, the updater may have very well offered a choice to "opt out". I just didn't see one since I'm so used to that updater offering updates to QT and itunes...and my ipod won't work correctly if all of my computers aren't synced to the same version of itunes. I see the screen and hit okay. They have me trained well. :rolleyes: Of course, Safari definitely was checked by default in the list of updates, otherwise I wouldn't have gotten it.

    BTW...I'm really digging this safari browser...

  2. Well, well, well. Apple just updated my Quicktime to the latest version on my Vista laptop... and guess who came along for the ride?

    post-3266-1207934701.png?width=400

    I was surprised because so far the Apple updater only has updated software that was already installed. This seems like a bold (but I like it) move by them to push their browser like this.

  3. Well, the "special" MCL that PJM extracted is definitely not the same beast as any MCL that I've tried (even back to LV6.0). Just look at what happens when you play with the "Symbols Visible" boolean...

    Download File:post-3266-1207897024.vi

    From this, it looks like the special MCL is 0-based for the "Symbols Visible" active cell column, while any other MCL is base-1.

    Somewhere out there, there was a MCL that behaves differently than all the rest. Maybe someone who has an older version of LV can check it out...when was the MCL introduced? Of course, this may be a control that never made it out of NI's door...and was just used in compiled code.

  4. QUOTE (normandinf @ Apr 10 2008, 02:38 PM)

    Well, I can't say there is a difference either. I can even reproduce your error!

    I compared a new MCListbox with the one in PJM's VI and I get two different results...

    I can see from the coercion dots that they're not the same type. That seems a clue. However, I haven't found yet what's the difference. Hopefully, a good night of labview dreams will get me on track. :shifty:

    Perhaps an even bigger clue is the fact that your MCL is an integer and his is an array of integers...

  5. Marcel,

    This looks good. I've modified the ConnectorPane_Core.vi to work when there is more than one subVI on the ConnectorPane_Wired_example.vi (it was throwing an error since you were closing the references too early).

    You can see an example of the problem I had with this on the enclosed example. When there are more than one subVI with the same name on the example's block diagram, this doesn't work. I wonder if perhaps explicitly passing in the VI reference (instead of relying on the list of callers) to the core VI would solve this problem...

  6. I totally concur with Paul's suggestion. One of the many benefits of using queues is that you can use a cluster with an enum and numeric inside of it as your data type for the queue. Then when you dequeue an element from it the enum would tell the loop that is operating on the chart what to do (clear the chart,add to chart, even change attributes of the chart if you want). Oh, and of course you can stop your chart loop with this mechanism as well when your main sequences are finished.

    Here's a very simplified example w/o error handling or deferred panel updates optimization:

    Download File:post-3266-1207858000.vi (LV8.2)

  7. QUOTE (scls19fr @ Apr 10 2008, 10:29 AM)

    Yes, better!

    QUOTE (scls19fr @ Apr 10 2008, 10:29 AM)

    I still have a problem with initializing the Express VI / Input / Simulate arbitrary signal

    The problem happens when I click on Autostart and click on Stop before the end of the Autostart sequence

    A similar problem happens with "programmed" signals

    The VI Express need to be initialize when

    -I click on STOP TURBO

    -I click on STOP PROG / MANUAL

    You just need to wire a TRUE boolean to the "Reset" input of the express VIs when you want them to be initialized. Now that you are using events, this should be as easy as wiring a TRUE boolean out of the "start prog" and "autostart" events (I would initialize them on START, not STOP).

  8. QUOTE (scls19fr @ Apr 9 2008, 12:38 PM)

    it's not so bad...yet. ;)

    QUOTE (scls19fr @ Apr 9 2008, 12:38 PM)

    Sorry but I don't understand what you mean (don't forget... I'm french ;-) )

    Sorry ;) Okay, I was trying to say, "your code is too big". A well designed application should be able to be seen on one monitor screen, without the need to scroll. Solutions include using state machines in place of sequences, using event structures for button change detection, and sometimes just shortening up the wires.

    QUOTE (scls19fr @ Apr 9 2008, 12:38 PM)

    I do not know the translated menus, but in english there are a bunch of design templates at: File->New..., then it's listed under VI/From Template/Frameworks

    QUOTE (scls19fr @ Apr 9 2008, 12:38 PM)

    I still have a problem with restart !

    Using another shift register to hold a boolean value for resetting the signals should do the trick.

    Download File:post-3266-1207777098.vi

  9. QUOTE (scls19fr @ Apr 9 2008, 07:48 AM)

    Actually, to have this express VI start over when you run out of points, simply change the settings in your express VIs to:

    http://lavag.org/old_files/monthly_04_2008/post-3266-1207760436.png' target="_blank">post-3266-1207760436.png?width=400

    As far as the rest of the code goes, I have some standard suggestions:

    - use globals/local variables sparingly to avoid race conditions in the future

    - become familiar with how event structures work, since this application is very "user intensive" and relies on events happening on the front panel

    - avoid "stretching" the code. If you can't see everything with minimal (or ideally no) scrolling, then it's time to rethink the design. For instance, this app to me is divided into three major parts: front panel events, triggers, and handlers. For this reason...

    - Research the design pattern templates and examples that NI has installed for you, especially (for this case) the producer/consumer loop with events. This design pattern fits into a great number of application designs and has become the weapon of choice for me when re-using code that provides a user interface.

  10. QUOTE (Aristos Queue @ Apr 8 2008, 02:07 PM)

    4. Now open Gamma and change its connector pane. Because Beta calls Gamma, changing the connector pane of Gamma will force a change on Beta. So LabVIEW will now try to load Beta's block diagram. But wait! The VI on disk is not the same as the VI in memory. We *can't* load the block diagram. At this point, LV throws up a dialog that asks if you want to revert the Beta in memory to match what is on disk. If you choose "no", then you keep the version in memory -- the one that has no block diagram. Now you save Beta. Congratulations, you just saved your VI without a block diagram.

    Personally, I think the above behavior is evil. Sorry, but I don't care if it makes sense that it happens procedurally... can someone tell me why in Pete's sake I would ever want to select "no" in this situation...? Am I missing something or is this situation programatically detectable/avoidable? If so, why can't we just get rid of the evil dialog that corrupts our VI?

    Like Chris, I am still pre-caf at this point... so perhaps there is something I'm not thinking of. :blink:

  11. QUOTE (scls19fr @ Apr 9 2008, 03:48 AM)

    Thanks for modifying my VI.

    But I don't like something...

    10ms need to be set in to part of the vi (inside the loop Wait until Next 10ms multiple)

    and in the VI Express / Input / Simulate arbitrary signal

    I didn't like the disconnect between the wait/dX either (I would have thought that the dX input would be available on the outside of the Express VI as a terminal so you could synchronize the two easily).

    The neat thing about Express VI's though is that you can right-click them and select "Open Front Panel". By accepting the conversion, you now have a subVI that you can dive into and see how it works (even pull code out of to create a template for another VI). Doing this, I'm sure that you could figure out how to wire in the dX instead of having it set inside a "magic blue box". :D

    Good Luck!

  12. QUOTE (mross @ Apr 8 2008, 11:04 AM)

    Since I am not curious enough to try (or not able to burn the time to try) the mutiple loop/multiple event structure method, can you tell me what I would see if the same event is firing two different event structures? Is it as simple as both EvntStructs are fired reliably and the separate loops go about there merry separate business? OR do the same events never show up in two differenct loops?

    They do not fire reliably at the same time... Which is why I don't use this method. See the below VI which shows that the second and third event structures do not get the event until the subsequent loop iteration. If they all got the event at the same time, then the delays here would be less than the wait time for each loop:

    post-11742-0-14787900-1379450867.png (LV8.5)

  13. QUOTE (scls19fr @ Apr 8 2008, 02:25 AM)

    Yes, that translation was correct (Simulate Arbitrary Signal). I've modified your example so perhaps you can see a little more clearly what is happening.

    http://lavag.org/old_files/post-3266-1207691811.vi'>Download File:post-3266-1207691811.vi

    In the express VI, there are options of either 1) outputting one point per iteration or 2) the entire signal on each iteration. If you are planning on using this in a loop, select the "one point per iteration" selection. You had the "entire signal on each iteration" selected, so it was just outputting the whole sequence of points on each loop to the graph.

    Think of this express VI as a "Y value generator", in that it produces a bunch of Y values based on the data points you define inside the express VI.

    In the VI you posted, you had selected points that were 1000 "X values" apart for each second in time based on your desired test criteria (1k,1.5k,2k,3k). This is fine, however selecting 30m (or 30 milli-units) as your dX created (1000/0.03) = 33,333.333_ Y values for every second of data. That is why you had 100,000 points coming out of this express VI. To cycle through them in real time, you would have had to have a loop running at a period of (3 second/100,000 points) = 30us per loop, or 33.3kHz. A bit overkill for 4 state changes ;)

    In the above, I've changed the express VI to use the "one point per iteration" mode, and selected data points that were 1 unit away from each other for each second of test data. Then using a dX of 10m gave a total output points of (1/0.01) = 100 points (or 300 points in the 3 second total). Matching the dX by putting a 10ms wait in the For Loop hopefully produced the effect you were after.

    I also showed how you can use the "Data Valid" output from the express VI to signal when it is done cycling through the points.

    Hope this helps!

  14. Piecing together the tidbits of HTML & JavaScript that you've provided in your screenshots, this URL should be the one that is requested when you submit the form (don't put the "ADMIN:ADMIN@" at the front of this):

    http://192.168.40.125:20080/EMSRequest/LoginConfirm?Login_id=Login&user=ADMIN&ConfirmPwd=ADMIN

    Temporarily remove the wire going into the DS Open Connection and DS Read and wire the above URL instead as a constant to see if it will work. And no, you shouldn't need to put the [text] at the end, since datasockets use text as default. Check to verify the correct IP and port is in the URL first, of course. ;)

    If using this URL still doesn't work, you've more than likely got a session cookie problem (as described above) or something quirky going on with the dynamic content being provided from the unit. An easy way to check this would be to use something other than LV and see if it works... like Curl or Wget

  15. QUOTE (scls19fr @ Apr 7 2008, 07:10 AM)

    I have make this using a sequence with several step in which I modify a local variable.

    Some steps also contains a timer object

    All this is inside a loop while loop

    I'm confused. It seems that your design (while loops, local variable, sequences) cannot be changed, somehow...? :unsure: I don't see why you would want to go through the hassle of creating your own timing functions when LabVIEW has all sorts of internal waveform generation VIs ready to go.

    Can you tell us to what purpose you are trying to build this code? This may shed some more light on the subject.

  16. QUOTE (Christina Rogers @ Apr 7 2008, 04:55 AM)

    Ah, Ok. I think that limitation is going to invalidate my reasoning for trying to integrate into the GSW. :( I was trying to add an item/task without taking away anything that the developer had access to originally.

    So perhaps the next option would be to try and use the "New" dialog, which opens when you either select the "New" or the "more..." link on the GSW. I'm looking through the code (what I can see...a lot of the GSW library is locked) and I understand how to place a new node into the LVNewDialog.xml so that my item shows up in the Project category. Unfortunately, I don't see a built in MagicNumber (yes, I found out where these come from :ninja: ) that will allow me to open a copy of a project into memory from a "template" on disk. The only built in way to get this to happen that I see is to use the elaborate "Project from Wizard" mechanism, which the more I delve into the more I realize it is way too complex for me to follow blindfolded.

    I feel like I may be flailing here. The task seems easy enough, copy a project from a disk location and open it up in memory as a new unsaved project. Unfortunately the method to do this doesn't appear to be part of the GSW or its plugins (even though it seems really close).

    QUOTE (bpreis @ Apr 7 2008, 12:09 PM)

    It's just VI Server calls to the Project API to add files, however, it's a little more complicated when adding targets. You might find resource\Framework\Providers\lvdesktop.llb\PC_New.vi useful. Pass it your project reference and the project's "Root" reference (to the "Item" input). The "BehaviorGUIDs" input allows you to restrict the displayed results. The RT and PDA project wizards for example would use known BehaviorGUIDs so that the dialog only presents supported target types. I'm not sure how liberal we are about giving out GUIDs and such and I unfortunately don't have a list of all the possible BehaviorGUIDs anyway, but some other
    LV
    person (or PSE) who trolls here might be able to help you more with that particular input.
    ;)
    After invoking that VI, you should be able to continue operating on the project refnum by adding files to your new target with VI Server. If you're dealing with shared variables, be aware that much of their VI Server interface is private, but there is a primitive VI-based API in vi.lib\variable\* that might help.

    Now this may be something I can use...! Thank you for your insight...and the tip on shared variables, although for this project we aren't using them.

    One question, do you know when this became available (LV8.x)?

  17. QUOTE (Aristos Queue @ Apr 6 2008, 09:30 PM)

    There are three different backgrounds that the GSW can have depending upon the modules installed

    Thanks AQ, I knew of two versions of the GSW (with/without the Targets section) but didn't realize there was a third... I've asked Christina for her help on this.

    She also mentions in her blog that the GSW isn't a supported feature in LV8.5, and as such may change in future revisions (read:use at your own risk). I was wondering if there was any changes to the GSW in LV8.5.1, but after reviewing the readme I don't think so. That was a bug fix release... so I would think that changes(if any) would probably be more likely to occur in a minor release (ie:LV8.6).

    As far as the whole "template/tookit chooser" that I'm trying to accomplish, I was also wondering if someone at NI would have had some insight on the mechanisms used internally to create new target projects (like the RT/PDA target projects that are created on the fly after their wizards finish). Are those just using VI Server calls to the Project API to create new projects in memory based on the user's choices in the wizard? That was my plan of attack for this custom project creator that this is turning out to be. :)

  18. I would like to help you, but this description is so vague that I could only take a wild guess as to what you are trying to do (and I don't want to waste either of our time).

    Please be a little more specific. What VI are you refering to? How are you trying to use it? What characters are you getting back and how are you looking at them (using an email client? Which one?). Screenshots are fantastic, actual VIs that you are trying to get to work may be better.

    Also, this question doesn't belong in the LabVIEW 8.x.x Discussions forum. Please take the time to become familiar with the several different forums LAVA has available, so that you can get the best response possible in the shortest amount of time.

  19. Hey there,

    I have a project that currently holds template VIs (and their supporting VIs) for use by developers in developing new applications for a system we've been working on. Now I'm trying to wrap this up in the best way possible into a launchable "toolkit chooser" that creates a new project with the chosen template and the supporting (probably in a lvlib) VIs, ready to be saved to any location the developer so choses.

    I have some kick-off questions, after researching ways to go about this:

    1) The Getting Started Window (GSW) seems to be an ideal place to stick the link to the Tk chooser. I've been successful in inserting new items into the LV8.5+ GSW and am pretty comfortable about being able to launch pretty much anything I need to launch from here. For some reason though, inserting a new item in the "new" section pushes the "open" section MRU list down and mangles the "target" dropdown. Does anyone know how to shorten up the MRU area (dynamically would be ideal) so this doesn't happen?

    2) Has anyone ever messed around with the "Copy To/From Project" private methods? It looks like they should give me what I need, but I haven't been very successful in using them.

    3) Is there any way to programatically invoke that new nifty Project "Save As..." feature so I don't have to "roll my own"? It would be nice to have all the toolkits in their own project files ready to go...and just invoke a Project Save As.... based on their selection so they could chose where to save it and what to name it.

    4) Let's say I want the Tk to open up a project from disk (remember, this is from the GSW...so there aren't any active projects open) and programatically pick and chose what I want to copy out of a project on disk into a new project in memory (without saving it yet). I could launch a VI which asks which toolkit to use, then opens up the project on disk, creates a new project in memory and copies stuff over...closing the original project after it is done. Is there any way to ensure that no changes are attempted to be saved to the original project on close? What I mean is, even if I make the template project read-only, there may be a chance that closing it may generate prompts to save changes. I don't want that...

    5) Is there a better way to do this?

    Thanks for any insight!

×
×
  • Create New...

Important Information

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