Jump to content

BobHamburger

Members
  • Posts

    123
  • Joined

  • Last visited

  • Days Won

    3

Everything posted by BobHamburger

  1. A little clever application of scripting could solve this issue. Sounds like a good code challenge.
  2. QUOTE(crelf @ Feb 19 2008, 08:30 AM) I concur with what Chris is saying here. If you're running on a Windows machine, the rule of thumb is that you can't reliably get loops to run any faster than around 30 mSec. 50 or even 100 mSec are safer bets. Windows just has an annoying and unpredictable habit of randomly going off to service something that it feels is a priority at any given time. I've heard of people who have shut off virtually every automatic service that Windows has running as background tasks, in order to improve reliability and determinism of loops, but by doing that you're also limiting the things that the platform is capable of doing. If you need speed and/or determinism, go to an RTOS.
  3. QUOTE(crelf @ Jan 30 2008, 06:26 PM) Reminds me of a related prostitution joke. A man and a women are talking about a mutual colleague who just won a million dollars in the lottery. The man asks the woman, "Would you have sex with me for a million dollars?" The woman replies, "Sure!" The man then asks, "Well, would you do it for $50?" She replies, "No, what do you think I am?" He answers, "We've just established that. Now we're just haggling over the price." Use this one with your female friends. It's a regular laugh riot... as long as they have a good sense of humor.
  4. I just recertified my CLD, which required me to take the multiple-choice test which I believe is identical to the CLAD exam. In my opinion, this exam contained largely irrelevant material and poorly constructed questions with ambiguous answers. It's very clear that these exams are authored by folks in Customer Education who have had little or no real programming or development experience with the tools upon which the tests are based. Many of the questions cover arcane and trivial details that have little applicability to real-world issues. NI needs to wake up and restructure their exams so that they provide an accurate and credible assessment of the test taker's LabVIEW development skills.
  5. Most of the time, the action that would be desired while adjusting the slider is a steady (but finite) stream of value updates. Presumably the user is moving the control while observing the results in his system, and wants to see continuous control actions. The mouse down/mouse up routine previously described wouldn't provide this kind of control action. Face it folks: some times polling is the right way to handle GUI servicing. It's certainly the simplest in this situation. Use the timeout on the event structure so that the current value of the slider is captured every 100 - 200 mSec, and be done with it.
  6. In my experience, the biggest limiting factor with laptops have been the HD controllers. Unless you specify a higher-performance unit, you'll be limited to a top data transfer rate of about 20 MB/sec. For a point of reference: full-frame uncompressed color VGA (640x480 pixels, 4 bytes/pixel) at 30 frames per second will give you 36.8 MB/sec.
  7. A quick thought: you could resample your data so that you end up with a new, constant dt. Then you could use any of the standard analysis VI's.
  8. Just another testament to how our civilization is becoming increasingly depraved and effete. This guy put a lot of effort and planning into doing something that, at best, was a useless and utter waste of time. Nice production and cinematography, though; there's probably a bright future for him in Hollywood, home of all things depraved and effete.
  9. Hi Doug, glad to see you on this site! Poke around a bit, and you'll find a wealth of useful information here.
  10. Wow, 20 pages of useless (albeit somewhat amusing) crap in a single thread. Truly inspiring. QUOTE(Mike Ashe @ Jun 29 2007, 08:26 PM) You know, Mike, electrical conduction isn't nearly that simple, regardless of whether it's happening in a conductor, semiconductor, plasma, or insulator. It's not like electrons are marbles flowing through a pipe. The process is described by the laws of quantum mechanics, and the modeling of conduction works equally well for holes or electrons. The curious thing is that you need to assign an "effective mass" to either charge carrier, and the fact that it's not the same as the "real" mass of the electron only points to how little we really understand what's going on at the quantum level. These are the dreams that stuff is made of...
  11. There is an easier way: it's called the Quotient and Remainder function on the Numeric palette. This is a combination floor and modulo function. I've been using LabVIEW since 5.0, and it's been there at least that long. http://forums.lavag.org/index.php?act=attach&type=post&id=6250
  12. There are some great examples that ship with LabVIEW of how to program a data client/server architecture. Look in the Example Finder under Networking >> TCP & UDP; open up and play with the Multiple Connections VI's. While shared variables and DataSocket both perform this functionality without programming, doing this through your own programming is dramatically more efficient and higher performance.
  13. Although the factorial function is the classic example used to illustrate recursion, it does not have to be written that way. In fact, it is probably easier to understand (and far easier for a neophyte to write) a direct iterative routine to calculate factorial using LabVIEW. The value for which factorial is to be calculated is the input value. The For Loop executes this many times, multiplying (loop index +1) by the results of the previous loop's iteration, which is stored on a shift register. The initial value of the shift register is one, to seed the calculation. We need to add one to the loop index because For Loops start at zero, not one. The code illustrated below took less than one minute to write; it took longer to write this description. http://forums.lavag.org/index.php?act=attach&type=post&id=6070 For you experienced programmers out there: I know that it calculates one extra multiplication (1 x 1) during the first iteration of the loop. Mea culpa.
  14. According to NI, RTX is not compatible with WinXP SP2: The LabVIEW Real-Time Module for RTX Targets is Incompatible with the Windows XP Service Pack 2—National Instruments does not recommend installing the Windows XP Service Pack 2 with the LabVIEW Real-Time Module for RTX Targets. The LabVIEW Real-Time Module for RTX Targets may not be fully compatible with the Windows XP Service Pack 2. Refer to the National Instruments Web site at ni.com/info and enter the info code winxpsp2 for information about NI products and Windows XP Service Pack 2 compatibility. Read more on troubleshooting RTX here. From what I understand, RTX is no longer actively supported by NI and it was never a smashing success for them. We tried to use it on only one project, and had a host of difficulties getting it to work consistently.
  15. Ideally, for closed-loop control, you want a real-time platform that gives you consistent, deterministic performance, like cRIO or cFP. Having said that, "real-time" is a relative term; 5 Hz is within Window's ability to stay fairly consistent in timing, so pretty much any DAQ product should work OK. Not sure why you haven't had good results with PCMCIA in the past -- there's nothing intrinsically limiting in that platform for a relatively slow application like this.
  16. Writing a book about LabVIEW is about as enjoyable a process as having oral surgery. Ask my boss, Peter Blume, about the experience -- he just finished "The LabVIEW Style Book".
  17. QUOTE(Karissap @ Jun 4 2007, 02:42 AM) This one did the trick. Although I had run the IMAQ USB Enumerate Cameras.vi in order to get the name, I blithely just looked at the indicator and typed the name into a string constant on my diagram rather than wiring it in... thus missing the 0x00 at the end of the name (either a terminator or device 0, I'm not sure). Either way, the name was indeed wrong. I think that this little piece of code should be posted to the Code Repository; if it can prevent heartburn in one other situation it's worth it. Everybody, thanks for the input and insight..
  18. QUOTE(crelf @ Jun 4 2007, 12:52 AM) Yeah, but what I really liked about this potential approach was that it doesn't require NI IMAQ, with its incumbent licensing issues...
  19. I just purchased a Logitech Quickcam for Notebooks Deluxe. The drivers from Logitech install smoothly and the camera works great. However, I cannot make this work through LabVIEW. I've tried four approaches that seem equally frustrating: 1. Downloaded NI's IMAQ for USB API. Nice, familiar VI's, but I can't get past the IMAQ USB Init.vi -- it kicks out one of those "An exception occurred within the external code..." error messages. http://forums.lavag.org/index.php?act=attach&type=post&id=6006 2. I tried using Peter Parente's Webcam 1.4 utilities. These run, but neither produce any image nor return any errors! http://forums.lavag.org/index.php?act=attach&type=post&id=6007 3. Tried downloading Chris Relf's Quickcam drivers, but the version that I found (on info-labview) seems too old to work. Broken arrows everywhere, and all of the ActiveX methods seem to be invalid. 4. I searched the forums here using the terms IMAQ and USB. I found lots and lots of postings, but I can't seem to read any of the thread replies! I can get to the original postings, with a tree of replies underneath. Clicking on any of the links to replies goes nowhere. http://forums.lavag.org/index.php?act=attach&type=post&id=6008 Right now I feel like an idiot, and I don't like feeling like an idiot.
  20. QUOTE(crelf @ May 25 2007, 06:51 PM) You know, Chris, you Aussies are a strange lot... it's OK for one guy to call another one "mate," but you bristle at being called "dear." How do you fellows deal with the conjugal implications of "mate"?
  21. The biggest problem that I have with the NI certification process is that a good fraction of the exam questions cover either (a) obscure nonsense that has almost nothing at all to do with the kinds of practical knowledge that makes a good developer, or (b) trivial BS that any yahoo can figure out. The last time I took the CLD recert exam, almost a third of the questions were stupid hand-calculations to figure out what a for- or while loop was doing. It appears that the exams are written by the educational folks at NI, who have little or no real-world development experience. I'm also involved in recruiting engineers and programmers to be professional developers for a Select Integration Partner. From out experience, the best qualifications to work in our business are a solid EE background, coupled with a good grounding in the fundamentals of structured programming. Anybody who has taken more than 3-4 undergraduate computer science courses usually does very well with us.
  22. QUOTE(bjarket @ May 12 2007, 03:05 PM) This answer won't make me very popular here, but there are actually a bunch of very easy solutions. They're called HMI/SCADA packages, and the kind of on-the-fly reconfiguration you need is pretty much standard for this class of software. You know, there's an old saying that I'm fond of that applies perfectly here: When your only tool is a hammer, every problem looks like a nail. Sometimes, even though there may be a solution possible, LabVIEW just isn't well suited to a given problem.
  23. QUOTE(crelf @ Apr 22 2007, 01:00 PM) My mind is a raging torrent, flooded with rivulets of thought cascading into a waterfall of creative alternatives. And it's a twenty dollar whore, Chris... But back on topic. I participate in a few different boards, and whether you're talking about LV or performance cars, there will always be the null's of the world adding to the clutter. Most of the time they eventually go away on their own. They're annoying but generally not too persistent after an initial blast of activity. Ignoring them seems to work the best.
  24. Your contemplated approach -- using a DAQ server to continuously buffer data and make it available to clients as needed -- is fairly conventional and reasonably straightforward to implement. There are two approaches that I have used successfully in this situation: 1. Use a functional global to implement a circular buffer. This is efficient and will limit the amount of memory that you're using. You might also need to maintain an array of read pointers so that you can keep straight which client has read what channels. 2. Use queues to transfer all of the data all of the time to the client VIs. The clients can just throw away the data when they don't need it, and process it as required when they need to. This can sometimes be a little bit simpler to implement, but it can also be slower and use more memory. I've put together a few applications in the past with similar requirements, and it's mostly just common sense how you choose to architect the operational details.
×
×
  • Create New...

Important Information

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