Jump to content

hooovahh

Moderators
  • Posts

    3,433
  • Joined

  • Last visited

  • Days Won

    289

Posts posted by hooovahh

  1. I think what you are looking for is a running average. I think I found this piece of code on NIs website some time ago and I have found it handy when needing to do a simple quick filter. In the zip is the running average VI, and an example which just shows how to use it. Run the example then move the slider up and down and you'll see the running average on the slider next to it, and in a graph. By default is does a running average of the last 10 values but this can be changed.

    BTW it is saved in 8.0

  2. ...I'm not sure if adding Anna Kournikova to my drink is a good idea but I'm not against trying new things.

    When it comes to LabVIEW marketing, I really don't care too much about the latest slogan. I've also become kinda jaded whenever NI comes out with some cool new toolkit or addon. It seems that alot of the things they make are aimed at beginners and usually aren't the kinds of tools I would use. That's not saying I don't use NI toolkits, I'm just saying that I realize NI would probably rather make things that bring in new customers rather than making tools to help their existing customers.

  3. I sometimes wonder how larger software companies accomplish this. If a piece of software has a 30 day trial and you turn back the clock, some times it will work, but most of the time (not that I've done this alot) it will know you changed the clock.

    Does it check the Windows time against the time that the bios says it is? How does it know you changed the time?

    If you are concerned that users are going to change the system time, you could just make it more complicated. Like every time the program runs write the current time to the registry (but not in an obvious format you could encrypt it with a system string) and if the new time is before the time in the registry then someone changed the system clock, and the software should exit.

  4. On the unbundle of the error cluster check to see what the error code number is. If the error code is equal to the known error code for having no registry key to read, then clear the error and write to the registry the date plus 15 days.

    As for how to calculate what today's date plus 15 days is, take the time stamp and add 1,296,000 to that number (wire the primitive add to the time stamp and add a double with the value of 1,296,000 to it) if you were wondering there are 1,296,000 seconds in 15 days.

  5. QUOTE (jcarmody @ Apr 3 2009, 01:08 PM)

    The shirt from Happy Gilmore, I couldn't hurt a fly.

    guns-shirt.jpg

    I do not remember that shirt in that movie...it has been a while since I've watched it all the way through, I mean its on TBS about every other day.

    That did remind me of this one (the sticker on the right)

    fail-owned-cell-phone-fail.jpg

    As for sequence structures, I only use them for really quick and dirty prototyping and for timing situations. Like I want to know how long it takes for a set of steps to take place so I'll put a stacked structure on it, then take tick count at the beginning and end.

    I know there are better ways to do it (like with OpenG tick count if my code has an error in and out) (or using a functional global that runs at the beginning and end)

  6. QUOTE (alfa @ Mar 31 2009, 06:55 AM)

    I was thinking:

    What the capitalists and the communists do have in common?

    When I'm bored I think about things too, but I don't think I've ever wondered what capitalist and communists have in common.

    "Why is the sky blue?"

    "What are some good birthday gift ideas?"

    "If I had enough money to retire right now would I?"

    "Where in the world is Carmen Sandiego?"

    but not that.

  7. QUOTE (Yair @ Mar 23 2009, 03:09 PM)

    BTW, flarn, are you really 16 years old? What's your involvement with LabVIEW?

    Totally thinking the same thing but didn't want to reply to a legitimate question with just that.

    At work here we had a new hire who was born in 1990. Don't get me wrong I'm not much older than him but that still seemed weird to me.

  8. I haven't worked with FPGA much but the only way I've ever been able to accomplish what you want is using local variables. "In FPGA local variables are your friend" - My boss

    When you want one loop to send some data to another loop you can set a boolean which the second loop is watching. When that boolean is true you can have the second loop grab some data from a local variable. It's not as easy to follow as the state machines we're use to, but it works.

    Take a look at this example (a poorly thought out one, but one none the less)

    lvfpgaexample.jpg

    I realized after making this example it is a poor design of an alarm system. If an alarm happens when the system is handling alarms, it will be cleared. Also Arrays in FPGA are very costly in number of gates and they should be avoided when ever possible. But in any case I hope you get the idea on how I some times pass data from one loop to another.

  9. QUOTE (PaulG. @ Mar 19 2009, 01:37 PM)

    Thread hijack. :ninja: Why would you want to mess around with command lines and a 3rd-party, open source (be afraid be very afraid) program when you can use native LV zip functions?

    Why be afraid of open source? What's there to be afraid of? I don't like the built in LV zip functions, I haven't had much luck with them even on the simplest functions. Also for advanced features...there aren't any. If nothing else use the OpenG ones. But if you want high compression use 7-Zip.

  10. You won't be able to accurately recreate a crank (or cam) shaft signal in real time using a non-real time operating system. Basically if you're going to use the outputted signal on a analog out card I don't think you'll be able to get the data out fast enough. If you have an engine spinning at 7000 RPM and you have 40 teeth (if there were no gaps) that means you'd need to change the voltage over 4000 times a second, that's every 250 microseconds. (all of these numbers are just estimates)

    Also will the engine be changing speeds? If you just need to generate a signal that looks like an engine at one speed you could just multiply the two signals you've generated. The sine one goes on forever, and the signal with no teeth is just a zero or a 1. It should be a 1 when you want there to be teeth, and a 0 when there should be no teeth. When the two signals are multiplied it should be teeth...no teeth...teeth...no teeth.

  11. QUOTE (Justin Goeres @ Mar 19 2009, 09:38 AM)

    Unless you're storing more than that amount of data (or need to transport it on a thumb drive or something), just buy one of those. If your data is uncompressed it's also easier to work with. You don't have to go through the gymnastics of going through a zip layer every time you want to look at it.

    Agreed, I think the quick answer to the question would be save it as a binary file (assuming you don't need it to be human readable) and the file size will be pretty smal.

    If this was a compression thread (which it didn't start as) I am also on the 7-zip bandwagon. I even tried making a API for LabVIEW but realized with my limited knowledge of DLL calls my only solution would be to use the command prompt to run the 7-zip command line utility. It would be a decent solution but would be operating system specific.

  12. QUOTE (crossrulz @ Mar 19 2009, 09:56 AM)

    But are functional globals just a crutch or are they actually better to use? Hmm...

    I was told (and maybe misinformed) that the way Global Variables were first implemented were very bad on resources, on top of the usual problems associated with using Globals (hard to debug problems and such) But I heard that the way globals are made natively today is much better than before.

    As for functional global, I'd say it can be considered a crutch, but functional globals can do so much more than the built in global variables, that I think it's ok.

    BTW been global variable free for 4 years now...well I haven't created any in 4 years, some NI examples use them, and I would use the examples in a prototype situation. Does that count?

  13. Wow I thought I had it bad. I found that if you hold the down key (making the blocks drop faster) then click on a different window, it continues to think the down key it pressed even after you release it. So I only lasted an hour and 16 minutes.

    crazytetris.jpg

    But seriously who would ever play this for a long duration. It hurt my eyes just for the 2 minutes I tried playing seriously. Maybe that means I need a higher resolution monitor with a huge projector.

    One of the first things I did when I was learning how to use LabVIEW was I would open the tetris demo in the example finder (Building User Interfaces/Acquiring User Input/Keyboard and Mouse/Keyboard Puzzle Game.vi) and I would tweak the game, adding rows or columns. This essentially did what this HD tetris does and makes the game less fun.

  14. So what handles the error from the "General Error Handler CORE.vi"? Does it recursively handle errors generated by itself?

    We have odd situation where an engine performs a cleanup before exiting, but if an error is generated during the cleanup it will handle the error by prompting the user then exiting. Of course if it tries to exit it will perform the cleanup, but if an error is generated during the cleanup it will handle the error by prompting the user then exiting. This cycle could go on forever.

    We have to be mindful of what kind of errors we might see, and what ones we want to retry on, and what ones we want to just exit on, and disregard the cleanup.

  15. I didn't realize that it needed any programming. But I've always wanted to look for a reason to use one of those NI USB DIO devices for a personal project (since they are relatively cheap)

    I know I could fit a Pico-ITX PC in there, then have a USB wireless adapter connecting to my home network. Then have LabVIEW running on the beer keg PC, and have it control a USB DO clicking a relay and turning on and off the lamp. Kinda seems like alot for turning on and off a lamp, and convoluted.

    Now that I think about it I should try to fit a PC in a mini-keg. Have it be fully functional with all the IO ports of a normal PC.

×
×
  • Create New...

Important Information

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