Jump to content

Francois Normandin

Members
  • Posts

    1,209
  • Joined

  • Last visited

  • Days Won

    46

Everything posted by Francois Normandin

  1. I would tend to agree that there is no way to tell directly. But this complicated use of events does it: Download File:post-10515-1232163016.vi (LV 8.6)
  2. Hi Jed, it's got to be validated if the Project.Projects[] property always returns the list of project in the same order as _ProjectWindow%d... If so, this would give you the Project reference.
  3. Hi Jed, it's got to be validated if the Project.Projects[] property always returns the list of project in the same order as _ProjectWindow%d... If so, this would give you the Project reference.
  4. QUOTE (PaulG. @ Jan 15 2009, 09:40 PM) :thumbup: That would be the Platinum version...
  5. QUOTE (PaulG. @ Jan 15 2009, 09:40 PM) :thumbup: That would be the Platinum version...
  6. If there's only one row of tabs, then it doesn't change position. Setting "Allow Multiple Rows" to FALSE can do that, adding some arrows to browse back & forth.I know, it's not exactly the same behavior...
  7. QUOTE (JFM @ Jan 14 2009, 05:39 AM) Touché! From what alfa says about physicists, they most look like http://en.wikipedia.org/wiki/Centaur' rel='nofollow' target="_blank">Centaurs.
  8. QUOTE (erchaj @ Jan 13 2009, 10:07 AM) Hi Eric, Simply typecast the ArrayElement to a cluster type and you'll get access to the cluster "Controls[]" references. Then find out which one is clicked with the "Coordinates". http://lavag.org/old_files/monthly_01_2009/post-10515-1231881836.png' target="_blank">
  9. Hi all, I'm building a list of available DO physical channels and when a user selects multiple channels, the result I get is a string like this: "Dev2/port1/line0, Dev2/port1/line1, Dev2/port1/line2, Dev2/port1/line3, Dev2/port1/line5, Dev2/port1/line6" but when I select multiple channels from the Browse button of the physical channels control, then I get a much simpler "Dev2/port1/line0:3, Dev2/port1/line5:6". Is there an easy way to group a list of single channels?
  10. Hi Lauren, there are indeed tricks you can use to simplify your coding. One of those is to use a cluster containing all your buttons. You can then iterate the cluster's controls references and set the boolean text, description and tip strips. There are probably more, including dynamic event registration, but I'll leave that to other to explain. However, if you'd like to create an undeterminate number of buttons automatically from file, I'm afraid you'll need "Scripting" to do this. QUOTE (LaurenH @ Jan 10 2009, 06:32 PM) See the modified files... I've created a cluster typedef with your button position. You can then fill from Excel file content. Download File:post-10515-1231632726.zip QUOTE (LaurenH @ Jan 10 2009, 06:32 PM) 2 – Allow the user to click or hover their mouse over a button (or other front panel objects) and have information “pop up” or show information that is related to that button (…). Use the "TipStrip" property. That's exactly what it does. When you hover over the buttons, "tipStrip" text is displayed.
  11. QUOTE (erchaj @ Jan 9 2009, 01:56 PM) There is a "Point to Row Column" method (invoke node) that you can use.
  12. QUOTE (zmarcoz @ Jan 8 2009, 09:05 PM) If there's an error cluster (out) that is not wired, you will get a pop-up if there is an error. The error handler VI should be put anywhere you want to intervene on an error. If you detect an error (using case structure for example), then you can call a subroutine to deal and correct the error, or ask for user input. You could even simply log these errors in a file for future reference. They're a great debugging tool.
  13. QUOTE (zmarcoz @ Jan 8 2009, 08:32 PM) The error source and messages can be displayed using the General Error Handler VI. Look in the Dialog & User Interfaces Palette. See this link. QUOTE (zmarcoz @ Jan 8 2009, 08:32 PM) I read some notes which said "Connect the Error In to the While loop, then the boolean will be changed to STOP if Error". I have no clue where I can find an "Error In" control/constant Wire the error cluster to the stop button of the while loop. Right-click on the error button to select "Stop on Error" or "Continue on Error". QUOTE (zmarcoz @ Jan 8 2009, 08:32 PM) Can I create a VI just add two numbers and display the result with Error detection?? Sure. If you need to enforce sequential execution in a subVI that does not have error clusters, make a wrapper around it with an error cluster in and out. Connect these clusters to the connector pane and voilà.
  14. QUOTE (george seifert @ Jan 7 2009, 01:00 PM) As Ben says... and you should assign an index to your pics. See this example: http://lavag.org/old_files/post-10515-1231354187.vi'>Download File:post-10515-1231354187.vi (saved for LV 8.2)
  15. QUOTE (Gary Rubin @ Jan 6 2009, 03:57 PM) Actually, I would say Waveform Graph only. I had read "Evenly spaced along in time" (not along the axis)... Gary is right. Waveform graphs use evenly spaced datasets (t0, dt, y(t)), while waveform charts can be appended with any Y value without being evenly spaced in time. Granted, they would be evenly spaced in index (0,1,2,3...) but with no relation with time other than an approximation for an evenly timed loop.
  16. I haven't worked with this, but you might be interested to know there are some experimental drivers that can be found on NI Labs for Allen Bradley PLC's.
  17. QUOTE (mattdl68 @ Jan 5 2009, 11:17 PM) Probably here... http://msdn.microsoft.com/en-us/library/aa373931.aspx' rel='nofollow' target="_blank">GUID Structure
  18. QUOTE (PhattieM @ Jan 5 2009, 06:30 PM) That's exactly TobyD's explanation packaged in a PNG... :thumbup: Good luck.
  19. QUOTE (Eugen Graf @ Jan 5 2009, 06:34 PM) That's a solution. But since LVClass is already a cluster, you could simply unbundle it and make a bundle of your liking in a "UnBundle/Bundle method" (instead of accessor). Both will work... I just don't know which one would be preferable from a theoretical standpoint. I guess using a cluster inside the class data cluster makes it easily upgradable as the accessor would automatically adjust to typedef of your class data. Otherwise, you need to modify the method if you add or remove data from class data. <thinking out loud> If you want the output cluster to stay the same even when adding stuff to your class data, then use a Unbundle/Bundle approach. </thinking out loud> Here is what I mean by this. I looks more work but if you use this cluster with a C++ program, you might want to keep a tight control on your typedef. http://lavag.org/old_files/monthly_01_2009/post-10515-1231202703.png' target="_blank">
  20. QUOTE (Eugen Graf @ Jan 5 2009, 05:25 PM) You can have a Public Method to read the LVClass Data and output a cluster of your choice.
  21. QUOTE (PhattieM @ Jan 5 2009, 03:39 PM) Hi Mark, if you use a subVI, then don't put the while loop inside the subVI. Instead, put your code in the subVI and call it anytime you want from your GUI, in a loop. Otherwise, your subVI will execute while your loop is running and the connector pane will give only the last result (when looping is terminated). http://lavag.org/old_files/monthly_01_2009/post-10515-1231189528.png' target="_blank">
  22. I'm not either. I've not succeeded in retrieving a handle the the proper DeviceInfo (and I won't have time to play with it since it's back to work tomorrow...) but here is a little tip: Use the GetLastError and FormatMessage functions from kernel32.dll. This way, you'll know what sort of problem you have. It seems I've misled you with the datatypes I showed on my screenshot but I thought it was not important since those parameters are optional. The LPGUID typedef is a pointer to a GUID structure. Think of "struct" as a cluster in LabVIEW terminology. Hence, the datatype for GUID is something like this: typedef struct _GUID {DWORD Data1; WORD Data2; WORD Data3; BYTE Data4[8]; } GUID;where for example this GUID: eeaf37d0-1963-47c4-aa48-72476db7cf49 would be represented by:DATA1 = EEAF37D0DATA2 = 1963DATA3 = 47C4DATA4 = {AA, 48, 72, 47, 6D, B7, CF, 49} It is not trivial to get these to work in LabVIEW... The trick is to match the types and I personally find that frustrating sometimes! In this case, I'm returned ERROR_INVALID_DATA. I'll leave it up to you to find a solution... But here's my Windows Error Extraction class if that can be of help. (Just input the error code from GetLastError() and Merge it to LV error cluster. Download File:post-10515-1231128408.zip (LV 8.6)
  23. Confirmed here (8.6). The behavior is the same when you "Group" the decoration and boolean. It gets scattered (while maintaining Group status).
×
×
  • Create New...

Important Information

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