Jump to content

crossrulz

Members
  • Posts

    533
  • Joined

  • Last visited

  • Days Won

    21

Everything posted by crossrulz

  1. Who is to say that one way is the best. It really depends on the developers and the requirements. There are plenty of debates out there between using an enum versus a string. But for a framework that is generic, you really have to use a string.
  2. TestStand can handle clusters just fine. But only make things clusters for those that are actually logically grouped. You can pick up a lot of things from this article from NI: NI TestStand Advanced Architecture Series
  3. Read Spreadsheet File and Write Spreadsheet File will get you half way there. Hooovahh told you what to do in the middle. Post back with some of your code if you run into issues.
  4. FOR loop with a shift register and ADD inside.
  5. Will it create a copy? It completely depends on the situation. And unless you know every little nitnoid of the LabVIEW compiler, you can't really say for certain if a data copy will happen. But as a general rule of thumb, a wire branch is a copy of the data. With your little example, I would not expect a copy in the wire. But each terminal is a data copy. Now what if you apply different gains and offsets to that input data before going to each output terminal? That would likely have a data copy so that the operations can happen in parallel.
  6. Nothing quite like starting the day off answering people's problems. And nothing sets that mood back like your boss yelling at you for not doing something even though you actually did it a week or two ago.
  7. This looks like a localization issue. Yes, please attach a sample file so we can get this figured out for you. Only a couple of lines will be needed.
  8. Isn't it the Release Manager's job to worry about changes at all times? Why should the lateness mean anything? As long as your process handles the regression testing and proves it didn't break other things, I say you have done your due diligence and throw it in. I agree the Release Manager's feelings should not matter.
  9. Personally, I keep an Action Engine for each communications queue I need. The AE is used to initialize the queue, close the queue, and send the messages. Besides, only one place should be doing the dequeue. Plus then nobody else cares how the message is sent; they just call that AE. You can look here to see how mine are typically set up.
  10. Pay does mean a little bit. The annual raise time is a good place to show how you appreciate your employees (a lack of raise will make people mad). The major things that I have at my current job that I didn't have in my previous job is a manager who actually stands up for me (ie doesn't arbitrarily yell at me because another manager/customer didn't like how I did something, even if it was exactly what was agreed upon) and flexibility (very similar to what Becky was saying). I can point to all kinds of things done wrong at my previous employer. Giving Engineering Excellence Awards to those do you did 90% of the job for and you get nothing; not giving promotions or even a decent raise after a laundry list of reasons why you should; writing up an employee for doing their actual job instead what another manager wanted them to do (which didn't follow procedures at all); changing design architectures in the middle of a project just because a higher up manager said to do it another way; giving all the credit to the person who refused to do anything the way they were told and then blamed you for their code not working; making rediculous schedules that everybody knows will never work but make you do it anyways, and then yell at you for not getting a 1 year project done in 1 month; asking you to do a job but not give you the tools/resources needed to accomplish that job...ok, I have said way too much. Good thing I'm not bitter at them.
  11. Well, I am noticing you are not passing your TDMS File reference from the Open TDMS to the TDMS Write. The other thing to be aware of is where you put the file. I recommend giving this article a good read: http://www.ni.com/tutorial/14669/en/
  12. Use VISA. DONE! Seriously! I took a project I did a couple of years ago that used GPIB for all instrument communications. Luckily I used the VISA drivers. Most of the instruments were changed to use Ethernet. The only part of my code that changed was the initialization.
  13. Make an wire up the i to the right border of your FOR loop. It should default to an indexing tunnel. You can right click on that tunnel and select "conditional". I think it came out in LabVIEW 2012. Very useful tool.
  14. That is different requirements from the Search 1D Array. If you want the all of the indecies that match, then still use the FOR loop, but use a conditional indexing output tunnel that is wired to the i terminal. Your condition should be if the current item matches the lookup item.
  15. Use a FOR loop with a coniditional terminal. Autoindex in the search array. If the current item matches the search parameter, you stop your loop and pass out the data.
  16. I've been told that NI is using the Separate From Compiled for any VI they develop. For Windows only projects, I have never had an issue (working in 2013 and 2014). We had a small hiccup when trying to use the same VI in a project on Windows and cRIO RT. Cleared the object cache once and it was fine again for the rest of the project.
  17. I would also go the CVT route here. The API is really good and quite simple to use once it is set up. It allows for the application growth a lot more than using globals for a very small performance hit.
  18. If computer A is hosting the NSV and it is not running, then B should get an error when it tries to read the variable. With an error, I would expect the default values. But it may be the last read value. But you should be able to look for the error.
  19. cross post on the dark side: http://forums.ni.com/t5/LabVIEW/Matrix-Multiply-slower-on-RT-than-PC/m-p/3053426#U3053426
  20. I do that all the time. Simple queue to send commands to the parallel process. Have some reasonable timeout, do whatever is needed in the timeout case. If a command comes in, do what is needed with that command. But there is usally some need for state. So sometimes a state machine works better. Based on your reading from the FPGA, the simple timeout for read will probably work just fine. And with your FPGA, play around with Dynamic FPGA References. You can take you main FPGA reference and cast it into a more specific reference. This way, you can pass into your subVI a very specific interface, making the code possibly reusable. It at least performs some decoupling.
  21. cross post on the dark side: http://forums.ni.com/t5/LabVIEW/How-do-I-install-instrument-drivers-in-folders-other-than-inst/m-p/3036667#U3036667
  22. The better solution would be to handle the value changes of those controls in the event structure.
  23. The problem with locals is that they are only for inside of a single VI. If we are truely going wireless, the Global Variables are the way to go.
×
×
  • Create New...

Important Information

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