Tomi Maila
Members-
Posts
849 -
Joined
-
Last visited
-
Days Won
9
Content Type
Profiles
Forums
Downloads
Gallery
Everything posted by Tomi Maila
-
QUOTE (Daklu @ May 20 2008, 04:35 AM) Without an example code I cannot say for sure what is wrong. However in addition to what Justin said, it may be that you are having some sort of type recursion that is not allowed. QUOTE (Daklu @ May 20 2008, 04:35 AM) NI examples always show classes and lvlibs contained within a lvproj. Is there any particular reason for this other than being able to set up build specifications? The dependencies item in your project explorer shows all items such as VIs and classes that your project depends on. It's a must have for a LVOOP developer as you need to call your parent class methods and you can find them in the dependencies unless you have added all the classes in your project. QUOTE (Daklu @ May 20 2008, 04:35 AM) Is it preferred/discouraged to put several classes within the same lvproj? i.e. I have a Battery class which will serve as a parent for several specific battery child classes. (i.e. Energizer, Duracell, etc.) Currently I am planning on putting them all in the same lvproj. Good? Bad? Project is a project. What ever you need in your project you put into your project. Don't put items you don't use in your project.
-
QUOTE (Val Brown @ May 19 2008, 06:50 AM) I guess the problem is that you have added folders to repository that already were part of other repository. A single file can only belong to one repository. What I sugges you do is 1) Go to your local folder where your files under souce code control reside 2) From TortoiseSVN right click menu select export to get a clean copy of your code 3) Create a new local repository (or remove all the files from the old repository) 4) Add your exported code to the new repository 5) Subscribe to this new repository
-
QUOTE (Jim Kring @ May 17 2008, 07:00 PM) The data corrouption of the backup can only occur if there are open connections to the repository at the moment of the backup. On a single user repository this can be easily avoided by not using the repository while backing it up. However, incremental backup is a nice feature if you don't want to keep many duplicates of your entire repository. p.s. Never rely solely on incremental backups only. I once was using incremental backup software provided with Maxtor external harddrive. It ended up a catasrophy as for some reason the whole incremental backup database was corrupted and I was unable to restore anything from the backup. Of course the backup software never provided any indication that there could be some problems with the incremental backup database. Maxtor customer service never bothered to respond to my support requests when I tried to restore my stuff. Luckily only the boot sector of my backed up hardrive was damaged and I was able to plug the hardrive into another computer as a secondary hardrive and restore everything.
-
Deterministic video output
Tomi Maila replied to Tomi Maila's topic in Application Design & Architecture
QUOTE (Neville D @ May 16 2008, 08:08 PM) Practically yes, though the images can be converted to some video format if needed. Do the image overlays also work on a PC based realtime system if it has a SVGA compatible graphics card? -
Deterministic video output
Tomi Maila replied to Tomi Maila's topic in Application Design & Architecture
QUOTE (crelf @ May 16 2008, 05:39 PM) Well, we have tried. Windows Media Player is everything else but deterministic, at least under XP. It may be that the playback is better under Vista, at least MS claims so. We need to synchronize the playback with measurement and that's how LabVIEW needs to be involved at somelevel. Our LabVIEW application needs to know which frame is being played... Maybe the few ms accurancy is actually not what we need but we need to get less than a frame duration accurancy, if only possible. We can use LV realtime, if it just supports deterministic video output. Expensive PXI system could be overkill though for the application we are thinking. It should be rather cheap to reach the audience. -
Hi, We've to write a medical application that needs to display video (a long sequence of pictures) on a LCD/CRT screen or a projector in deterministic manner. No frames may be skipped, the timing of the frames needs to be exact within about a few ms accurancy. I tried to google about determinism of video signal but couldn't find much anything. I tried to browse NI products but no-one talks about determinism of the video output. I tried to look for the specifications of PC graphics cards but also there is no information about the determinism of the graphics cards. We experimented a little with a Windows PC running LabVIEW and it seems that some frames of image sequence get skipped for still an unknown reason. Does anyone have experience on deterministic video displaying. Any suggestions to any direction?
-
QUOTE (neB @ May 15 2008, 03:39 PM) Just quickly now... The recursive case is a "must" when you don't know in advance the type of the nodes in your recursive data structure. In array case your nodes are always of the same type and the recursion from one node to next happens in the same way always. However there are cases when the recursion itself may depend on the node. Then it's easier to represent such a recursive data structure with some sort of tree or graph where each node of the tree or graph can be of different type. Only the nodes know how to recurse the tree or graph further so you cannot represent the data structure very well with any predefined format. Also recursion trought the data structure is easier with call recursion rather than any other method. As an example think of drawing of arbitrary shapes, where some but not all shapes can contain subshapes. For example to draw a house one needs to draw many windows and a door. To draw a window, one needs to draw some squares etc. However, to draw a square, one only needs to draw a square and nothing else. The simplest way to represent a shape house is as a collection of subshapes. To draw a house, one simply draws all subshapes. As subshapes can contain further subshapes, the drawing of the house ends up to be a task where the recursive data structure "house" is recursed with call recursion of method Draw. Ben, I'm sure you will learn LVOOP... after a year you'll be answering LVOOP questions here and on NI forums.
-
QUOTE (martin@aerodynamics @ May 15 2008, 02:21 PM) Sure it is, it just uses Jeff's wire...
-
Dynamic Dispatching VI's within a sub panel
Tomi Maila replied to Dan Bookwalter's topic in LabVIEW General
The only way to get the right clone instance of right dynamic dispatch VI to a subpanel is to ask the VI reference or the clone name from the dynamic dispatch VI itself. First assume you have a class hierarchy with multiple dynamic dispatch VIs of the same name in the hierarchy. Any one of those VIs can be called when the dynamic dispatch VI subVI node is executed so you cannot use static linking to some specific VI. Also, if the dynamic dispatch VI is reentrant, then also any clone instance of any of those dynamic dispatch VIs in the hierarchy can be called when the dynamic dispatch VI subVI node is executed. As a result, you cannot use open VI reference based linking to any specific VI unless you also know the VI clone name. The only way you can get either the VI reference or the clone name is to ask the dynamic dispatch VI being executed to return it to you somehow while it executes. You can for example use a single element queue to pass the VI reference asynchronously from the dynamic dispatch VI to the calling VI. At least that's what I would do. -
QUOTE (Val Brown @ May 14 2008, 08:37 PM) Val, what way do your lvproj files get corrupted? The project files are xml files and are rather easy to edit with a text or XML editor such as freely available Microsoft XML Notepad. One thing you can try to do is to remove the "items in memory" section from the lvproj file or if that doesn't help then all the dependencies. ps Are you using LV Classes? Tomi
-
QUOTE (neB @ May 13 2008, 07:42 PM) The figures on the image have a certain order as layers from the bottom to the top of the image. The figures on higher layers can exist on top of figures on lower layers. Therefore the figures need to always be drawn in order i.e. you simply cannot change the color of some figure by redrawing it and ignore all other figures as this would make the drawn figure to appear on the top. In this example I would do the color change the following way. - Iterate trough the Picture stack to see which figures are selected. To iterate the stack, use a method similar to Picture.lvclass:Draw.vi which iterates the stack and draws each item in the stack. - For each selected item in the stack, call the set color method to set the color of that item - Then call Draw method for the whole stack, the whole picture will be redrawn (do not undraw, it's more complicated) QUOTE (neB @ May 13 2008, 07:42 PM) 2) If I wanted to allow the user to click on a previously drawn object and change it to a different shape, how can I use the click coordinates to figure out which of the objects it goes with? Create a selection tool in a similar way to the other drawing tools. For the Mouse Down method of the selection tool, iterate the picture stack the same way as above from top to bottom to see which item was clicked. The way I would do it is to add a new dynamic dispatch method to graphics object class for checking if this particular object was clicked. Then implement the method on each of the shape classes. The method would return true if the click occurred on the item. Then when iterating the stack, class this method for each item in the stack. The first item this method returns true would be the one that was clicked on. QUOTE (neB @ May 13 2008, 07:42 PM) 3) Your examples keeps the shapes in what appears to be a stack that you add to or remove from. How does LVOOP let me get at arbitrary shapes with out popping them of the stack? You can use array instead of the stack. I used the stack to show how data and call recursion work in LVOOP. If your items are in a stack, you need to iterate trought the stack. There are no references. However memory wise, LabVIEW can iterate the stack in-place. However, if you use recursive calls to iterate the recursive data structure, you end up having many clones of your iteration methods in memory. At least as long as AQ decides to implement something called tail recursion. Last time I asked, the answer was it won't be implemented anytime soon. Tomi
-
Here is my suggestion. The left hand side is front and the right hand side is back. Click the image for a better view.
-
Hi, When developing with large LVOOP projects or small LVOOP projects with lots of class dependencies clicking save all button (Save all this project) is disaterous. LabVIEW consumes tens of minutes on my dual core laptop doing something on a project that does not contain any changes. What does LabVIEW do when I click the save all button? Why does it actually do something even when nothing has changed. The same thing does not happen if I use Shift + Ctrl + S (Save all) instead. The following screen capture is from my laptop when LabVIEW has been not responsive for the last 10 minutes. LabVIEW consumes all of the processor power of another processor. Luckily I've two of them and LabVIEW compiler is not multithreaded. EDIT: Is this the same process that occurs when one tries to close LabVIEW OOP project and LabVIEW takes tens of minutes to close?
-
QUOTE (ancle @ May 12 2008, 02:25 AM) The Drawing Tool example application can be downloaded from this link. If you are logged in to ExpressionFlow.com, you'll see a download button. If you are not logged in, you'll see the notification below. Drawing Tool 1.0 604.7 KBLearn moreYou must be logged in to download this item! Please login or register now. To proceed with the download, you need to have an expressionflow user account. The user account is free and anyone can register.
-
QUOTE (neB @ May 10 2008, 05:19 PM) What do you mean with a challenge? Maybe something like this...
-
QUOTE (alukindo @ May 9 2008, 04:48 PM) Thanks Anthony
-
Labview compatible with .obj format from Poser 7?
Tomi Maila replied to pika's topic in LabVIEW General
It seems that the obj files can be converted to stl files using this plugin. EDIT: However you may loose color information, I don't know. 3dsmax should be able to read the obj files and export ase files, at least according to this discussion. -
QUOTE (Aristos Queue @ May 8 2008, 09:47 PM) Did you get a mac at home so you would have a good excuse to every now and then test the macintosh build of LabVIEW at home
-
QUOTE (Aristos Queue @ May 8 2008, 04:20 PM) My general principle is that my presentation material cannot be copy-pasted to a presentation of someone else. However, under certain circumstances I can allow using my presentation material; when a clear attribution to expressionflow.com is used when the material is presented, I can consider allowing the usage of the material. However, this should be agreed with me as by-case basis. EDIT: If you are interested in aquiring the right to use the material in NI presentations, you should contact me directly. Tomi
-
Yesterday I was giving a presentation titled Software Development with LabVIEW Object-Oriented Programming at NIDays in Finland. As part of the talk, I prepared Drawing Tool, an example application that utilizes LabVIEW Object-Oriented Programming and tries to introduce several LabVIEW Object-Oriented Programming techniques. It is a simple drawing application for drawing various shapes of different colors on a drawing area. The application is based on a state-machine where the state of the application is presented with several LabVIEW objects. The application demonstrates how a simple state machines based application can be created using LabVIEW classes as state parameters. ALERT: The intention of the application is to show various LVOOP features and programming techniques. To make the application easily understandable to LVOOP beginners, I used architectural choices that make the application more readable rather than more sophisticated and easier to extend. So the example application is not intended as a guide how to develop LVOOP application but merely as an example introducing how several LVOOP techniques can be used in application development. Download Drawing Tool Download the NIDays presentation slides
-
Hei, Tervetuloa suomenkieliseen LabVIEW-keskusteluryhmään. Tämä ryhmä on tarkoitettu suomenkielisen LabVIEW-yhteisön keskustelupaikaksi kaikista enemmän tai vähemmän LabVIEW:n liittyvistä aiheista. Keskusteluun osallistuminen vaatii ilmaisen LAVA tunnuksen rekisteröitymisen. Palvelun tuottaa ExpressionFlow ja LAVA yhteistyössä. Terveisin Tomi Maila
-
CAR #106982, a development time LVOOP type propagation bug resulting into broken wires, when interconnecting LabVIEW class wires between multiple shift registers in a circular manner. Workarounds: 1) use a single shift register with cluster of class types instead or 2) typecast the class wires to the class itself using to more generic primitive immediately after left hand side shift registers. Tomi
-
Major conflict between XControls and LVClasses
Tomi Maila replied to Aristos Queue's topic in Object-Oriented Programming
Hmm... this might explain some weird issues I had with XControls. I did never have time to investigate them in more detail.