Jump to content

JMak

Members
  • Posts

    25
  • Joined

  • Last visited

Profile Information

  • Gender
    Not Telling

LabVIEW Information

  • Version
    LabVIEW 2010
  • Since
    2009

JMak's Achievements

Newbie

Newbie (1/14)

0

Reputation

  1. Thanks for the replies. I just had a few more attempts and managed to make something with a shift register. I added a "wait" default state to the slave, which listens to the event notifier when tasks are finished. The problem with the example pattern is that the wait notifier stops the loop after one task, and I wanted it to continue until all the tasks are done. MasterSlave Events 3.vi
  2. I wanted to do it with a shift register, but couldn't think of a way. I'll try and get rid of the slave send notification. I just had an idea using an array size to select a case structure (or comparison) element... zero will be "read from notifier" and any other number will be "read from shift register". Shift register elements will go down to zero, then the notifier will be read. How does that sound? Edit - I just tried it and it didn't work because the "wait on notification" VI stops the slave loop after the first iteration, and the shift register still has commands left over, which execute at the next notification.
  3. Hi All, I have been trying to come up with a way to make my program more efficient. I am trying to use less nested case structures, and to avoid calling sub VIs multiple times. I looked at some of the design patterns, and there was not a sole design pattern available that did what I wanted, so I have tried to combine 3 patterns into one. My application has a user interface controlling a camera, and each function is context sensitive. For example, if the camera is already acquiring images, the "change video mode" function needs to unconfigure acquisition before adjusting the settings. If the camera is not doing anything, the unconfigure step isn't necessary. My previous attempt used nested case structures to test the condition of all these criteria, and take the required action, so there were cases for every combination of states. I wanted the code to be more minimalist, and call functions (sub VIs) in a state machine in a different order, skipping certain cases, depending on the context. I wanted to combine the low CPU usage of the event structure with the queued message handler example, to take an array of states and process them one at a time. My first attempt is attached. I used notifiers because I don't want steps to be queued if the user presses multiple commands before completion. I want to only process the first command received after the current notifier changes are made. I couldn't think of a way to change between using the array from the notifier and using the modified array (minus the deleted element) in a shift register, so I used the send notification inside the slave loop to send the modified array of states. I want to know if there is a better, more efficient way of doing this, and whether there are any problems here. Thanks, James MasterSlave Events.vi
  4. I have added the special lines to the ini file. The mod works while the camera is running, so problem solved! It took me a while to work out what you did above, and now it makes sense, very good! So I can use the event without having the modified ini file. I hope NI adds the event as an official feature, I don't see how it could be harmful. Edit - I am trying to make the Sub VI, and don't know how to make a non-strict reference for controls for the sub VI connection diagram. I know error control and indicator clusters are in the palettes... Also, would I have to make this sub VI for each control type - enum, ring, combo box, etc?
  5. Hi Darin, So, I can make a change to the ini file, and that event will become available in the menu? What's strange is that the mod worked in my version without me doing any hacking.
  6. Hi asbo, I got a reply on the NI forums and it looks promising - there is an event named "operate menu activation" which applies to the text rings, and if I feed out a boolean constant that cancels the mouse leave event while the menus are being used, the problem shouldn't occur. I'll post back if it works.
  7. Hi, I also posted this on the NI forums, as I can't find a solution... if anyone can help I'd be very grateful! I have a tab control set to change to a different page when the user's mouse enters or exits the tab control. The purpose of this is so that the tab control becomes invisible when coloured "transparent", depending on the user's mouse movement. This allows the full screen to be used for viewing the video when menus aren't needed, and menus can appear when the user moves into the tab area. There is also a button to lock the menu in place. This worked really well until I added some Text Rings to a sub tab menu. When the user clicks the drop down arrow, and hovers over the items, the event case registers as if the mouse has left the tab control, and the tab resets back to page 1 (blank page). I don't want this to happen, but I still want to use drop down menus as they are more concise and convenient than the alternatives (listboxes etc). This does not happen with buttons, and other controls, only with drop down menus as far as I know. Can anyone suggest a workaround? I have chosen this trigger method because it is less processor intensive than using the mouse move event coordinates to trigger the tabs to appear. I need to save as much processor time for video capture as possible. I have attached the vi below for you to see for yourself. Microscope test.vi
  8. It looks like things are more complicated than previously thought. My software was made using an academic version, therefore it cannot be distributed for commercial use - for that, I need a separate commercial development license for everything, then I must rebuild the software with that and people who want to use it need to buy the vision development runtime license. This is only just beginning to make sense.
  9. Ok, I just tried making an installation, and I've added only the Vision and Labview runtime engines, so fingers crossed that it will work. I'll probably make another installer with more IMAQ add-ons if this doesn't work. It would be great if you could see which ones are needed automatically.
  10. I am confused because there are 2 different things here - NI Vision __Acquisition__ Software, which is £339.00 and the completely separate and more expensive NI Vision __Development__ Module which is £2,949.00. Do I need both or only the Acquisition software? Is there a cheaper license for users of an executable with this, or do they have to purchase the same software as the developers? Thanks, James
  11. I ran the exe file on a computer with only the 2010 RTE. Here is the list of missing modules: From this list can anyone tell me what software I need? I'm guessing I might need "Vision Acquisition Software" as well as "Vision Development Module"...? P.S. I used OCR to read the screenshot because I don't know how to attach images here. There might be some mistakes in the OCR. Missing subVI NI_Vision_Acquisition_5oftware.lvlib:IMAQdx Open Camera.vi in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI NI_Vision_Acquisition_5oftware.lvlib:IMAQdx Enumerate Cameras.vi in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI IMAQ Create in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI NI_Vision_Acquisition_5oftware.lvlib:IMAQdx Configure Acquisition.vi in VI NI_Vision_Acquisition_5oftware.lvlib:IMAQdx Configure Grab.vi. Missing subVI NI_Vision_Acquisition_5oftware.lvlib:IMAQdx Start Acquisition.vi in VI NI_Vision_Acquisition_5oftware.lvlib:IMAQdx Configure Grab.vi. Missing subVI NI_Vision_Acquisition_5oftware.lvlib:IMAQdx Open Camera.vi in VI NI_Vision_Acquisition_5oftware.lvlib:IMAQdx Configure Grab.vi. Missing subVI NI_Vision_Acquisition_5oftware.lvlib:IMAQdx Enumerate Attributes.vi in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI NI_Vision_Acquisition_5oftware.lvlib:IMAQdx Enumerate Video Modes.vi in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI NI_Vision_Acquisition_5oftware.lvlib:IMAQdx Unconfigure Acquisition.vi in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI IMAQ ReadFile in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI NI_Vision_Acquisition_5oftware.lvlib:IMAQdx Close Camera.vi in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI IMAQ GetImage5ize in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI IMAQ Overlay Text in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI IMAQ GetImageInfo in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI NI_Vision_Development_Module.lvlib:IMAQ Rotate in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI NI_Vision_Acquisition_5oftware.lvlib:IMAQdx Get Image.vi in VI NI_Vision_Acquisition_5oftware.lvlib:IMAQdx Grab.vi. Missing subVI IMAQ Overlay Line in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI NI_Vision_Development_Module.lvlib:IMAQ Get Angles in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI NI_Vision_Development_Module.lvlib:IMAQ Lines Intersection in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI NI_Vision_Development_Module.lvlib:IMAQ Point Distances in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI IMAQ Clear Overlay in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI IMAQ Overlay ROI in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI IMAQ Merge Overlay in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI IMAQ VVrite BMP File 2 in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI IMAQ Overlay Oval in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI IMAQ Overlay Rectangle in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI NI_Vision_Development_Module.lvlib:IMAQ Extract5ingleColorPlane in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI NI_Vision_Development_Module.lvlib:IMAQ MathLookup in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI NI_Vision_Development_Module.lvlib:IMAQ ColorBCGLookup in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI NI_Vision_Development_Module.lvlib:IMAQ ColorEqualize in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI NI_Vision_Development_Module.lvlib:IMAQ BuildKernel in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI NI_Vision_Development_Module.lvlib:IMAQ Convolute in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI NI_Vision_Development_Module.lvlib:IMAQ Find Edge in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI NI_Vision_Development_Module.lvlib:IMAQ Is Vision Info Present 2 in VI IVA Store Straight Edge3 Results.vi. Missing subVI NI_Vision_Development_Module.lvlib:IMAQ Fit Circle 2 in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI NI_Vision_Development_Module.lvlib:IMAQ Find Circular Edge 2 in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing subVI NI_Vision_Development_Module.lvlib:IMAQ Is Vision Info Present 2 in VI IVA Store Circular Edge2 Results.vi. Missing subVI NI_Vision_Development_Module.lvlib:IMAQ TransformROI in VI IVA Gauge Algorithm Max.vi. Missing subVI IMAQ Rake in VI IVA Gauge Algorithm Max.vi. Missing subVI NI_Vision_Development_Module.lvlib:IMAQ Point Distances in VI IVA Gauge Find Min Max Position.vi. Missing subVI NI_Vision_Development_Module.lvlib:IMAQ Perpendicular Line in VI IVA Gauge Find Min Max Position.vi. Missing subVI IMAQ Overlay Line in VI Overlay Results (Clamp).vi. Missing subVI IMAQ Overlay ROI in VI Overlay Results (Clamp).vi. Missing subVI IMAQ Overlay Rectangle in VI Overlay Results (Clamp).vi. Missing subVI IMAQ Overlay Oval in VI Overlay Results (Clamp).vi. Missing subVI IMAQ Overlay Line in VI Overlay Line with Arrows.vi. Missing subVI IMAQ Overlay Multiple Lines in VI Overlay Line with Arrows.vi. Missing subVI NI_Vision_Development_Module.lvlib:IMAQ Is Vision Info Present 2 in VI IVA Store Gauge Results.vi. Missing subVI NI_Vision_Development_Module.lvlib:IMAQ Convert Pixel to Real World in VI IVA Store Gauge Results.vi. Missing subVI NI_Vision_Development_Module.lvlib:IMAQ Point Distances in VI IVA Store Gauge Results.vi. Missing subVI IMAQ VVindZoom 2 in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing external function niimaqdx.dll:LV_IMAQdx5etAttribute:C in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi. Missing external function niimaqdx.dll:LV_IMAQdxGetAttribute:C in VI New Microscope 14lJlJx9lJlJ 22 5ep.vi.
  12. I want to make an exe application from a .vi to install on another non-labview-installed machine (I want to use the runtime engine). The only problem I can foresee is that I built the software on a version of Labview that has all the add-ons, and I don't know which ones I have used. I want to know if there's a way to identify which add-ons or national instruments programs have to be installed in order for my exe to work. I know I used IMAQ and IMAQdx, and many of the programmer functions such as case statements, but there's probably more I don't know about. Sorry I can't attach the vi, it's potentially going to be sold in the future. Thanks for any help you can offer, James
  13. Hi everyone, I have a problem I can't solve. I have a program where I am writing values to a table, and automatically generating the names for each row of data. I want to generate a new row of data each time I press the "add data" button, and the row number will be generated by an incremental variable that keeps track of how many times the switch has been pressed. I will also use the variable to index the array. My problem is, I can't find a way to make numeric variables in labview. I found this, and it looks like what I want to do, but I cannot make the double variable type. I can only make constants, numeric indicators and controls. Does anyone know how to make one, and where to find it in the palete? http://forums.ni.com/attachments/ni/170/183817/1/Increment.jpg%22 When I delete a row of data, I will need to subtract from the array index number while keeping the data number incremented. Thanks, James
  14. OK, I managed to work it out - I take the 1D array, and use "Index Array", set the index to zero, and the value turns into a boolean value, which can be sent to an LED indicator. You can also create indicator from the output directly, and this will create a line of LEDs in the front panel representing the array values. Hope this helps others!
  15. Hi, I want to be able to show the state of a digital input pin in real time, and it is harder than I thought it would be. In the test panels, there is a nice LED to show when the digital input is high or low - I want the same LED on my Labview program so that I know when the program is supposed to be triggered. I am taking the signal from the same digital trigger that starts the data acquisition from the analogue inputs. The default data output from the digital pin is a 1-D boolean array, and I want to convert this to something that can make and LED indicator turn on and off. E.g. a real-time boolean value. So far, I have tried converting the 1-d boolean array to string, dynamic data type, array, and number, and then use a logic "greater than zero?" test to try and trigger the LED, but I get no output at all - the value stays at zero even though in the test panels I can see the indicator flashing. If anyone knows how to do this, please let me know. Cheers
×
×
  • Create New...

Important Information

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