Jump to content

Neil Pate

Members
  • Posts

    1,156
  • Joined

  • Last visited

  • Days Won

    102

Posts posted by Neil Pate

  1. Hello all,

     

    My company pays for annual dues for a Professional Organisation (IEEE, etc).

     

    I am an Electrical Engineer by degree, but I have worked most of my career as a Test Engineer/Software developer working mostly in LabVIEW.  As such, I work heavily in the Manufacturing world, both in electronics manufacturing as well as non-electronics manufacturing (mostly with water related products).

     

    IEEE is obviously the biggest organisation for EE's and the most recognized.  But it seems to be focused on new product development and not much on manufacturing.

     

    SME seems to be focused on machining and more mechanical aspects.

     

    There is the American Test Engineer Society, but that does not seem to be very active. (http://www.astetest.org/)

     

    There is also the International Test and Evaluation Association, which seems to be more active. (http://www.itea.org/)

     

    Has anyone had any involvement with any of the groups?  Are you part of any professional organisation?

     

    I am a member of the IEEE, and have been since I was a student (so about 18 years in total). But honestly I do not really get much from it, other than a magazine each month which occasionally have some interesting articles.

  2. I think it can be done, but rather than doing a Reg Event, just replace the actual cluster element.

     

    Note: this is quite old code I wrote some time ago when I was just learning about User Events (LV 8.5), I am not sure I would do things like this now if I had to!

    post-7375-0-71074000-1413748711_thumb.pn

  3. I have this type of setup too; my C drive is a 160GB SSD, and my D drive is a 2TB HDD. Understandably, I store the vast majority of my files on drive D. And for me, the NIFPGA folder appeared on drive D without me having to do anything. I did install LabVIEW on that drive; did anyone here install it on their SSD?

     

    I install everything on my SSD (240 GB). Especially LabVIEW; I switch between quite a few different projects in many different versions of LV, so I really like it to load nice and snappily. I would definitely prefer to offload the NIFPGA directory somewhere else though, as the SSD is not helping at all for that stuff.

  4.  

    The remark about supported OSes for a certain functionality is anyhow often misleading in MSDN. For one the documents tend to get outdated (notice the absence of Windows 7 which is more or less simply Vista but in a usable form) while on the other hand Microsoft tends to also update the documentation regularly changing support information to only mention the latest versions, even though that API or functionality really existed already much earlier. Most Windows APIs on MSDN claim to be supported since Windows 7 by now even if they already existed in Windows 95.

     

    The strange thing about the mklink document is that it mentions Vista, and 8, but not 7 which clearly sits in between the two. Surely just a documentation error I think?

  5. I have the same situation. I moved the MDF and Update folder to a secondary drive and have not noticed any problems so far. That was about 2 months ago. I left the NIFPGA, since in place since I figured it was used for compiling.

     

    I just looked at the ProgramData\National Instruments\MDF\ProductCache and it's sitting at 800MB, as opposed to the 15GB it was before, so it seems to be repopulating.

     

    Anyone know what the MDF folder is for?

     

    I think the MDF directory is used when you build an installer which needs additional components. LabVIEW first looks in the MDF directory to see if a copy of the other component installer is there.

    • Like 1
  6. So the ProgramData\National Instruments directory is getting very big on my disk, approaching 80 GB with the Update Service and installers (MDF). This along with with 40 GB in the NIFPGA directory is getting a bit silly.

     

    My primary disk is a nice fast SSD, but it is not huge. As such I want to move as much of this stuff off the c:\ as possible.

     

    I have moved the Update Service stuff onto bigger (mechanical) HDD, this is possible by changing the preferences of the NI Update Service. I don't yet know if this has actually worked, as I manually moved all the files after changing the preferences.

     

    Does anybody know if it is possible to move the NIFPGA and ProgramData\National Instruments\MDF somewhere else?

  7. Not so trivial in native labview since to read contiguous bytes using the array subset, you need to split and wrap the array by making copies and sewing them together again. You'll be lucky of it doesn't get a lot slower than a rotate.

     

    There is one that uses direct calls to the LV memory manager though, but a rotate is much easier.

     

    Yes, that's what I normally do (keeping track of whether we have wrapped around or not etc). I have never done any benchmarks, always just done it that way.

     

    Quite often my circular buffers have a method to read n samples rather than the whole buffer, so I find I need to keep track of a separate read pointer.

  8. There are people who may claim that agreeing with me on a LVOOP architecture issue may be a clear indication that you have not fully understood the problem at hand.  :lol:

     

    You have a Starcraft II avatar, already that gets you points in my book :-)

     

    I have actually approached the problem slightly different, as I did not like the Strategy object needing to do the VISA read, and due due to the asynchronous nature my device sends data (all on its own it periodically sends data). I have implemented the Received data (and the parsing thereof) as a type of Strategy pattern, but the actual reading of the characters on the serial port is done somewhere else.

  9. I'm sure regular expression could do it too.  

     

    As someone wiser (and more sarcastic) than myself has already pointed out...

     

    Some people, when confronted with a problem, think 

    “I know, I'll use regular expressions.†  Now they have two problems.

     

    :lol:

    • Like 1
  10. If it 'aint broke, don't fix it. (Not kool-aid, more like resisting the Tribbles. ;) )

     

    I like to try and extend my understanding of things wherever possible, so I can make informed decisions later. This often means trying out features or design techniques I have not used in the past to see if there are better ways of accomplishing things. This is how I have evolved my style over the years. Sometimes the experiment works, sometimes it does not, but I always get to keep some knowledge from the exeperience.

     

    One thing I am trying to get my head around is proper OO design (forget LabVIEW for now). This is something I have some understanding of, but could certainly do with more practice; hence the original question.

     

    I agree now with Shane that this looks a lot like the Strategy Pattern.

  11. Hi All,

     

    I have a set of classes representing an instrument driver which allows for different firmware versions. The instrument can operate in certain modes, and depending on the mode it periodically returns a different number of characters. What I would have done up till now is have a "mode" enum in the parent, and have a single Read method and inside that using a simple case structures read a different number of bytes depending on the mode, and then parse the string accordingly. No problem here, very simple to implement.

     

    What I want to do now is remove the enum, and make it a class. (it is my understanding that have type-defined controls inside a class can lead to some weirdness).

     

    So I figure I create a mode class (and child classes corresponding to the different modes my instrument can be in), and then at run-time change this object. Each of these mode child classes would implement a Read function, and they would know exactly how many bytes to read for their specific mode. This seems a bit weird as I would be implementing the Read function in the Mode class which does not feel like the right place to put it. Alternatively I can implement a BytesToRead function in each of the Mode classes and then also a Parse method. 

     

    Does this sound sensible?

     

    Is this going to be complicated by the fact that my actual class holding the mode object is an abstract class?  

  12. If you truly want to do this from LabVIEW do yourself a favour and get a serial sniffer and capture a download that has been successfully done via the AVR tools.

     

    Doing this kind of thing from first principles is, in my experience, quite a bit of frustration finally followed by extreme satisfaction when it all works nicely.

     

    Good luck if you are trying to write the bootloader, expect much suffering!

  13. Another neat trick is you can open an explorer window, and have a specific file in that folder selected using the /select switch when calling explorer from a command line.  I tried this, this morning and it worked but for some reason the new windows were minimized.  Probably another switch I'm missing.

     

    That should work, it certainly works fine on my PC. It is the technique used by the nifty Show VI In Folder quick-drop plugin http://decibel.ni.com/content/docs/DOC-22461

  14. I am getting there... slowly... sometimes I think my understanding of something is like a really strong permanent magnet that resists all attempts to change it, but once it is finally done it is done for good  :P . At the moment my understanding is resisting change!

     

    Can anybody furnish me with a simple example of when Preserve Run-Time Class is recommended/necessary?

×
×
  • Create New...

Important Information

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