Jump to content

jccorreu

Members
  • Posts

    27
  • Joined

  • Last visited

    Never

Everything posted by jccorreu

  1. For those 2 book recommendations... What about now, 2 years later? Is there much about the new versions of labview that would change or are not covered, or are the books still valid? I am in the position of having to pay for my training and certs on my own. I know I can pass both the CLAD and CLD right now. But I'm worried about missing something important from the intermediate course. My goal is to get certified yes, AND i also want to imporve my labview, and fill in gaps in my knowledge... And go on toward my CLA. I've got books: Learning with labview7 express Software Engineering approach to labview Labview based advanced instrumentation systems Also what about books: Labview style guide Labview Advanced programming techniques
  2. Been some time since I looked at this thread. Some amusing and interesting things since then. I've got 2 things for now. 1) the mind I saw talk about free will, dreams, quantum equations, etc... I've always had an interest in who we are, how we work, what the universe is and how it works, etc.. The other day I was reading some labview book and it was talking about neuroscience using labview for brain wave measurements, (i'd like to do this to myself and see how forced meditation or thinking or emotions could purposefully alter my signals) And it reminded me of a couple a things. There seems to be a question of where thoughts and conscioussness comes from, does the brain make it, or does it somehow make the brain work? We know that if I move a finger, that there is a nerve signal that had to previously travel from the brain. That signal was preceeded by brain activity, i.e the thought "i will move my finger". But some research (i am sorry i dont have a source for you), and just thinking about it, makes me wonder if the thought initiated that brain activity, or if that brain activity initiated the thought. I don;t even know if we can answer that question. (Of course there is another possibilty: that they happen simultaneously, and there is not a cuase and effect relationship between the two occurances) But then... I thought that either situation is pretty amazing. Its like the qoute " some days I think we're alone in the universe, other days I think we are not, either way its an intriguing possibilty" i mean, if "consciouss thought" comes first, and brain activity is a result of that thought, then what triggered that, where did it come from, something "beyond the physical"? On the other hand, if the brain activity occurs then we experience our "conscoiuss thought" that means "we" did not really initiate it did we, but "we" are just the result of something else, a running program, we are AI? Yes this is a heated debate amongst some people, and a question for a very long time. But what I am getting at here is... why really care which it is, becuase both are stunning realizations. ok now for #2) ALfa... who/what broke your heart so much?
  3. I'm looking for recommendations for a few good books about programming control systems with Labview 7.1.1. I do not know when I'll make a transition to 8.5+. The following is my attempt to give a little idea of where I am at and where I am going, in the hopes it may give anyone reading this the background necessary to offer some reasonable recommendations. I'm still fairly green with control systems and labview. I've been programming for many years in many text based languages, but never control systems. I've had an instrumentation lab as part of my undergrad physics degree that was a very basic intro to electrical components and circuits, and labview on XP. Since then I've been working for 9 months on a project, essentially teaching myself control systems, data aquisition and LabView. So this means my knowledge is a hodge-podge. I've come a long way, and I realize there are things I do not understand properly. As I make changes, additions, etc., I keep coming across bugs and efficiency problems with my code. My fear is that it has become a patch-work, instead of a well-designed work, and that I need a deeper and more extensive overview of the Labview language and the ideas behind controls system programming. I communcaite using DAQMX7.5, and VISA, over analog and digital NI boards, and also rs232 and rs485 devices. As far as Labview architecture I use combinations of all the standard models that are discussed in help files and forums, and I use queues, notifiers, references, and property nodes extensively. The projects are for experiments and all tend to require 1) reading from a combination of devices, usually from 20-80, over a combination of above methods, with a user-defined interval as low as 500ms 2) writing to a combination of devices, usually more than I read from, as pre-defined processes, also with user-defined intervals as low as 100ms 3) manually writing to devices as on-the-fly variations of pre-defined processes (i.e. user event interupts and changes occuring write process) 4) a fair bit of user activity on a front panel 5) so the code I've written has been an attempt at a solid core with modular components that can be switched out for each client 6) have to be reliable and safe Also, how valuable are the courses that NI offers? There are many bits of Labview I know nothing about, some perhaps basic and certainly much that is advanced, and some bits I know a fair deal of, but could perhaps benefit from getting a true developers level of knowledge concerning. And then there is the electrical and control systems knowledge in general (seperate from programming language knowledge) that I am at a definite disadvantage with. As always I appreciate your feedbacks James
  4. Yeah, i have the pro version, and as far as I know it is only available for this version. What I've done is gone ahead and setup Subversion with TortoiseSVN, and am using the checkout method so that I can be certain my 2 versions of my project are completely independant of each other. Everytime I do anything now I completely close LAbview, so that there should be nothing in memory, then I open the particular branch I am looking at, or I go to the compare heirarchies utility. In the process I did find a limitation of the utility. I can use the show vi heirarchy option, but it will only show me the heirarchy of the primary set. It'd be nice if when I choose show vi heirarchy from the secondary set that its heirarchy would be shown. Do you know if it works that way in 8.5? Or should it be mentioned to NI? As well as a utility that shows a list of the full path of all vi's in the heirarchy, or an option to show the full path in the title bar. Also, when I make changes to the primary set while in the compare utility, why does it then popup a warning that the secondary set is loading subvis and type defs from the directory in which the primary set resides? This in itself is no problem since I'm not saving the secondary set anyway. I'm just curious about the underlying ways in which the tools I use work.
  5. I'm using 7.1.1. Having just gotten back from 2 client sites, where I made individual changes to code for some issues, I now need to bring them together into one. I have them saved in 2 parallel directories. The trouble is that when I use the compare vi's utility on the 2 versions, only one set of the subvi's will be loaded. This is a problem because for each different version, some of these subvi's, even though they have the same names, their code is also different. (either becuase it too was changed on site, or its a dynamically loaded module that is client specific) I've seen discussion of people using TortoiseSVN or some other code control system. I also know that 8.x has some built in code control. And I've heard of people using namespaces. But I do not see how any of this will help me in 7.1.1 when trying to compare vi's with the same heirarchy, same names. This has to have been a topic of discussion before, but I've not been successful in finding it. A link to that would be great. If not then what do people do? Is there a way to create namespacing in 7.1.1? thanks James
  6. This is 7.1.1. I've created an array of clusters of doubles, each double having exactly the same properties. For each cluster in the array, I do some simple math, and create an intermediate 1D array of doubles containing the same number of elements as the total number of doubles present in the original array of clusters. I then repeatedly search the array to remove duplicates using the remove duplicates vi from OpenG (here I simply placed the code in line for ease of readability). Then I sort that output array. In one case I've found that a duplicate is not being removed. Specifically the value 0.3. But it is slightly more complex than that becuase some of them are being removed. Out of 4 instances of that value, I am left with 2 instances. What seems truly strange is when I run on higlight execution, it becomes evident that the ones being removed have a specific pattern or relation to which is found when the search array primitive is called.... In the intermediate array it appears that elements 3 and 5 are related, and elements 6 and 8 are related, as far as the search array primitive is concerned. I.e. during the iteration during which we search for the 5th element, the search primitive finds its element as related to where the 3rd element was placed. Yet the iteration for the 6th element finds nothing, and the 8th element is given the search primtive element relating to the 6th element. I noticed that those pairs are related to that simple math I did to create the intermediate array. Elements 3 and 5 were arrived at through addition. Elements 6 and 8 were simply moved straight through. So I decided to change the values in my original array that led to values of 0.3 in the intermediate array, and everything worked as it should. So it seems to be, at first glance, something to do with that particular value, and the different ways that value is arrived at, that the search primitive does not see as being the same. Anyone see something I am missing? Any one see anything like this before? Anyone have an alternative solution? etc... thanks James Download File:post-8730-1199418756.vi Oops I forgot to include the data that I'm using. Array 1 .1 .2 .3 .1 .1 .1 .2 .3 .2 .1 .1 .2 Array 2 .1 .2 .5 .1 .3 .1 .2 .5 .2 .3 .1 .2 In addition I've found that adding 0 does not produce this result. Array 3 .3 .3 .3 0 0 0 .1 .1 .1 .2 .2 .2
  7. QUOTE(TG @ Sep 14 2007, 10:58 AM) So on that note... I too am currently in that boat of either using the GOOP1 or the OpenGoop, as I am sure are many others out there... (and I do see lots of advantages in using OOP on the project I am currently working and future projects) I've begun playing with them and am admittedly having a diffiicult time getting anything useable to work. ANd I've not had much success in finding explanations or documentation on their use and implementation. The begining of this thread looks like a really good start to what could help alot of people make the transition. Could we please continue along our originators course? And for those of you who are in the know, where are some good resourses that currently exist? james
  8. Spent a month in Prague last summer. In a great portion of the city there are so few lights at intersections they are noted on the maps. ANd many of intersections without lights also had no other form of traffic control. To top it off not only did you have pedestrian, private vehicle, motorcycle and bus, you also has to contend with electric trolleys (which most certainly took the right of way) But I must say that there was some of a pause on most peoples parts, not a truly continual motion. I live in Colorado, US. Lots of people here ski of course, and their driving does reflect that, only look ahead, and the person in the back is the one who's supposed to go around the one in the front. Too bad that works in any lane so often people just clog the road and no one can get around. Where I learned to drive you look all around you, faster people and passing in the left lane, slower people on the right. If on a one lane road and someone comes up behind you, you put a signal on and move to the shoulder and slow down so they can safely go around. And I do love traffic circles :>)
  9. QUOTE(NormKirchner @ Aug 27 2007, 09:30 PM) thank you all for your respones. yes I am using 7.1.1, and I did mean class. I know that 8.2 has built in support for classes, but in earlier versions there is still a way of manually making classes that can be passed by reference. I downloaded some tools from the openg site that make it easier. Though I could also just make a type def, since I don't need in this case all the functionality a class can offer. Yet another reason to go to 8.2+. Seems that my bosses are planning on upgrading in the forseeable future, but until then... When I get there, I 'll definitely be re-reading this and the links. James
  10. i'm using 7.1.1 I now we can create customized controls. But can we add our own properties to their property nodes? Nothing I've found suggests this is possible, so I thought I'd put it out there. Does anyone know where the properties of a control are stored, any behind the scenes way to access and manipulate them? Otherwise I suppose I can just make a class. thanks James
  11. QUOTE(Neville D @ Aug 20 2007, 12:02 PM) Hmm, thanks something new to learn about.... I did come up with yet another alternative. This one using a notifier timeout instead of case, wait, or while. http://forums.lavag.org/index.php?act=attach&type=post&id=6691''>http://forums.lavag.org/index.php?act=attach&type=post&id=6691'>http://forums.lavag.org/index.php?act=attach&type=post&id=6691
  12. well the case and wait is not going to cut it either. when they are running by themselves with no real program they're ok, but when I attempt to use them in a full scale project with multiple vi's running multiple loops, well it falls short. sometimes there is up to a 30ms pause between the time the wait period is calculated and the time that the wait function is called. i've attempted to get around it as you can see in this .vi but its just not working. i suspect its because of the way the system handles doing multiple processes, cycling amongst them all, and sometimes it hands of the processor to another routine right in the wrong portion of my code. Does anyone know of a way to force labview to go through a section of code without letting any other process interupt? I was hoping putting that little bit in a sequence might, but now I think of it, theres no reason they should have given it that special status. james http://forums.lavag.org/index.php?act=attach&type=post&id=6686
  13. ok so the idea of using a while loop to contorl the timing was a bad idea. it takes way too much of the resources doing those continuous loops, and putting a ms wait in there defeats the purpose. here is another go at it using a case for a specified wait. it seems to work better. http://forums.lavag.org/index.php?act=attach&type=post&id=6650
  14. I never got an answer as to whether or not 8.x has the platfrom-independant timed loop, or if its still a windows-only component. OK so here is my attempt to create from scratch a basic timed loop along the lines of 7.1.1 that is platform independant. As I find more need for functionality I'll add it then. Anyone is welcome to make more of this. Any comments, critiques, suggestions, etc are welcome. IF it becomes useful lets add it to OpenG library. This might belong in a different forum category for here on. james http://forums.lavag.org/index.php?act=attach&type=post&id=6649
  15. QUOTE(george seifert @ Aug 9 2007, 11:02 AM) I never looked at the timed loop before because it is platform-dependant in 7.x. I won't use platform-dependant functions when I code, unless I have version for each of the platforms I'm developing on/for and then I just call which one is necessary. But I digress. I know next to nothing about the timed loop because of this. Bad form since I've got one as the fundamental loop in the master control program, that I've inheritted from someone who never told me why he wanted to use it. So if you'd point me to some good eduactional source on this it'd be great. And not just some long winded discussion, but something used to teach us newbies. :>) Again the point I really want to emphasize is that I want to replace it. Because I am using 7.1.1, NOT 8.x, It does not work on MAC and Linux, which makes for a very difficult time for me :>) I've already started playing with ways to emulate some of the functionality from scratch which I'll post over the weekend (i think). But if I can avoid doing what someone else has already done, I'd rather. Its a lost opportunity to learn a little more, but then again seeing what more advanced coders do is always teaching me anyway. And they often make much more elegenat clean efficient extensible code. james
  16. I'm using 7.1 and working on code in which the previous guy put the windows-only timed loop function. I also develop on mac and linux and am wondering if 8.anything has made this for those platforms as well. If not has anyone done it from scratch? thanks james
  17. OK then in all serioussness.... From what I've seen, sometimes "good" parents have "bad" children, "bad" parents have "good" children, and all other combinations. Which means in truth who would decide something like that is practically irrelevant since it would not have the kind of bearing as we might like. Really what we would like is just to get rid of the people we deem to be undesireable, but then that gets into yet a whole other sticky situation... I mean everyone of us finds undesirable aspects to everyone else, and for different reasons. I don't have an answer, just attempt to look at it from as many perspectives as I get to. I mean look at China's policy of killing the newborns if they have more than what 1 or 2 kids. They'd probably do better to kill the fathers, it'd stop the breeding problem alot more quickly. But then again how many of us can really get behind either one of those kinds of suggestions. I know I don't, even though I make that comment about kililng the fathers. I've read part of the Republic, and other writings of both Plato and Socrates. I prefered Heraclitus. In truth its been too long, and my recollection of them is minimal. I do recall liking the reading, it really got me thinking. Somethings I agreed with, others I didn't, and some of my opinions have changed in time, while others have remained the same. Same with Confuscious, and Lao Tzu, and numerous others, all around the globe, and throughout written history. At this point I can say that I'd rather get rid of lawyers and politicians, instead of artists and musicians. But even they can have their benefit. I believe one of Romes Caesars is qouted as saying something along the lines of "when philosophers are kings, and all kings philosophers, than peace is possible", and its something that for the most part I like. I'd like to add that all scientists should be artists, and all artists scientists, and while I'm at it so should everyone else, be artists, kings, philosophers, and scientists. As far as differnt forms of government go... any of them could work if people worked better together, if people were somewhat more (dare I say it) conscious. All of them have fallen far short of the mark, because of people. My ideal is a combination of all of them, something like egalitarian, anarchic, utopia. (Ok now for a bit of being a wise-######, kind of) It'd be nice if people just offed themselves when they realized they were not working properly. But if we were that conscious and committed then I doubt there'd be that need. One major problem I have is that there are too many attempts by people to make other people conform to our ideas. I grew up living in different countries, and I took from it that there are different ways of living life, none are "right" or "wrong", they all have their "pros" and "cons", and that everybody has some piece "figured out" that someone else is missing. Of course people are afraid of letting people have more freedom because they usually relate that to taking advantage of others. I.e. "If I let you do whatever you want, then you'll take from me" But the funny thing is, we all take from each other all the time already. That is part of the intra-action that is nature. It seems to me that there are lots of justifications and reasons, etc.. that people use, and in order to be able to use them they must blind themselves to what is really going on around us, because in truth what we are afraid of is happening in ways already. Its more a matter of taking a concept and then applying our judgements to it, adding something of our making to something we observe, and in so doing failing to recognize how processes are occuring. We get into that trap of "knowing" something, and being "right". Alfa, you made some statement along that lines of only a few people are capable of knowing god, the universe, higher consciousness, the great spirit, the great mystery, the whole sort of general mish mash, allah, nirvana, brahman, or whatever you want to call it. I disagree. Everyone is CAPABLE, not everyone allows themselves, or makes an attempt. And as far as what this existence is, how it works, and all the other questions of the ultimate answer... shit! Maybe we can know, maybe we can't. maybe it matters, maybe it does not, maybe everyone can have their own set of answers and still get along with everyone else, or not. I've spent most of my short life attempting to understand. I don't understand. Hell I have fewer ideas that I keep a hard belief in any longer. It seems that the more I learn and experience the more ideas I break down, and I have fewer certainties with which to replace them. I used to believe in physics. Funny that I believe less is physics now that I'm working on a degree in the subject. It's alot less of a "hard" science than everyone thinks, though it is certainly difficult. ok , enough for now....
  18. In an attempt to get my brain going again after vacation I decided to read this volume of prattle. I don't think it was one of the best decisions of my life, but I'm not nearly as groggy, though just as brain dead. I took the advice of one of the first posts in this list and read an earlier topic started by alfa. And I will add something I would have liked to put there, but still seems relevant. Considering how much there is here to which I could add you'll have to again excuse my decision making process ( see above) http://forums.lavag.org/index.php?act=attach&type=post&id=6509 To begin on a serious note I have read some of this book, and surprisingly found it reasonably well written. It had some good ideas, and things people should know. On a MORE serious note, I think that anyone who falls in the category of the intended audience of this book (as based on its title) should not be allowed to read this book, nor to reproduce. My question then becomes one of should the person in question make that decision for his or herself, or should it fall to the rest of society (like the contributers to a thread for instance) to decide for that one? my apologies to all :>)
  19. In answer to that Yen, I've inherited the job. The coder who started the project just quit showing up, and I got hired. So I've been having to learn a half completed framework, and turn it into a fully operational system. I'm still finding things like this that I wind up changing. And, I only have some idea of what was going on inside his head, he left almost no documentation at all. I did change to a queue. It would have been nice to realize this a few weeks ago, because now I realize a number of problems that were bothering me were all related to this. I had a feeling he had something wrong in his architecture and didn't like the little alterations here and there that I kept finding myself doing, but until this I just didn't see it. I'm still pretty green at Labview. And I've really appreciated the help I've found at LAVA, and am wanting to put out some things I learn along the way for others to benefit from.
  20. Here I'm posting an example of a race condition I found from my use of notifiers in the project I'm working on. There are many vi's in the project and the notifiers are communicating amongst a few of them. Turns out there was a nice timing condition that essentially was overwriting the first notifier I sent, therefore I only got an action of the second, because it took less time between the calls, then it did for the vi to run that was waiting on the calls. http://forums.lavag.org/index.php?act=attach&type=post&id=6353
  21. I've never really looked at rendezvous before. I've been using lots of notifiers and queues. I'll read more into them however, to see what all I might use them for. I noticed where I had a couple of race conditions in my code, after ya'll replied. Thank you much for the insight. I notice in one of your quotes mention of classes in LabView. Is that something new to v8, or does my 7.1 also have them? If so, got a goog link for me to read up? My background is c++, and I keep looking for ways I can use more of what I learned from that here, notice the metaphors if you will. :>)
  22. I got this one, and found nothing on the internet about it at all. So now I've figured it out I'm gonna post my solution. Got a VI that opens another and takes references to that others controls, and has a registered event created from that. IT seemed to work just fine, except the first time I would open it, after having closed all my VI's, each time. But when I ran it with the highlight execution it worked every time and I could never re-create the error in that mode. Turned out that after I opened the vi, it was going through the props for front panel, controls[], and registering the event, before it actually started running the vi. So i changed the run vi invoke node to NOT wait until done, and passed the reference from that on to the property nodes. I have not seen anywhere that specifies a subvi needs to be running in order to register for events. Nor have I seen much about what the purpose of having the Run vi invoke node wait until done. This is just to illustrate the difference in the code I was using. This one actually seems to run everytime, unlike my large and complex project which is using this subset. http://forums.lavag.org/index.php?act=attach&type=post&id=6332
  23. http://forums.lavag.org/index.php?act=attach&type=post&id=6329 I did not notice there was an error fired until you mentioned it. SO I did a little more with the code to figure it out. Question? Is there a way to be informed of errors, a place to check, when I do not place an idicator for everything, or run in highlight mode? The error was 1055 invaild reference. So I created a looop to take out all the not-a-refnum-constants from my arrays. Now it works just fine. So then will someone explain the not-a-refnum-constant a little more in depth for me? I thought it could be used as a place hold that would be ingored. At first I thought that it wouldn't even be put into the arrays as I was building them. That would be the most effiecient way of doing what I was trying originally, is to simply put nothing into the array where I am putting not-a-refnum-constant.
  24. Thanks that does seem to work. So my question then becomes.... why didn't what I was doing work? What's going on within Labview? In one of the examples for dynamically registering events (dynamically register for evetns.vi) it has a couple of different controls as well as a user defined event all going through one registration then into the event loop. So what's the difference between what i was doing, and what they did? I notice there's was the current vi, while I had my controls on a different one. But why should that make any difference? cheers James
  25. I've atatched a zip with 2 files. One is the relative code stripped from my main loop, the other the panel I'm reading control events from. http://forums.lavag.org/index.php?act=attach&type=post&id=6289 Essentially I've gotto be able to handle different diagrams, so I came up with a way to create arrays of control refnums, based on the class and a label convention. This part works just fine. Next I create an event registration with the 8 different groups that I have to work with. Each of these 8 then become my "unnamed" events. Just for testing I put in a popup box to tell me which are firing and which are not. Turns out the first one fires no probs. None of the others will work. What am I missing here? thanks James
×
×
  • Create New...

Important Information

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