Jump to content

Mike Ashe

Members
  • Posts

    1,626
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by Mike Ashe

  1. QUOTE(BrokenArrow @ Mar 24 2007, 08:36 AM)

    This bug has cost me HOURS of re-doing some panels and diagrams for our main system -- then I'll have to Re-Do them when NI fixes it. Hundreds of property nodes. (yes hundreds -- it's not my code)

    At this point I'd start looking into whether you could use scripting to make the modifications. Perhaps figuring it out in LV 7.1.x, then, assuming you can get it to script, trying to port up to LV 8.x. As you say, hundreds of nodes, lots of hours.

    post-932-1159825841.gif

  2. I agree totally with JFM, show first that you have made an effort. Second, if you work through the introductory tutorial that comes with LabVIEW, and study through some of the examples you will find code that does what you are asking for. You can then make a copy of that code and modify for your uses.

    You're lucky I've had another 1/4 post-932-1159825841.gif

  3. QUOTE(JFM @ Mar 24 2007, 10:35 AM)

    This is an extremely dangerous trend, as described by the following formula:

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

    As you can see, this has the potential to really get out of control. Fortyunately such things start small before they explode exponentially. I would take care of the matter myself, but am only on my first half of a post-932-1159825841.gif and have a cold + sinus infection with the resulting splitting headache, so I don't trust myself to maintain professional decorum at the moment, so I will have to leave what must be done to my fellow HH hunters...

  4. QUOTE(crelf @ Mar 8 2007, 12:23 PM)

    The term you need to research is "determinsim" - Windows is not determisitic at the microsecond level.
    Not in the normal "User Mode", also known as Ring 3 priority. Spacetoon, your best bet is ti use a hardware card with a counter and then trigger off the HW clock, perhaps using [wiki]DAQ[/wiki] Occurences. What you ask for, a software accessable submillisecond timer, is possible under Windows, and you can even make it deterministic, but to do so you have to write a Kernel Mode (Ring 0) device driver, (these used to be called Virtual Device Drivers, or VxDs) then access that driver through another Windoes DLL, then access the DLL through either a Call Library Node or an Occurence hooked to the DLL.

    None of this is for the timid. It is a black magic, alchemy type of programming that is guaranteed to introduce you to the BSOD. Take the easy way and use a cheap timer card & HW timer.

  5. QUOTE(crelf @ Mar 18 2007, 05:38 PM)
    Check out [wiki]LabVIEW[/wiki] - it rocks!
    While I agree that [wiki]LabVIEW[/wiki] rocks, the [wiki]LabVIEW[/wiki] Wiki page content is a tad out of date, like stating that 7.0 is the latest version. Oh wait, thats what edits are for. :)
  6. QUOTE(Ben @ Mar 16 2007, 07:28 AM)

    Added note: Avoid strings whenever possible on RT app that have to run forever. The can do very nasty things to your memory requirements.

    Ben, could you elaborate on "very nasty". I am using strings here and there in a new RT app and so far things are going okay, but it hasn't exactly been running "forever". What if you preallocate your strings and then copy in and out of those? Won't that prevent the memory manager from having to reallocate?

  7. You might want to use a SubPanel (in the Containers palette). If you have not used them before, drop one on a new VI, then go to the diagram. You will find an invoke node there (don't bother looking for the SubPanel Terminal itself, you won't find it and you don't need to go looking yet.**

    Pop up on the Invoke node and select "Help for Insert VI" which will get you to the help page. Study that a bit then go to the bottom of the help page and open the second example: "Simple Subpanel.vi" and run. You might be able to modify this just fine for your application. Or proceed to the other examples there or go the the Help>>FindExamples menu in LabVIEW and search for subpanel.

    Good luck!

  8. QUOTE(crelf @ Mar 14 2007, 06:56 AM)

    I wonder how sanitary that red button is...
    The NXT sound sensor and a hand clap will take care of that.

    Predictably, my wife was not impressed, but my 9 year old son thought this was great.

  9. QUOTE(Michael_Aivaliotis @ Mar 14 2007, 12:10 AM)

    Speaking of Beer Robots. Needs to work on the foam reduction...
    The Asahi is not my idea of work reduction.

    QUOTE

    Of course, why settle for less when you can go all the way. How much beer is this bot worth? Sheesh...

    Awesome control, but still no delivery, and outside the normal budget

    QUOTE

    It seems like it's already been done but it's not LEGO. Damn, I think we've just come up with the Ultimate LAVA Mindstorms Challenge.

    Now we're getting somewhere!

  10. QUOTE(Jeff Plotzke @ Mar 14 2007, 07:23 PM)

    You may want to look into using MSXML -- It's an ActiveX object that you can use in LabVIEW. I've built a set of VIs that use this object to read/write XML files. It takes a while to get up to speed on all the methods/properties of MSXML, but after that, it's super easy to use!

    I'll second that. I recently used a colleague's MSXML implementation on some RF testing. The XML defined "objects" of one or more test instruments, and then setup parameters for those instrument/objects on some in-house legacy test executives. The implementation was written with a high degree of abstraction and inheritance and was very poorly documented, (I mean NO documentation, actually) so it was hard to figure out how it worked. However, once you did figure it out, and study up on the MSXML objects and methods, it became very easy to setup very powerful hierarchy trees of data, objects and actions (methods). The XML schema he defined used a lot of attributes, so it was much more compact and readable than the native NI implementation. The only downside was that it was custom and limited to a subset of datatypes. The NI XML is not (yet) very nice to read, but it has the advantage of easy read/write for any complex data type you throw at it.

    I'll also second the plug for the LabXML toolkit above. Sorry I cannot post a copy of my colleague's tools, but they are proprietary and they'd take away my birthday if I broke the NDA.

  11. The easiest way to find this type of stuff now is just to Google search it. That said, there isn't much in the way of dedicated journals for such things, yet. There are some other graphical environments, including some that are very high end P-GRADE but not much for LabVIEW now that LTR is gone. I think that a lot of the same function as journals is handled now by LAVA and blogs like the one's Chris Relf and Jim Kring have and the NI developers blogs. The Repositories here on LAVA are beginning to have peer review. What we don't have is some stuffy Ivy league editor doleing out who gets to publish what. So far LAVA has been very high on merit based acceptance.

  12. QUOTE(LV Punk @ Mar 12 2007, 10:21 AM)

    I'm working with the http://grouper.ieee.org/groups/scc20/tii/' target="_blank">ATML specification XML schema for Test Results. There is a simpleType definition called StandardUnits that includes a regexp for qualifying a string.

    I cut and paste the regexp string into a LabVIEW VI and tried to use it, but got an error: There is an unmatched parenthesis in a regular expression.

    Can you help me find it, PLEASE?!!!

    But SERIOUSLY, has anyone ever seen a regexp string like this?!!

    Yeah, I've seen it before, at the same place you did. I started looking at ATML for test exec purposes a little over a year ago and decided that it wasn't ready for prime time, at least not my prime time as it was not a paying project. A lot of ATML is DoD driven, hence ....

    As for finding the problem:

    1. Run the string through a shift register in a loop indexing each successive character, looking for ( and ).

    2. Start a counter at 0 and for each ( do a +1 and for each ) do a -1 and add the index location to an array for each. If your counter goes negative, then you just had an unmatched ) and you can look in your indexes for pairs of () to try to locate the mismatch.

    3. Reverse the string and then repeat the above, now if you go negative you'll have an unmatched ( and again you can check the pairs to try to locate.

    Good luck

    PS: wouldn't it be great if the error message had the index of the unmatched parentheses? Too much to ask? Or at least whether it was an open or close parentheses to look for?

×
×
  • Create New...

Important Information

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