NI DAQ and Arduino in Matlab (control obj in a callback function triggered by another obj)

(I am aware that this may not be the most appropriate place to ask, but I'm pretty desperate...)
I am writing a script to acquire online data from a DAQ card and to control an Arduino microcontroller based on the output of the DAQ card data.
The acquiring of the DAQ card data works fine, but I'm having problems with (1) the online processing of these data and (2) the corresponding controlling of the Arduino microcontroller. I'll try to explain both problems as clear as possible, the matlab code that has already been written can be found at the bottom of this question.
I'm using a 64-bit Matlab, so I can only use the Session-Based Interface.
1) Online processing
Data are collected at a rate of 1000 samples/s. Each time 250 new samples are available, a callback function is triggered to process these data (using a listener triggered by the 'DataAvailable' event). This processing consists of spectral analysis, using the 'spectrogram' function. The problem is that the spectrogram function should use a window of 500 samples and an overlap of 250 samples. So, new samples should be available for processing every 250 samples, but not only the new 250 samples but also the previous 250 samples are needed to accomplish the overlap. Basically, I need 500 samples for each callback function run, but this function has to be ran every 250 samples.
2) Controlling the Arduino
The biggest problem lies in the controlling of the Arduino. After spectral analysis, the calculated value is compared to a predefined treshold and if this value exceeds the treshold, the output of the Arduino should be put to one, else the output should be put to zero. The problem here is that, since the callback function is an external function, it doesn't recognize the Arduino object. The Arduino has been connected to Matlab at the start of the script, but is only available in the 'base' workspace. Connecting the Arduino on each function run isn't a possibility, since this should be done every 250 ms.
Attempted solutions
I have tried to make the function into a nested function, so that it can use the same variables as the ones in the script, but Matlab doesn't allow this. When I write a nested function, I get the following error: "A nested function cannot be defined inside a control statement (if, while, for, switch or try/catch)." However, I have never defined one of these statements, so the function isn't inside a control statement. I don't understand why this doesn't work.
Matlab code
Script
%% Preparing Arduino
% Connecting the arduino chip to Matlab
a=arduino('COM4');
% Defining the 13th pin as an output
a.pinMode(13,'output')
%% Preparing the DAQ card
% Searching the DAQ card
devices = daq.getDevices;
% Create a session
s = daq.createSession('ni');
% Define the input channel
s.addAnalogInputChannel('Dev1', 0, 'Voltage');
% Define the total measuring and stimulation time
s.DurationInSeconds = 4;
% Define the interval for processing
s.NotifyWhenDataAvailableExceeds = 500;
% Loading the optimal stimulation parameters
load('parameters.mat')
setappdata(s,'freq',parameters(1))
setappdata(s,'treshold',parameters(2))
% Define a listener triggered by the DataAvailable event
lh = s.addlistener('DataAvailable',@stimulation); 
% Save the start time
starttime=clock;
% Start the measurements
LFP=s.startForeground;
Callback function
function stimulation(src,event)
      freq=getappdata(src,'freq');
      treshold=getappdata(src,'treshold');
      LFP=event.Data;
      [S,F,T,P]=spectrogram(LFP,500,250,[],1000);
      PSD=log(P(freq));
      if PSD>=treshold
         a.digitalWrite(13,1)
      else
         a.digitalWrite(13,0)
      end
end
All comments/suggestions are welcome.
Many thanks in advance!

Hello hemm,
As you noted this is most likely not the appropriate place to past these non-NI Development environment related questions.
Especially since the issue does not seem to be related to the interface with the NI DAQ card.
Maybe you could add some Message Tags so that people that are following specific tags might be able to  detect your question and help you.
Would it be an option for you to use NI LabVIEW?
If this is the case then it might be interesting to note that many of the Arduino users over here are using the NI LabVIEW Interface for Arduino Toolkit:
http://sine.ni.com/nips/cds/view/p/lang/en/nid/212​478
This is however being supported from the following page:
https://decibel.ni.com/content/groups/labview-inte​rface-for-arduino
Kind Regards,
Thierry C - Applications Engineering Specialist Northern European Region - National Instruments
CLD, CTA
If someone helped you, let them know. Mark as solved and/or give a kudo.

