Jump to content

Yair

Members
  • Posts

    2,869
  • Joined

  • Last visited

  • Days Won

    44

Everything posted by Yair

  1. Why you should watch this: It's a fun song (80's rule, yeah!). The opening is impressive (especially if you close your eyes). Norm doing beatboxing. While you're at it, you might wish to check out these guys, who have more impressive harmonies (and who are from Israel, so woo hoo):
  2. Actually, centipedes and millipedes do not have those number of legs, but the metric system is still better. That just gave me an idea - someone really needs to make an action version of The Wizard of Oz.
  3. I don't know what caused this, but I see at least two threads which had new posts and didn't appear in the unread content list: this and this. Looking at today's active content list, it looks like these were the only two even though other threads also had posts from the same timeframe. Some details: I logged into LAVA earlier today (via a favorites entry which brings me to the unread content list without requiring me to log in). I read everything, posted stuff, then marked all as read (for convenience let's say it was at 1:00). I closed the tab, left the browser window open on some other sites and left the PC for a few hours. I came back (let's say this was 4:00), opened the unread content page (again through the same link) but these two threads didn't appear in it. The reason I noticed this was that one of the threads had my replies, so I got emails telling me it should have been in the list. The second one didn't appear in the list, but after I finished reading the other threads and went back to the list (let's say this is 5:00), it did appear, because it had posts which were posted after 5:00, but it should have appeared earlier, because it had a couple of posts posted between 1:00 and 4:00. I don't know if there's anything you can do with this, but I'm reporting it. It's possible that all this has happened before and will happen again.
  4. But what do they do about closing them? Do they just rely on the automatic cleanup? One method I've used once (although I'm fairly sure I only used it in this example*) is to run my actual code in an asynchronous process (e.g. it would open the resource the first time and return it on request on subsequent runs) and monitor the execution state of the owning VI and clean up when the VI stopped. This worked for my example because it was working on a specific control, which was owned by a VI. It might work for an express VI, but it would require something like reference counting and garbage collection and probably wouldn't be worth it. For code which needs it, it's easier to just write the actual code with open and close outside the loop. * It's actually a cute example - it allows setting a custom blink color and speed for each control. I thought of augmenting it by adding the ability to smoothly pulse the control's color, since I have the code for that as well, but since I never used either of them in any actual code, I didn't bother. Today that might be better implemented in an XControl.
  5. Correct, but I was replying to Ryan's post, and presumably he wasn't refering to using your newly presented paradigm (or even something like Stephen's example from way back) in his past applications. I'm not actually sure that the SEH library would work as is for something like this. I haven't looked at it yet, but a quick glance at the article seems to indicate that it only supports specific actions, whereas I'm thinking of more complex code in addition to the standard error handling code. An OO local (or maybe even central) handler would work for that.
  6. Because Express VIs are a one-VI-operation, that VI needs to do everything related to its task. If that task involves writing and reading to a serial port, for instance, the VI would need to open the port and close it every single time it runs. Call it in a loop many times and this can become a performance issue. As Ryan said, this isn't something inherent to the technology, but it's what usually happens, and for good reasons. Like Gary, at times I've simply converted the VIs after their creation and removed the parts I didn't want. This is done by right clicking and selecting Open Front Panel. Also, I feel that part of the issue that people have with them is that many of the ones NI ships are geared towards mewbies and not towards experienced users. This results in you using an express VI and feeling your code to be "not code", since it looks too much like the NI demos where you string two blocks together and that's the end of the demo. By the way, NI used to have an express VI development toolkit, but it seems that this now ships as standard (at least with the Dev Suite I have). It's found somewhere in the Tools menu. It's something which could be useful if you want to script (or even just configure) some code using a wizard.
  7. The main problem I find with this approach is that sometimes you need to do something when handling the error (e.g. ask the user) in order to proceed with the process where the error occured. If the error handler is generic, this can become a problem, because the code for each process would be different (e.g. one might need to ask the user on a specific error, another might need to check an analog input and another might not need to do anything).
  8. I don't know if such a list exists (it certainly doesn't exist for members with more than a 1000 posts, where you can customize the text), but you can look at one member from each of the groups I mentioned to see their text. As for the group you see, that doesn't have to do with number of posts - you can pay to become a premium member or member of other groups (so far by the company you're employed at: NI, JKI, VIE). A search for "premium member" should show you how and why you would pay for something like this.
  9. Here's the member list, sorted by number of posts. Now you can have a look: http://lavag.org/ind...sort_order=desc I think there are levels at every number under 10, 10, 50, 100, 250, 500, 1000, but my numbers might be off. P.S. Congratulations, Jim.
  10. That's because the function returns the machine alias in the network, not the adapter name. The adapter name itself has no real meaning. I'm not sure what you're actually trying to do, but I am fairly sure that LabVIEW doesn't open the VI server on any NIC. It just reserves the port you requested and the OS forms the connection based on the requests it gets. Let's say you have two addresses on your PC - 1.1.1.1 and 2.2.2.2 and your VI server port is 3363. I'm pretty sure that anyone can use either 1.1.1.1:3363 or 2.2.2.2:3363 and both will work, although not at the same time, because once a connection to the port has been opened, you can't connect to that port until it's been released (and possibly for a while after that too).
  11. I think that express VIs got a partly unjustified bad reputation. I find that they're actually quite an impressive technology which makes a lot of sense for many things (e.g. I'm sure most people here used the DAQ assistant to configure their DAQmx measurements, either in LabVIEW or in MAX). Of course, they do have their disadvantages, the chief IMO being that if you have something which needs to use an initializable resource they perform the init-destroy sequence each time. As an aside, I also think the reference libraries NI releases are a good thing and have a lot of potential in standardizing some things. This one specifically looks like one I might actually use.
  12. Did you try using String to IP followed by IP to String (be sure to set the Dot Notation input to T)? Also, I believe StIP has a right click option to return all the addresses the machine has.
  13. How do you have a VI with no FP? I thought you only get those after building an EXE. Do you build an EXE and then reuse the VI from that EXE?
  14. Yair

    Pun

    Maybe it's just me and my proper pronunciation, but even after I thought that this might somehow relate to this, it didn't dawn on me that this is actually the answer. I had to voice it and play with it before I realized that it is the answer.
  15. I'm pretty sure that one of the main design goals for DVRs was to eliminate data copies caused by the feature. Forcing the user to have a read-write pair guarantees that at least (although the user can still cause copies inside the IPE structure). If we had the ability to read the value, a copy would have to be made. It might also require some additional mutexes, because presumably you don't want to read the value in the middle of the IPE structure changing it, but you also don't want to wait until it releases the lock. P.S. That's not to say I object. At times I might accept read-only access (which would ideally not be affected by the lock) at the cost of an allocation. I don't know for sure that I would, though.
  16. Why? You just use the SEQ directly to store the data itself. DVRs don't offer anything you couldn't do with a SEQ. They do offer better guarantee of inplaceness and less chances of causing deadlocks, but the functionality is the same as you would get with a SEQ (except you can obtain a SEQ by name and preview its data, which you can't with a DVR). As for your other question, DVRs are also typed, just like queues and notifiers.
  17. I wouldn't count on it. NI already has enough named ref-based options to deduce that if they didn't add it to this feature, they did that (or should that be "they didn't do that"? ) deliberately. The most obvious reason for such a decision is that it would make creating deadlocks too easy. Today, to create a deadlock using a single DVR, you need to bring it over the boundary of a structure where you're using it or pass it inside using a non-dataflow means of communication (local, global, etc.). If you had named DVRs, you might be tempted to encapsulate the Obtain DVR code in specific VIs and then call them one inside another, ultimately leading to deadlocks without the ability to see where they came from.
  18. Yair

    Creepy

    DON'T DO THAT!!! Now I can't listen to the original version of "hooked on a feeling" for another 5 years! AAAAAAAAAAAAAAAH!
  19. Yair

    Creepy

    I was at work today, listening to random music. Mr. Roboto came on. Excellent. I like Styx. I go into LAVA looking for something. In the main page something catches my eye. It's a small animation. ShaunR's avatar. So far so good. But then, the animation merges with the music. The baby starts dancing to the song and that's just creepy. You can try it yourself. It will probably work with any song. Ever since I first saw the dancing baby somewhere back in the 90's I couldn't stand it. Now I finally know why. AAAAAAAAAAAAH!
  20. vugie, you're right. I was thinking of the same thing you posted in your original reply. I even saw the text you quoted, but for some reason it didn't register as being the same thing.
  21. Also, the wire segments (I think) have a flags property where bit 4 says whether it's selected or not. It might also help.
  22. You might wish to check out their other stuff as well. I noticed them a few weeks back and definitely think they have potential.
  23. I think what you meant to say was especially mine.
  24. I wasn't illustrating an issue with graphical programming. I was illustrating deadlock, which can be found anywhere in life (the plumber won't come to fix the leak until the builder comes to tear the wall down, and the builder won't come until the plumber comes and turns off the water. Deadlock). I wanted a simple example which involved a function call and I wanted to clearly show the lock-unlock part AND I didn't have LV open. All those combined led to that.
×
×
  • Create New...

Important Information

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