Jump to content


  • Posts

  • Joined

  • Last visited

  • Days Won


Posts posted by bbean

  1. LabVIEW 7.1

    I have a VISA read operation that requires a long timeout (5000ms). When the user wants to exit the application I want to abort the VISA read immediately. I have tried Closing the VISA session in a parallel loop. I have tried setting the timeout property to 0 in a parallel loop. Neither of these worked. :headbang:

    I looked through the NI VISA programming reference manual and notice a command called viTerminate. snip: "Requests a VISA session to terminate normal execution of an asynchronous operation.". Is this what I need to execute and if so where is it on the LabVIEW pallete? Or is there a simple way I am missing?

    Thanks in advance

  2. That comment is not as bad as the ones ppl found in windows source code :


    * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


    * !!!!!!!!!!!!!!DOING SO F*&^s THE BUILD PROCESS!!!!!!!!!!!!!!!!

    * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  3. Also, there's probably little reason to use multiple repositories; you can do:










    ...all in the same repository. You can also use externals within the same repository in order to keep everything in sync (I do this for some simulation code I run in Igor.)

    Some questions about SVN and LabVIEW. How do ppl deal with multiple LabVIEW versions in SVN? or more specifically what subversion repository structure do ppl use for multiple LabVIEW versions?

    Is it like this:

    <root>/Project1/LabVIEW 7.1/trunk

    <root>/Project1/LabVIEW 7.1/branches

    <root>/Project1/LabVIEW 7.1/tags

    <root>/Project1/LabVIEW 8.0/trunk

    <root>/Project1/LabVIEW 8.0/branches

    <root>/Project1/LabVIEW 8.0/tags

    <root>/Project2/LabVIEW 7.1/trunk

    <root>/Project2/LabVIEW 7.1/branches

    <root>/Project2/LabVIEW 7.1/tags

    <root>/Project2/LabVIEW 8.0/trunk

    <root>/Project2/LabVIEW 8.0/branches

    <root>/Project2/LabVIEW 8.0/tags

    <root>/Utilities/LabVIEW 7.1/trunk

    <root>/Utilities/LabVIEW 7.1/branches

    <root>/Utilities/LabVIEW 7.1/tags

    <root>/Utilities/LabVIEW 8.0/trunk

    <root>/Utilities/LabVIEW 8.0/branches

    <root>/Utilities/LabVIEW 8.0/tags

    Or Like this:

    <root>LabVIEW 7.1/Project1/trunk

    <root>LabVIEW 7.1/Project1/branches

    <root>LabVIEW 7.1/Project1/tags

    <root>LabVIEW 7.1/Project2/trunk

    <root>LabVIEW 7.1/Project2/branches

    <root>LabVIEW 7.1/Project2/tags

    <root>LabVIEW 7.1/Utilities/trunk

    <root>LabVIEW 7.1/Utilities/branches

    <root>LabVIEW 7.1/Utilities/tags

    <root>LabVIEW 8.0/Project1/trunk

    <root>LabVIEW 8.0/Project1/branches

    <root>LabVIEW 8.0/Project1/tags

    <root>LabVIEW 8.0/Project2/trunk

    <root>LabVIEW 8.0/Project2/branches

    <root>LabVIEW 8.0/Project2/tags

    <root>LabVIEW 8.0/Utilities/trunk

    <root>LabVIEW 8.0/Utilities/branches

    <root>LabVIEW 8.0/Utilities/tags

    Or neither :question:

    Branch/Tag/Trunk directories

    When you do a checkout to the local machine do you prefer to see the \branch, \tags, \trunk directories from the reository on the local machine?


    Do you checkout your "utilities" directly to the appropriate versions user.lib? Or do you use externals and checkout everything (project vis and utilities via externals) to a local project directory?

    Sorry for all the questions, just trying to figure out what works best for people? :beer:

  4. While there is much love for Tortoise SVN for managing Subversion projects, you can try an SVN plugin for Windows made by PushOk that lets you work with your repositories (doing basic check in/out operations) from within LabVIEW 8.x.

    Do you know how much a Pushok license costs? I don't want to have to fill out all that info on the website just to find out.


  5. You can do multiple repositories, importing a shared "utilities" repository as an "external". Unfortunately, I don't think there's an interface to do so in TortoiseSVN; I handle my externals by ssh-ing into a unix box and using the svn cli tool:

    % svn propedit svn:externals <target directory>

    FYI. You can handle externals in TortoiseSVN by right clicking on the directory, selecting properties, and then the Subversion Tab


  6. The reason you do not see them is because you do not have the scripting features enabled. go to the scripting forum here on lava and put the features in your labview ini folder and then restart labview and you will see them.

    Got it thanks. I had the original ini entry but I forgot the SuperSecretPrivateSpecialStuff=True. That seemed to do the trick.

  7. Hello bbean,

    what code are you using?

    LV 8.0

    BTW i found an option in the context menu:

    This will add a context menu item on the subpanel, where you can open the BD, maybe something for you?

    I knew I was missing something. This should work for me. Thank you.

    And this code was succesfull for me:

    this is the code from the subpanel vi, it opens the BD if I click on the (running! sub panel VI) boolean

    Still can't figure out how you did this. These are the options I have for VI Properties:




  8. Am I missing something simple or is there no easy way to open a subpanel VI block diagram window while it is loaded in a subpanel ?


    I would like one of two things:

    1) Open only the block diagram window of the subpanel VI before I run the toplevel VI.

    2) Put a button on the top level VI's user interface that allows me to open the block diagram of the subpanel VI I have in the subpanel so I can debug the VI's code while it is loaded in the subpanel.

    Right now it seems like I have to have the subpanel VI open before I run the top level VI if I want to debug the code. Even then, the subpanel VI window does not load in the subpanel of the top level VI.

    I looked at the VI properties and methods but didn't see anything for Block Diagram except "get image"

    Has anyone run into this before?


    Using LabVIEW 8


  9. I saw your cross post to the NI forum and am responding here to let NI reply.

    1) I believe the VISA driver has ben updated recently (to handl esomething with events). Have you tried the latest and greatest version (this week)?

    2) THe are more than one "enable termination character" property. Check the "out of the box" version of the "Serail Port Init" that ships with LV.

    I have nothing more to offer at this time.


    Thanks for taking a look at this. I found out the problem. I was missing a portion of the "Header message" when I sent the commands to the controller. The documentation doesn't really explain this header until you get into the examples. I missed it in my rush to get things done. Sorry for the false alarm about events and flow control.


  10. First, has anyone developed a driver to communicate via the serial port with a Digi-sense 68900-11 temperature controller? I've checked ni instrument driver network, google, and the company's website with no luck. I think its manufactured by a company called Eutech.

    Since I couldn't find a driver, I wrote a quick Labview interface with some simple commands to communicate with the instrument but couldn't get anywhere setting up the serial communication according to the serial communciation specification (see attached). I kept getting timeout's and was not able to read or write any data to the controller.

    The basic settings are 9600,8,n,1, XON/XOFF (w/ XON=11 hex and XOFF = 13 hex)

    So then I setup Portmon to watch the OEM's software application (which works fine). The OEM applicaiton seems to have a different setting for the "Shake:80" serial setting in Portmon. I've tried a bunch of different handshake settings using the VISA Serial Setup vi to try and match the OEM software to no avail. Also the OEM software seems to enable a bunch of Serial Events. Some of these I can enable and some I can't, but when I enable the events the computer justs grinds to a halt. Do I have to enable and handle the Serial Events or can I ignore them?

    So I turn to you guys for advice. Attached is my code, the comm spec, and port mon snapshot's.

    Download File:post-549-1153680070.llb



    Download File:post-549-1153680142.txt

  11. I don't understand what is going into Table 2 - plot colors and point styles, stuff like that?

    I like snooper's idea, but if you don't need to query limited ranges of data, maybe the best thing would be to store the X values and Y values as "blobs". Then you could put multiple plots' and graphs' worth of data into one table, as seems to be your intention, and only have a few rows. I'm pretty much a DB ignoramus so take this suggestion with a grain of salt.

    In my limited experience of transferring data to/from LabView and DB, there is no problem dealing with a few thousands of rows in a table.

    Table 2 is just a link between the Graphs Table and the actual Plot Data in the Plot Data Table. Really you only need two columns for Plot ID and GraphID, the extra stuff is if you want to store information specific to the plot..like a color so that you could load the configuration into your graph property node when you query the db for a Graph.

    I have been using a similar technique on an application recently and it hasn't had any problems yet, but the Plot Data table is still relatively small ...about a million points. I can query and return a 150000 pt plot in about 5 secs across the LAN. Not too bad. We'll see how it does as the DB grows. I'll let everybody know if there's an issue.

  12. Using the spectrogram function in Labview, I'm getting a weird cutoff in my graph. I'm plotting frequency v time, and on the frequency side, the graph goes up to a certain threshold, and then nothing above that threshold, even though I'm certain that I'm recording frequencies higher than that.

    Is there any known problem or limitations with the NI_gmath.lvlib:STFT Spectrogram.vi function? Any suggestions? Thanks!


    Are you using a daq card and DAQmx to sample the data?

    The only time I have seen this is when I set the sample freq. too low by accident. I've seen NI's Express VIs automatically cutoff anything above the Nyquist freq (which makes sense)

  13. there, too, but I think the best exampe for this technique is the MAX?

    BTW: the splitter bar functionality was used in the max log before it became availiable for the public ...

    The VIs itself are part of a software, I wrote for a customer, and I had to sign a non disclosure agreement, to get the job, so I'd say yes and I am not allowed to post any VIs. But the technique is not proprietary. Id would take a while, but I could try to explain, if you are interested?

    I'm familiar with the tree control so I guess what I'm interested in is:

    1) What DB tools did you use? labsql, ni db toolkit, or custom,

    2) Do your VIs automatically traverse the database to build the tree?

    3) If it automatically traverses what technique do you use?


  14. It's not really diffucult to implement that. The actions are (of course) in the state-machine of the "framework VI" and the subpanel writes the appropriate actions into the state-Q of the framework VI. I was surprised myself how easy it was. I'm using subpanels very often, I only develop small applications without them, because I don't like lots of popup windows.

    thank you. btw: the icons should be on your disk, too. just start a search for *.ico files, and you'll probably find them (these are mostly default windows icons ...). If you need a tool, to quickly set the "user icons" of the tree, let me know, I have a small tool. It's not proximate as pretty as the screenshots above, but will provide you an array if images, which you can use to set the custom icons.

    Slightly OT

    Forgot to ask about your DB and tree control. Are the VIs you used to populate the tree from the DB proprietary? If not I'd be interested in taking a peek. I guess I'd have to brush up on my ?German? though.


  15. I don't think it's a stupid idea. I have created a configuration editor in a similar way, some weeks ago:

    the complete configuration of the measurement task is stored in a DB and is presented in the tree on the left side. Changes in the subpanel, change the corresponding tree item. I have 3 measurement devices at time, so I have 4 subpanels: basic settings and the devices. If you select a item in the tree, the corrsponding subpanel is shown. It works pretty good ...

    The tree implementation you show is a pretty neat subpanel implementation. I especially like the icon use in the sublevels. Very professional looking.

    The OpenG Commander installer uses a wizard-like interface, although it doesn't use subpanels (it is compatible with LabVIEW 6.1 - before subpanels were invented

    I have taken a look at the OpenG wizard style used in OpenG Commander. That was my initial inspiration :lightbulb: because it looks and feels very professional also. I thought subpanels might help make it easier and more generic.

    I had another thought last night, maybe it would easier just to make a vi template to use as a starting point for each wizard screen (with queued state machine). Then use this template to create VIs for all the screens and put the screen VIs in a top level VIs to manage the flow. The trick is passing information between each step of the wizard. I'm using some GOOP objects so it may not be as difficult as I anticipate. Anyway this strategy is not as elegant but follows the kiss principle.

    Thanks for the feedback,


  16. Has anyone tried using a Subpanel and some Back, Next, Finished, Cancel Buttons in a VI as a generic framework for a Wizard style interface?

    The main reason I'm thinking about doing this is the functionality of many of the wizard screens is also used in other areas of my app where I don't need to lead the user through steps. I've created wizards before using tabs, but thought a subpanel might be better because I could run a subvi in the background for each wizard screen and also call a screens subvi somewhere else if I just want to execute one of the screens.

    Has anyone gone down this path before. Let me know if its a stupid idea.


  17. Index array will select an array element - you want to seach an array. Check out the other primatives on the palette and the LabVIEW help.

    Whoa there - the general method of assisting Homework Hustlers is to guide them to the answer with the hustler showing their progress at each step, not just do the assignment for them.

    You're right, but sometimes its less annoying to give them the answer, especially when a language barrier is in the way. Won't let it happen again.


  18. thanks for the tips.

    but my data is already in 2 dimensional array.

    I just want to get the row number with matched data. I still couldn't get it.could you help me with it? I would really appreciate it.

    the example is like this:

    row 1: Sara

    row2: John

    row3: Alex

    row4: Danny

    lets say I type in Alex, then the result should be able to show me the row number, which is 3.

    I had tried out the "index array", but still cannot get the result. I really hope that you could help me with it. I would be very grateful.

    See attachments.

    Download File:post-549-1148345218.vi


  19. I have a project down the road where I need to store Graph data in a relational database. I wanted to see what other people are doing in terms of table structure in a database to store graph data from various tests. The graphs could have a variable number of plots and also a variable number of points (say up to 1k pts) in each plot. Based on my limited experience with database design I was going to make 3 tables in the dB:

    Table 1 (PlotData)

    col 1 = PlotDataID, autonumber (primary key) integer

    col 2 = PlotID_fk, (foreign key) integer

    col 3 = PlotDataX, real

    col 4 = PlotDataY, real

    Table 2 (Plots)

    col 1 = PlotID_pk, autonumber (primary key)

    col 2 = GraphID_fk, (foreign key) integer

    col (n) = (plot info ....)

    col (n+1) = (other plot info)

    Table 3 (Graphs)

    col1 = GraphID_pk

    col(n) = ....(graph info)

    col(n+1) =...(some other graph info)

    Then JOIN them altogether on the primary keys to retrieve the data. My worry is PlotData table will get huge and take a long time to query. Has anyone gone down this road before? Is there a better way?

    Thanks in advance

  • Create New...

Important Information

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