Similar Messages

  • Please help me with my electrical engineering homework : temperature control and watering system for greenhouse using labview and arduino

    temperature control and watering system for greenhouse using labview and arduino
    spesification :
    1. max temp : 28 celcius (when temperature is more than 28 celcius, fan ON)
    2. min temp : 20 celcius (when temperature is under 20 celcius, heater ON)
    3. watering system : aquaponic (grow plant and fish in separate tank but connect each other). Plant roots help filter water for fish. Fish poop for plants fertilizer. So I need a pump to distribute water.
    Please help me create VI file simulation.. I'm sorry I'm not fluent in English. May God bless you all
    Attachments:
    YOOOSHH.vi ‏88 KB

    Duplicate thread.   Please keep the discussion in that thread where you already have a response. It is also the more appropriate thread for your question.
    Lynn

  • Using LabView, Arduino, and Easy-Driver to control a Stepper Motor

    Hello fair folks of the LabView forums!
    I am a humble engineering student in need of some advice and input on a project I am working on.
    I’ve also done a fair amount of reading on the LabView forums with people trying to use LabView and Arduino to control stepper motors, and I’ve used as much information from each as I could. However the problem I'm encountering now is one which is unique to my VI Configuration.
    So, here is what has been done thus far:
    -Installed LabView Interface for Arduino [LIFA]
    -Installed necessary VISA drivers for LabView to communicate with arduino
    -Uploaded firmware to Arduino to allow it to communicate with LabView
    -Properly wired Stepper Motor with Easy Driver and Power Supply; I have verified this by first using the Arduino independently of LabView, using example code found here.
    -I have created a VI, and have just recently got it to run without reporting back any errors. While I suspect the behavior I’m encountering has to do with something inside the VI, it is difficult to determine as there are no errors being reported!
    But here is general problem I am encountering:
    -Connect Joystick to USB Port, connect Arduino to USB Port.
    -Plug in outlet for Power Supply
    -Open LabView VI
    -Run LabView VI
    -LabView successfully detects Joystick, and Arduino.
    -Tilt Joystick; Stepper Motor moves in proper direction, but it only takes a single step. If held, it does not move further. If returned to zero, and then tilted, it again only takes a single step.
    I know that in the example code, the Arduino issued the step command by writing the signal from LOW to HIGH, and varied the speed by how often it did this.
    I assumed that the Write-PWM feature would do this same thing, but perhaps my assumption is wrong. I will continue to tinker with this myself, but I would be extremely grateful for any insight you might be able to lend.
    I’m thinking, if not the Arduino Write-PMW feature perhaps a simple timing-sequence that could be used to alternate between writing 0 and 1, with the timescale of the sequence being scaled to the X-Axis from the Joystick. But, I am open to suggestions, and certainly appreciate any thoughts you may have to offer!
    Attached to this is the VI used in this setup, a picture of said VI, as well as a rough sketch of the hardware configuration.
    Thank you!
    Attachments:
    Arduino Stepper Control.vi ‏1224 KB
    VI Picture.png ‏82 KB
    Configuration Sketch.png ‏522 KB

    Hi danjifraga,
    I am not so familiar with the Arduino toolkit functions, but you may have better luck looking at the Arduino page at:
    www.ni.com/arduino
    I'll ask around on Monday to see if anyone is more familiar with the toolkit.
    Good luck,
    Brian
    Brian G.

  • Can the USB NI DAQs be used for process control,eg.closed loop? or is too fast

    can the USB NI DAQs be used for process control,eg.closed loop? or is too fast.

    Hi mho,
                 1.usb is very high speed that is correct.Better you can choose PCI DAQ.But thats upto you.
                 2. see this:-
                 http://sine.ni.com/nips/cds/view/p/lang/en/nid/14136
                3.If Matlab support TCP/IP, that could be an option.
                   see Another idea: http://digital.ni.com/public.nsf/allkb/244A37667BD7CBCE86257520007F937B
                   Another simplest way to do it (assuming you running Windows) is to use a Matlab script.
                  If both programs running on different systems:-
    Most simple and slow - Create two  VI's  with shared variable on both machines, and use a matlab script to
    share data. (this makes matlab some kind of "slave").
    More advanced but still  relatively slow (Create two  VI's  with shared variable, on the Matlab machine build the .NET
    dll, and it can be used on Matlab too ( at least at 2010b version, earlier version support only COM).
    Create TCP/IP connection between two comps.
    There is "out of the box" NI products, that communicate with Simulink models.You please do a simple search on that...OK
    I think this link is also helpful for you:-
     Procedimiento para la interface entre LabView 2009 y Matlab 2009b.pdf 1128 KB
    Anyway All the best.Try....do it.
    Thanks as kudos only

  • Issue : drag and drop from list control to tree control

    Hi,
    I was trying a drag and drop from list control to tree control. I have used some sample data to populate list and tree controls .
    It is working fine . except one problem ..
    Prob : when i drag an item to tree control .. it gets added .. now tree contains (X+1) data in list .. say X is the inital number of nodes in a tree node.
              now if i drag another item from list to last item in the tree node  .. i.e at X+1 index. .. it throws null pointer exception.
    I am considerably new in flex programming . looking for help from experts ..
    Below is my code :
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
                    layout="horizontal"
                    creationComplete="init()">
        <mx:Script>
            <![CDATA[
                import mx.controls.listClasses.IListItemRenderer;
                import mx.rpc.events.FaultEvent;
                import mx.rpc.events.ResultEvent;
                import mx.utils.ObjectUtil;
                import mx.collections.ICollectionView;
                import mx.core.UIComponent;
                import mx.managers.DragManager;
                import mx.events.DragEvent;
                import mx.controls.Alert;
                import mx.controls.Label;
                import mx.events.CloseEvent;
                private var homePath:String="/home/e311394/dndTest/";
                private var destPath:String="/home/e311394/dndDest/";
                private var eid:String="e311394";
                private var actn:String;
                [Bindable]
                private var cm:ContextMenu;
                private var cmi:ContextMenuItem;
                [Bindable]
                private var dp:ArrayCollection;
                private function init():void
                    cmi=new ContextMenuItem("Remove");
                    cmi.enabled=true;
                    cmi.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, contextMenuItem_menuItemSelect);
                    cm=new ContextMenu();
                    cm.hideBuiltInItems();
                    cm.customItems=[cmi];
                    cm.addEventListener(ContextMenuEvent.MENU_SELECT, contextMenuItem_menuSelect);
                    list.contextMenu=cm;
                private function contextMenuItem_menuSelect(evt:ContextMenuEvent):void
                    list.selectedIndex=lastRollOverIndex;
                private function contextMenuItem_menuItemSelect(evt:ContextMenuEvent):void
                    var loclSelectedRow:Object=list.selectedItem;
                    var lostrSelectedMenuItem:String;
                    lostrSelectedMenuItem=evt.target.caption;
                    if (loclSelectedRow != null)
                        var obj:Object=new Object()
                        obj.label=loclSelectedRow.label as String;
                            //Alert.show(obj.label);
                    if (lostrSelectedMenuItem == "Remove")
                        if(loclSelectedRow!=null)
                        var pth:String=homePath.concat(loclSelectedRow.label);
                        //Alert.show(pth);
                        //FlexDnDRemoteService.process(eid,"delete",pth,"-"); 
                        var coll:ArrayCollection=list.dataProvider as ArrayCollection;
                        if (coll.contains(loclSelectedRow))
                            coll.removeItemAt(coll.getItemIndex(loclSelectedRow));
                public function onTreeDragEnter(event:DragEvent):void
                    event.preventDefault();
                    DragManager.acceptDragDrop(event.target as UIComponent);
                    tree.showDropFeedback(event);
                protected function onTreeDragOver(event:DragEvent):void
                    event.preventDefault();
                    event.currentTarget.hideDropFeedback(event);
                    try
                        var index:int=tree.calculateDropIndex(event);
                    catch (e:Error)
                        DragManager.showFeedback(DragManager.NONE);
                        return;
                    tree.selectedIndex=index;
                    var draggedOverItem:Object=tree.selectedItem;
                public function onTreeDragExit(event:DragEvent):void
                    event.preventDefault();
                    tree.hideDropFeedback(event);
                private function showAlert():void
                    Alert.yesLabel="Move";
                    Alert.noLabel="Copy";
                    Alert.buttonWidth=70;
                    Alert.show("Copy / Move ?", "Confirm", Alert.YES | Alert.NO | Alert.CANCEL, this, alertListener, null, Alert.OK);
                private function alertListener(eventObj:CloseEvent):void
                    var result:Boolean=false;
                    if (eventObj.detail == Alert.CANCEL)
                        //Alert.show("CANCEL");
                        return;
                    if (eventObj.detail == Alert.YES)
                        //Alert.show("YES");
                        result=true;
                    else if (eventObj.detail == Alert.NO)
                        //Alert.show("NO");
                        result=false;
                    var index:int=tree.calculateDropIndex(treedropevt);
                    //Alert.show("Drop Pos" + index.toString());
                    /* var treeList:ArrayCollection=tree.dataProvider as ArrayCollection;
                       Alert.show(" index"+index+"Length "+treeList.length);
                       if(index > treeList.length)
                       Alert.show("Returning");
                       return;
                    var items:Array=new Array();
                    if (treedropevt.dragSource.hasFormat("items"))
                        items=items.concat(treedropevt.dragSource.dataForFormat("items") as Array);
                    var parentItem:Object;
                    parentItem=getObjectTarget();
                    /* if (tree.dataDescriptor.isBranch(tree.indexToItemRenderer(index).data))
                       parentItem=tree.indexToItemRenderer(index).data;
                       else
                       var dropParentPackage:Object = tree.mx_internal::_dropData.parent as Object;
                       Alert.show("HAck"+dropParentPackage.toString());
                       parentItem=tree.getParentItem(tree.indexToItemRenderer(index).data);
                       //Alert.show("Lenght "+ObjectUtil.getClassInfo(parentItem).properties.length);
                    //Alert.show("Lenght "+ObjectUtil.getClassInfo(parentItem).properties.length);
                    var position:int=0;
                    /* if(ObjectUtil.getClassInfo(parentItem).properties.length==0)
                       Alert.show("Returning");
                       return;
                    if (parentItem != null)
                        try
                            while (tree.indexToItemRenderer(index).data != parentItem)
                                //Alert.show(tree.indexToItemRenderer(index).data.toString());
                                if (index > 0)
                                    index--;
                                //Alert.show("Insiade");
                                position++;
                        catch (e:Error)
                            Alert.show("Catch" + index.toString());
                            return;
                    for each (var item:Object in items)
                        var obj:Object=new Object()
                        obj.label=item.label as String;
                        if (parentItem != null)
                            //Alert.show("ADDED");                       
                            tree.dataDescriptor.addChildAt(parentItem, obj, position++);                       
                        else
                            //Alert.show("PARENT NULL");
                            tree.dataDescriptor.addChildAt(tree.selectedItem, obj, position++);                       
                        var spth:String=homePath.concat(item.label);
                        //Alert.show(spth);   
                        var dpth:String=destPath.concat(item.label);
                        //Alert.show(dpth);
                        if (result == true)
                            removeItems();
                                //FlexDnDRemoteService.process(eid,"move",spth,dpth);
                        else
                            //FlexDnDRemoteService.process(eid,"copy",spth,dpth);
                        tree.validateNow();
                public function getObjectTarget():Object
                    var dropData:Object=tree.mx_internal::_dropData as Object;
                    if (dropData.parent != null)
                        return dropData.parent;
                    else
                        // if there is not parent (root of the tree), I take the root directly
                        var renderer:IListItemRenderer=tree.indexToItemRenderer(0);
                        return renderer.data;
                public function removeItems():void
                    //remove moved elements
                    var items:Array=treedropevt.dragSource.dataForFormat("items") as Array;
                    var coll:ArrayCollection=list.dataProvider as ArrayCollection;
                    for each (var item:Object in items)
                        if (coll.contains(item))
                            coll.removeItemAt(coll.getItemIndex(item));
                private var treedropevt:DragEvent;
                public function onTreeDragDrop(event:DragEvent):void
                    treedropevt=event;
                    showAlert();
                    event.preventDefault();
                    tree.hideDropFeedback(event);
                public function resultHandler(event:ResultEvent):void
                    Alert.show("Success", "Status");
                public function faultHandler(event:FaultEvent):void
                    Alert.show(event.fault.faultString, "Failure");
            ]]>
        </mx:Script>
        <mx:ArrayCollection id="listDP">
            <mx:Object label="File1.dnd"/>
            <mx:Object label="File2.dnd"/>
            <mx:Object label="File3.dnd"/>
            <mx:Object label="File4.dnd"/>
            <mx:Object label="File5.dnd"/>
        </mx:ArrayCollection>
        <mx:Number id="lastRollOverIndex"/>
        <!--
             <mx:ArrayCollection id="treeDP">
             <mx:Object label="/home">
             <mx:children>
             <mx:Object label="dummy1.ks"/>
             <mx:Object label="dummy2.ks"/>
             <mx:Object label="e493126">
             <mx:children>
             <mx:ArrayCollection>
             <mx:Object label="/home/e493126/sample1.ks"/>
             </mx:ArrayCollection>
             </mx:children>
             </mx:Object>
             </mx:children>
             </mx:Object>
             </mx:ArrayCollection>
        -->
        <mx:ArrayCollection id="treeDP">
            <mx:Object label="/dndDest">
                <mx:children>
                    <mx:ArrayCollection>
                        <mx:Object label="sample1.ks"/>
                        <mx:Object label="sample2.ks"/>
                        <mx:Object label="sample3.ks"/>
                        <mx:Object label="sample4.ks"/>
                        <mx:Object label="sample5.ks"/>
                        <mx:Object label="sample6.ks"/>
                    </mx:ArrayCollection>
                </mx:children>
            </mx:Object>
        </mx:ArrayCollection>
        <mx:List id="list"
                 itemRollOver="lastRollOverIndex = event.rowIndex"
                 width="50%"
                 dragEnabled="true"
                 dataProvider="{listDP}"
                 labelField="label"
                 allowMultipleSelection="true"
                 dragMoveEnabled="false">
        </mx:List>
        <mx:Tree id="tree"
                 width="50%"            
                 dragEnabled="true"            
                 dataProvider="{treeDP}"            
                 dragEnter="onTreeDragEnter(event)"
                 dragOver="onTreeDragOver(event)"
                 dragExit="onTreeDragExit(event)"
                 dragDrop="onTreeDragDrop(event)"
                 labelField="label"
                 liveScrolling="true">
        </mx:Tree>
        <mx:RemoteObject id="FlexDnDRemoteService"
                         showBusyCursor="true"
                         destination="FlexDnD">
            <mx:method name="process"
                       result="resultHandler(event)"
                       fault="faultHandler(event)"/>
        </mx:RemoteObject>
    </mx:Application>
    Thanks,
    Rajiv

    Ya , i have searched and have used the same code.
    But needed to customize few things like:
    stop dnd in same tree
    drop some item into a folder ..( onto it ) etc
    have achieved the same .. but this issue ..
    i think the tree dataprovider (contents internally is not being updated .. only the UI)
    any suggestions ?
    - Rajiv

  • How to modify input range (DAQ assistant) with a numeric control ?

    hello every one
    I am currently working with the NI USB-6218 acquisition card.
    I would like, in order to acquire a signal, to be able to choose the input range of the DAQ assistant with a numeric control ( and not by opening the DAQ assistant window ) (like the "number of sample" and the "rate" entry...)
    Is it possible and if yes, how ?
    Thanks so much in advance for your answers !
    Solved!
    Go to Solution.

    hello
    sorry I forgot it. but after spending a few hours on the problem this morning, i solved it Apparently, I corrupted the general DAQmx assistant last friday. By restarting my computer this morning, this issue was solved and I was able to transform the constant into command for the input range.
    Thanks a lot for your help !!!
    Guyua

  • When choose DAQ and when choose GPIB?

    Whats the difference between DAQ and GPIB?

    Zurdo..
    A very open ended question but I will give it my best shot. I would suggest searching on our website for additional info. GPIB is simply a communications protocol much like serial. Many instrument vendors provide a GPIB "port" on their instruments in order to control and automate the configuration, display, and acquisition. When you use GPIB you install a GPIB board on the host computer and then connect that via a cable to the instrument. There are then instrument drivers available for communicating with the instrument via its given set of commands/instructions. Most of the instrument drivers are written in LV.
    DAQ is different in the fact that there is no instrument involved. You install a data acquisition card in your system and then wire that directly up to the phenomenon you want to measure (i.e pressure transducer, voltage source, current, etc). National Instruments then provides a driver and LV interface to configure the board for acquisition.
    So...which one you choose is up to what you have available. If you have a standalone instrument from a vendor such as Keithley, Agilent, etc that does all of the measurements then you probably will use GPIB. If you are wanting to take measurements from some external sensor then you probably will want to choose DAQ.
    StuartG

  • Trackpad is presenting a bug to open and close windows, mission control, and to move/roll the application (App) up and down.

    Totally out of the blue, my trackpad is presenting a "bug". Every time that I try to open and close my mission control, or in the moments that I move / roll up and downs the Applications Screen, my Mac freezes for less than a second.
    It never suffered any damage (NEVER!)! I am feeling very frustrated because I have no idea about what could cause such problem.
    My MacBook Air is running OS X 10.9.5.
    Any help will be very welcome!

    Well, it all really depends on the custom program and how it was written. Does it have an ActiveX interface? If it does, than that's the easiest way to go. If you put an automation refnum on the fron panel, you can right click and it and choose Select ActiveX Class>Browse. The browser will list all of the ActiveX type libraries that are registered on your system. If you can find one that refers to your custom program, then you should be able to use it's methods and properties to control. If it does not have an ActiveX interface, then things get much more difficult.

  • Can the position and szing of a control element in a View be controlled from the ViewModel?

    Is it possible to change the position of a control, say a label, as a response to some action/operation from the ViewModel?  Like if one response to something is true then place the label in the top left corner.  If false, place the label
    in the lower right corner.  I realize you could have a label in each position and just set the visibility.  But can the position and sizing of said label be controlled from the View Model?  What would be a sample coding of this?  would
    it be in the xaml or combination of a method in the ViewModel and the xaml? 
    Rich P

    First off Rich, say TextBlock to yourself ten times.
    Use a TextBlock rather than a label.
    There are a bunch of different ways to do this and the easiest is to have two controls whose text is bound to the one property.
    Bind the Visibility of each to another 2 properties in the viewmodel.
    Collapse one and Visible the other.
    The reason for that is that it's easier.
    Technically, you could put one textblock in a grid and use margin to control this.  You could animate x y co-ordinates and move the textblock mysteriously across the window if you put your mind to it.
    Or you could put it in a row/column "cell" of a grid and change which cell it goes in - but that would involve some mechanism like messaging from the viewmodel to the view and is not really ideal if you can avoid it.
    I'd have a pair of textblocks, here's one:
    <TextBlock Name="TopLeftMsg"
    Text="{Binding Msg}"
    Visiblity="{Binding TopLeftVis}"
    Both would bind to a public string property msg in the viewmodel.
    They each get their own public visibility property  and that'd be switched between Visibility.Visible and Visibility.Collapsed.
    Sizing of textblocks is best fitted to content because all you see is the text.
    Textboxes are arguably different because you can see the things.
    Hope that helps.
    Recent Technet articles:
    Property List Editing;  
    Dynamic XAML

  • I there, my question is quite simple, I would like to know if the "apple remote control" can be used with a mac mini and , if so, it can be used to control also the "logic pro" functions (e.g. record, start, stop etc). Thks a lot, Danilo

    I there, my question is quite simple, I would like to know if the "apple remote control" can be used with a mac mini and , if so, it can be used to control also the "logic pro" functions (e.g. record, start, stop etc). Thks a lot, Danilo

    Good work, thanks for the report.

  • I have lost sound on my iPad in apps unless I use headphones ,does anyone know how to get sound back without them .I have used the mute volume on the bar at bottom of screen and the slider volume control there only shows when headphones are plugged in !

    I have lost sound on my iPad in apps unless I use headphones ,does anyone know how to get sound back without them .I have used the mute volume on the bar at bottom of screen and the slider volume control there only shows when headphones are plugged in !
    I also tried resetting settings all to no avail ...I looked up some advice and watched utube video advice on how to fix without success..
    The volume control button on side does not work ,I got the iPad last August and wonder if it is a fault that means I must return it for replacement from where it was purchased ?

    The Retrospect you used way back when is no longer around. The company was sold and that company produced a new version of Retrospect - Retrospect 8.x
    So, as you've been told, you would have to be running a Tiger system with an old version of Retrospect software (5.x or 6.x - you would need to know) assuming you can find the software.
    As best I can remember you cannot extract files from a Retrospect backup except using the software since Retrospect did not normally make a file by file backup rather it created an archive of the files in the backup. I'm assuming that the EMC/Retrospect people have told you that old Retrospect backups are not accessible by Retrospect 8.x?

  • I have an Imac in my bedroom and apple tv hooked to my big screen in my living room. When I select mirror Imac on the Imac to view on the big screen in living room, can I get a wireless keyboard and track pad to control Imac from living room?

    I have an Imac in my bedroom and apple tv hooked to my big screen in my living room. When I select mirror Imac on the Imac to view on the big screen in living room, can I get a wireless keyboard and track pad to control Imac from living room?

    I do something like that, and can confirm 20 feet won't be a problem. More than 30 or so might be.

  • How do I run a J-type thermocouple to the usb-6363 DAQ and program labview to measure temperature?

    I have a usb-6363 DAQ and a J-type non-contact thermocouple that I am looking to connect and measure temperature through. However, the DAQ does not have any T/C inputs, which is needed to measure in the thermocouple temperature. I am connecting the thermouple to an analog input (+/-) and I am not looking to buy an amplifier, converter or any other hardware. I believe there is a way to program labview to read in the voltages of the thermocouple and convert it into accurate temperature readings. Any help/ideas?

    Hello George,
    This tutorial should step you through the basic process of configuring the device and connecting the thermocouple:
    Tutorial: Connect Thermocouples to a Data Acquisition (DAQ) Device
    http://www.ni.com/gettingstarted/setuphardware/dataacquisition/thermocouples.htm#Connecting a Thermocouple to Your Device
    From there, there are a number of things you can do- I'd recommend taking a look at the LabVIEW shipping examples (Help>>Find Examples...) as well as the DAQmx getting started tutorials:
    Getting Started with NI-DAQmx: Main Page
    http://www.ni.com/white-paper/5434/en
    At first glance, the 6363 you're using should have enough resolution to acquire usable data from a thermocouple- if you attempt reading raw voltages be sure that the acquisition range is configured for +/- 0.1V, though.
    Regards,
    Tom L.

  • How to get material and plant by providing control key as input ?

    How to get the material and plant info based on control key values using a function module?
    kindly help..

    Hi,
    Check the FM
    K_VALID_PLANTS_OF_MATERIAL.
    Sandeep Kaushik

  • TS3989 My Photo Stream works and I have iCloud control panel installed. The photo stream sync is selected, but when I go to the my photo stream folder on my windows PC there are no photos in the file.

    My Photo Stream works and I have iCloud control panel installed. The photo stream sync is selected, but when I go to the my photo stream folder on my windows PC there are no photos in the file.

    mlvov,
    I did as you said and went to the icloud control panel on my Windows 8 Laptop to be sure I was looking at the correct folder for my photo stream.  All my "shared" albulms pushed to my Laptop and are up-to-date with the exception of the "photostream" album. If I create a "shared stream album" and place photo's in it on the phone; I can see the photos on my laptop. I dont get it. I had a iphone 4s and had zero isues and now with my new nifty iPhone 5s it doesent work.
    What am I not doing correctly.
    Thanks,
    iPhone, 5s, iOS 7.0.2

Maybe you are looking for