Jump to content

Grampa_of_Oliva_n_Eden

Members
  • Posts

    2,767
  • Joined

  • Last visited

  • Days Won

    17

Posts posted by Grampa_of_Oliva_n_Eden

  1. Warning! Shameless plug follows.

    I will be posting a Nugget on a technique I discovered for accessing complex data structures entities starting only with a generic reference to a control on Sunday evening.

    It should survive LV upgrades structure redefinitions and re-ordering of clusters.

    I'll post here once it is posted.

    End of Shameless plug.

    Ben

  2. QUOTE(Pana-man @ Aug 23 2007, 08:02 AM)

    Not wanting to take the credit, it was suggested up higher. If you click on the link to my samples, there is a template ready to download that provides a base framework. Amazingly similiar to others I have seen. I guess when you are on the right track, you start to see convergence on simularities. It implements all that I have suggested above, And can very easily be modified to a two loop machine. The one feature I have not seen in similiar architectures is using a multiline string to add states rather than the pesky array constant. For me, it makes it infinitly more readable. For all, feel free to comment good or bad.

    Like your signature, I'm always willing to learn.

    Since I came into programming through the back-door I have never received any formal training in programming (LV courses and intro to C are the exceptions). So rather than getting the "this is a car and it consists of a suspension system, a..... I learned to code by examining first a bolt and then a nut and the two put together are a fastening system...

    So hearing this from the "top-side" helps a lot.

    Ben

  3. QUOTE(Pana-man @ Aug 23 2007, 12:21 AM)

    This reminds me of a conversation that went on some years ago petitioning NI to remove sequence structures from LabVIEW as well as another that wanted global variables removed. The core of both arguments was actually due to poor user implementation, and NOT the actual tool itself. This framework, like any other tool works just fine if the programmer has discipline. naming states with some sort of grouping method, logical dividers, a state, for debugging, that catches undesired cases, a cluster that is passed thru so that adding/deleting variables that need to be accessed in every state is on ONE wire, some sort of error handling routine AND the ability to log what the machine is doing are MUSTS. GEE, just like the arguement to remove GOTO statements from basic and fortran when I was doing that in the late 80s. The environment and frameworks are never responsible for making up for poor programming. This is not a criticism... When I look at my original labview code from back in 1993, it is enough to make me puke, but the race conditions, lockups and other problems I had back then were due to my poor programming decisions, and NOT from the ability to shoot myself in the foot! My $.02. No inflation here. LOL

    The suggestion to group and organize the steas is a good one. I'll pass that on to the engineer who has to work with that app.

    Ben

  4. Thank you to everyone for their replies.

    So it seems like the QSM will live for a while and that 2-10 states are recomended AND that a QSM with 60 states is a nightmare even for the most experienced QSM'ers.

    ???? Follow-up Q for those that use the QSM ????

    Are diagrams ever used to document these critters and if so, could you post a sample diagram (just an image not your code) that illustrates the operation of a semi-complex implemtation?

    Thank you,

    Ben

  5. QUOTE(purehemp @ Aug 18 2007, 03:26 PM)

    ...For example, I dropped out of Engineering and started Geography, and I heard a lot of physical nonsense...

    A true understanding of all things is beyond our capabilities. We have to team up and trust each other to report on their area to the best of our ability.

    We are also responsilbe for evaluating what we see hear and read (unless we choose to reamain asleep, or is that "a sheep"). :rolleyes:

    Ben

  6. QUOTE(Kevin P @ Aug 17 2007, 12:04 PM)

    Good question. I'm particularly interested in the I32<-->U32 kind of case.

    I've been carrying around a factoid in my head for several years that such a conversion involves merely a reinterpretation of the bits and does not have to make a data copy. Probably back somewhere around LV RT 6.1, I did some execution time testing for converting a large array of U32's into I32's. At the time, I thought my observation was that the execution was too fast to include any memory allocation (didn't have the "Show Buffer Allocations" tool available). So I took that to mean that conversion between signed and unsigned ints did nothing to change or copy the bits in memory, it just reinterpreted them.

    I've been relying on that factoid for a long time now, and will now have to see if I've been fooling myself.

    P.S. Were there any weird behaviors of the "Show Buffer Allocation" tool, especially when it first came out? Somewhere along the line, I developed a degree of skepticism about that tool though I don't recall exactly why. It seems like everyone else finds it to be extremely reliable.

    Same on the skepticism for the Profiler tool, only much more so. I have only rarely found it to be even a little bit helpful at tracking down memory or CPU hogs. I had an app running 24/7 for weeks. Windows' task manager would show me losing ~2MB available memory per day. But the Profiler couldn't find any vi with growing memory consumption. The max usage of any vi kept showing up at about 350 K, even after Task Manager had dropped by 100 MB.

    -Kevin P.

    The buffer re-use only is valid after a save 9actually a recompile) and if you had not done that, you may have questioned the lack of a buffer.

    The profile tool had a problem where it was not updating mem useage, but I do not remeber when that was fixed and what broke it.

    Sorry!

    Ben

  7. QUOTE(Tomi Maila @ Aug 17 2007, 08:36 AM)

    My educated guess is that LabVIEW will not reuse buffer in type conversions in any situation. This is confirmed by 'Show buffer allocation' tool at least for I32 -> U32 conversion (assuming the tool works properly). LV 8.5 in-place structure doesn't help as the input and output type must be same when using the structure. You can fairly easiy test if

    I'm leaning the same way.

    even an I32 > I32 feed from shift registers and stored in SR's still copies the data at its input.

    Similarly for string to U8's.

    Ben

    Note: This has changed with newer version of LV. See NI link for Christian example.

  8. QUOTE(TG @ Aug 16 2007, 09:20 PM)

    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..

    The local library serves my needs. If they are really good then I start begging my wife. :rolleyes:

    Ben

  9. QUOTE(dsaunders @ Aug 16 2007, 02:42 PM)

    ...

    Adding in the complexity of preemption and priority scheduling to the architecture already described is chaotic.

    David

    I was trying to sit back and try to learn something but your last comment has me smiling becuase of two statements from people around me.

    One said "It is like using a bunch of "goto" statements". The other was my wife who has repeatedly said "Goto statements introduce chaos."

    ;)

    Ben

  10. QUOTE(Paul_at_Lowell @ Aug 9 2007, 12:54 PM)

    ...

    I still had many questions, so to find out how UML fits in the design process (why and when to create UML artifacts, their relationship to Object-Oriented Analysis and Design, design patterns and principles, and the software design process itself--particularly the Unified Process) I read--and highly recommend--Applying UML and Patterns (3d ed.) by Craig Larman. This book offered the most complete picture I have found thus far.

    ...

    If I had to recommend just one of these to read it would definitely be Larman's book.

    Wonderful suggestion Paul!

    I have only read the first 10 pages but the things I have read Stephen and Tomi write are already making sense.

    Maybe I'm not so "st-OOP-id" after all. :thumbup:

    Ben

  11. Although arrays are not automatic, they can be done.

    THe example below illustrates a method that works on 2-d array.

    http://forums.lavag.org/index.php?act=attach&type=post&id=6635

    Not Equal compare agregatres inside nested For Loop structure to get array of changed.

    Divide index by column count gives row and column. Index NewVal on you know what changed and what the new value is. Old value optional.

    Array size change detection is left as an exercise for the reader. ;)

    Ben

    http://forums.lavag.org/index.php?act=attach&type=post&id=6636

  12. Don't fight this battle alone.

    Let NI do their job. Get the local sales guy on the line and let him work on showing the higher-ups what LV and NI have to offer. If your oragnization wants to standardize LV out of the game, NI has a lot to loose.

    Make a phone call.

    Ben

  13. QUOTE(shoneill @ Aug 15 2007, 10:01 AM)

    ...

    On a side note, am I the only one who uses a seperate UI loop (hiding controls, scaling charts and so on) for their code? I guess I'm trying to prevent my main loop from switching to the UI thread for hiding and showing controls, but I don't know if it's overkill or not.....

    Shane.

    No, I try to do all of the UI work that can be accomplished quickly ( < 1 second) in the GUI loop and anything that takes time gets passed off to a slave loop.

    Ben

×
×
  • Create New...

Important Information

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