Jump to content

TG

Members
  • Posts

    225
  • Joined

  • Last visited

Posts posted by TG

  1. QUOTE(Aristos Queue @ Aug 18 2007, 06:49 AM)

    The queue references get invalidated when the VI that created them goes idle. Could this be the source of your problems?

    Thats probably it.

    Thanks AQ

    I guess I am going to have a tough time working around this. I got snagged because it did not occur to me that any resources would be

    de-allocated if the object still exists. I was hoping there was an easy way to keep em.

    Looks like the only solution for my plight is to reastablish the ones that are invalid when obtaining the reference to the (so called existing) object.

    BTW the GOOP refs are fine but I think there is a good reason for it.

    Im wondering if I approachd this correctly. Id like to create an object then obtain the reference to it later from other threads (like an available resource) until it is destroyed.

    I am not sure how Endevo GOOP objects exist in the repository. It appears they are just referenced clusters.

  2. I need to ask this because Im not at the target machine to try it myself until Monday.

    Re Endevo by ref Goop Wizard 3.0.5

    I am using queues in process objects.

    WHen I create the object I create the queue and store the queue reference in the attributes of the object.

    Then I use the queue for controlling public status and shutdown functions etc..

    Question is the following.

    I ran into a glitch today whereby the queue refs and some other refs go invalid while the Goop repository is showing "live" objects.

    The values of the refs are intact but they are invalid

    Anyone have any Idea what I am describing?

    Thank You

    PS: I hope this isn't simply Labview not running. How can that be when I am using the object inspector. I don't yet get it.

  3. QUOTE(Graeme @ Aug 17 2007, 11:00 PM)

    Hi all,

    Recently upgraded from Base to Professional. Replacing some of my polling While Loops with these 'new' (to me, and therein lies the problem perhaps) Event Structures, but have become a bit perplexed.

    A top level VI contains some numeric/string/path controls. These control values are checked for validity (file/dirctory exists, for example) whenever the user changes their value, before they're passed on. Okay so far. Event Structure fires as a result of the change and executes the relevant code. However, I wish to do the following:

    I want to check the control values at top level first run (they may have been valid once but not now). No value changes of course, so no events fire, so nothing happens/is checked.

    The user can set the control values from file. I would like to check the values after that.

    The user can set the control values to their default. I would like to check the values after that.

    The latter two cases I thought might cause the events to fire, but of course I now know that the Event Structure responds only to GUI changes, not programmatic ones. I know this because a colleague pointed me towards the Val(Sgnl) property node. This seems the way forward, but how to implement it 'best practice' I'm not sure.

    It seems to me, for every situation where I want to check control values that have changed (maybe) programmatically, I must wire their Val property to their Val(Sgnl) property to fool the Event case(s) into thinking there has been a value change, even though there might not have been! Fortunately, all my controls are in clusters, and there are not many clusters, so this wouldn't be too onerous.

    I attach a VI that does do what I want. My problem is that this method seems very untidy and clunky, particularly as no value changes may have occurred at all, rather defeating the point of the Event Structure. I can't help feeling that there must be a slicker way of doing what I want. Tell me I've missed the option on an Event Structure pop-up that says "respond to value changes however occured and at first run" :thumbup: . Alternatively, tell me I'm barking up the wrong tree completely :( . Any ideas, anyone?

    Regards, Graeme.

    While Im not really up to speed on change signal events If they do actually work Id see no issue with using

    that approach for small to medium complexity tests.

    BTW theres nothing wrong in my book to firing (even false) events if the end result is validated input.

    I cant say if its the preferred way to do it however..

  4. Truth be know I wish I had more > really good < books on software engineering to refer to.

    I have several but few are really good ones.

    LabVIEW Advanced Programming Techniques Second Edition by Rick Bitter, Taqi Mohiuddin and Matt Nawrocki

    There are so many books out there but budget is limited and so.. how to find the good ones to spend wisely? hmm..

  5. QUOTE(captain @ Aug 14 2007, 01:38 PM)

    They are not so dumb: When using unbundle by name on a such typedef, I can change controls order without problem.

    With LabVIEW 6.1, the behaviour is the same for a property node (properties nodes are mixed). But for an event, it give an error: event no more defined. I think it's a little less worst. I prefer to know when I do something wrong.

    I think it should be a bug.

    Its also there in 8.2.1

    I personally spent a lot of time tracking down logical errors

    when I tried to use property nodes in Typedefs.

    Reason: I did not know any better.

  6. I find express palette to be VERY frustrating. I do not use express for anything at all.

    It is annoying to have express shoved into my palettes everytime I upgrade.

    I hope saving the old INI file does the trick. Too much time wasted trying to get LabVIEw back to the way I need it to be.

    I wonder how long it is going to take to get 8.5 squared away.

    I upgrade only because I am fearful of being left behind.

    Using LV for 10+ years never had any (real) problems until version

    8... 8.2 8.21 ...

  7. QUOTE(Tomi Maila @ Aug 9 2007, 04:09 PM)

    Most pple consider UTUBE as entertainment.

    Most of us cant see it at work cause of Smart filter (ugg)

    QUOTE(i2dx @ Aug 9 2007, 05:12 PM)

    is there a way to make the palettes look like this view, which I have in
    LV
    8.2.1 and where I am used to?

    I tried hard to make the "Programming" palette the only "open" and "default" palette, for the function palette, opening on a right click on the block diagramm, but I found no solution.

    any tips would be greatly apreciated
    :)

    Man, I can't believe this. The older palettes are gone now?

  8. QUOTE(HChandler @ Jul 31 2007, 04:29 PM)

    Do all of these code instances persist throughout the life of the vi? Can they be freed without closing or leaving the vi in which they were created?

    I think there is a way but VI server has to be used and the reentrant Vi will be a clone. Pass the Vi reference to the clone and have it

    destroy itself when its done doing its job.

    I believe the instances persist until the VI that created it quits but I may be wrong about this.

  9. QUOTE(HChandler @ Jul 31 2007, 04:29 PM)

    Correct. Data stored in a static (non reentrant) VI is static.

    The VI has a single existance and as such there is an implied semaphore mechanism in static VI's in that only one call at a time can be made to it.

    QUOTE(HChandler @ Jul 31 2007, 04:29 PM)

    If I call a non-reentrant vi from several different places within the same vi, only a single instance of this vi is created, with a single name space and program code space (correct?) , but when the re-entrant property is set, each iteration of the same vi spawns a new process, allocates new memory for variable storage and program code?

    Correct except it is based on what you drop on the block diagram. I believe the instances already exist before run time.

    However if you use VI server to spawn the VI using reentrant option then I (think) a clone is created.

  10. QUOTE(abuch06 @ Jul 27 2007, 03:07 PM)

    I'm having issues all over the place... I think my company put up a block on posting things on the internet, which means I have to somehow find the answer to this problem by explaining it rather than showing you. It's not difficult and I feel retarded about it but I can't figure it out:

    i can easily explain whats on the vi. its a simple nested for loop with two array feeding into it. one is a time array the other is an array with values for 26 channels at each of those times. inside the for loops the array is indexed and there is a inequality sign checking to see if the value goes over 2. if it does... i want the program to create a seperate 3D array: channel, value, and time. if it doesnt go over 2 then i want the program to disregard the value and continue. simple enough? i tried creating the array inside the case structure after it checks the value... but when the case is false, the tunnel still requires an output.

    biggest issue: array coming out of the for loop has a different size than the one going in and it needs to be based completely on the values in the array going in and they change everytime on every channel.

    thanks

    Based on what u say the indexing of a forloop or while loop will not work for you.

    Instead you must create (or input) the arrays from outside the loop into a shift register then inside the loop do the comparison.

    Use index array to get at the element you want to compare. If its >2 add an element to your 3D array then cycle it back through the shift register.

    If its <=2 simply pass the array through it to the shift register unchanged.

    That way the array will not grow until your condition is met, regardless of how many checks are made based on the other arrays being input to the loop.

    It is not efficient but it will work,

    Duh

    Orko beat me to iit.

  11. QUOTE(orko @ Jul 25 2007, 06:44 PM)

    Thing is its supposed to change the orientation of the hand by 90 deg and this is whetre the comfort comes in. (as in natural as holding a beer can) Only thing for me was you dont really hold it. All you can do is put your hand up against it. Its not a full 90 deg cause its shaped kinda like a end of a football. I thought it was swell for the first day then I realized by day 2 It was not (for me) as good as I had hoped. (Keep in mind my hand is totally porked so I am forced to be very picky about it.)

    It does not support the hand at all and the tendonitis is still encouraged by the mouse clicking.

    EVeryones different so my bad might be your good. Im afraid the best we can do is take a best guess and hope.

    On the other one Its a bit clumsy to move around but oh man is it comfy. I can surf web for hours with no pain at all.

    (again this is me) I can do labVIEW fairly well with it but the lack of accuracy is a real pain.

    I know a trackball might end up being my ultimate fix but have used one Logitek and did not like it. It feels cheap and the ball hits up against gimbals or something.

    Anyway I keep trying. I figure sooner or later Ill find ultimate solution.

    QUOTE(george seifert @ Jul 25 2007, 07:59 PM)

    I really like my trackball for
    LV
    input. I've been using it for about 4 years now. Simple, pretty inexpensive and you can use it with either hand. No hand or wrist issues like I had with my old mouse.

    George

    DO they come with scroll buttons now or is it still by using the two button trick?

    QUOTE(Ben @ Jul 25 2007, 08:32 PM)

    QUOTE(Ben @ Jul 25 2007, 08:32 PM)

    I am still using a "Kensington expert Mouse" aka trackball.

    I also wear CT wrist braces. Within seconds of first putting them on, my wrists seemed better (not fixed but the further damage was stopped).

    I use a keyborad tray that mounts under the desk and slides out allows for adjustment in height and angle. It is adjusted to hold the keyborad under my hands when they are resting relaxed on the arms of my chair.

    The trackball is also held by the keyborad tray and I have proped it up so that its base is parallel to my hand when it resting comfortably on the arm of my chair WITHOUT twisting my wrist.

    Looking back, I believe I was suffering from two conditions (at least).

    1) The mouse requires I hold it steady while clicking. The track ball does not require being held still. If you do not touch the ball, the cursor does not move.

    2) Twisting my hand such that the palm was parallel to the floor.

    I suspect us
    LV
    types are exploring new teritory because we need to use the mouse so much. Most CT solutions are aimed at keying.

    If you are waking up at night with shooting pain in your forearms, wear the braces when you sleep.

    I also found that driving my car without wrist braces was bad.

    If you need pictures I will try to get some.

    As it stands now, I am pain free and have been so for for almost a year. I do not have to wear my braces while sleeping or driving now.

    Trying to help (cause I been there),

    Ben

    Thanks Ben

    Kensington expert mouse and wrist braces.

    You mean the long ones like the Futuro type of isd it just a small brace around the wrist itself?

    Ill have to look that one up

    I was thinking about just using left hand for clicking and maybe a right handed ball for positioning.

    QUOTE(LV Punk @ Jul 25 2007, 05:53 PM)

    . Maybe a change of pointing device and viewing angle might help...

    PH2005051000402.jpg

    That picture sure looks good to me. If only I could wire like that and use left hand for clicking I think I would be all set for another 20 yrs.

    ....

  12. Back to the ergonomics

    I have tried two different mouse technologies. Evoluent and Zero tension.

    BTW researching this is pretty tough. Most of the products out there are evaluated by the companies that sell them. Not so easy to get the real story in all the clutter.

    The Evoluent is nice but it does not address carpel tunnel/tendonitis injuries completely. My wrist forearm would hurt after awhile

    using it.

    The Zero tension is extremely comfortable and I can use for long periods with no pain.

    Only problem is the accuracy really stinks so for LabVIEw it is not working for me but everything else works fine.

    I am looking for pictures or success stories based on ergonomic assistance (bordering on disability assistive) devices?

    Thank You

    JR

  13. QUOTE(Aristos Queue @ Jul 10 2007, 07:12 PM)

    Addendum: I do really want to know how so many of us managed to use classes for 11 months after release before this got found. It hasn't even been reported from customers... my teammate found it randomly while working on something else. It amazes me sometimes just how long a seemingly common bug can go undetected.

    Id be interested in who is using LV classes and for what purpose.

    My exp with LVOOP so far has been guarded.

  14. QUOTE(i2dx @ Jul 7 2007, 07:00 AM)

    yes,

    I have used a "Keyspan USA-49WG" and a "Keyspan USA-19HS" adapter to get additional RS232 Ports for a LabVIEW application (Testing µCs, which communicate through RS232 with the "host application")

    I have heard of issuses with some other adapters, but I had no problems at all with the Keyspan producs. Maybe that sounds like heavy advertising, but that's not intended.

    Most appreciated i2dx :yes:

    My main thing is to not waste lots of time on issues with hardware. I think you just saved me much trouble in deciding.

    Thank You,

    JR

  15. QUOTE(Michael_Aivaliotis @ Jul 8 2007, 03:11 AM)

    Good point. I was beginning to think the same thing.

    Since it is already part of the named instance naming it

    would not give any benefit.

    QUOTE(Michael_Aivaliotis @ Jul 8 2007, 03:11 AM)

    I'm not sure I follow. What OO framework are you using? OpenGoop, LVOOP? If you create a new instance of your object then doesn't each instance already have a place to store data?

    I am using Endevo GOOP2 objects that represent actual hardware device types and specific (child) devices. It is true that each has a place to store data and I did think of just using attributes to store the current "status" as the object method continues doing its task (looping + measuring.)

    But there is an application level need to monitor all "active" processes from one (1) and possibly (1+) locations (as in getting the latest measurement or process value with timestamp etc) I thought a queue would be a fair solution. With a queue I could create a so called "data window" that would make "progress" of the method "visible" with as little overhead as possible (once the queueREF is obtained via another public method.)

    My assumption is that writing to a queue is faster then locking, writing then unlocking an attribute many times in a loop. (not tested this mind you)

    I'd be interested to know if this is not correct.

    QUOTE(Michael_Aivaliotis @ Jul 8 2007, 03:11 AM)

    Notifiers are basically occurrences with data. usually used to "wake up" loops and at the same time pass data to them. With the release of dynamic events and event structures, they become less important however still useful sometimes.

    Thats true I had forgotten that anywhere an occurence is used a notifier will work too, only with better control since it can be

    reused, destroyed etc...

    Thank You

    JR

×
×
  • Create New...

Important Information

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