How to acquire data properly in a b-scan

I'm aqcuiring ultrasound backscattered data in a b-scan system. The vi that i have designed for this purpose is based on a niscope vi (sample rate aquisition). Every time an iteration occurs i get 1000 points and record them in a .xls file, appending values to this file on every iteration, until the transducer gets to the end of 1 line. when the transducer gets to the end, it moves one step, the vi creates another file, where the following acquisitions will be recorded til the next step. My problem is: the transducer is excited at a 1khz rate, (and every time this happens i get 1000 points), but the program (the vi) does not run fast enough to keep track of every pulse (the iteration should occur at 1khz rate also, what's impossi
ble, at least i think it is). Since i'm stuck for a while with this ang i always got very good sugestion on this forum (thanks pals!) i decided to ask for some help. I want to know if it's possible to make this kind of acquisition using labview only and how it can be done.

Unless you are using a very old machine, you should easily be able to store your data at a 1MHz rate. A three year old 650MHz Pentium III is capable of streaming to disk at 10MHz+, so 1MHz is absolutely no problem. You only have a few changes to make.
1) Do not use the .xls format. This is a non-native LabVIEW format and takes translation time. It is unclear from you question whether you are using ActiveX and storing in native Excel format or are using the LabVIEW VIs to store data in text based spreadsheet format (very slow). In either case, you will be much better off saving as a simple binary file. Use the Write File primitive. You can reach disk limited speeds this way. Store to disk in 65,000 byte chunks for maximum speed. If you need the data in a spreadsheet format, convert it after you are done. If you use a simple binary format, most analysis programs (e.g. MathCAD, Mathematica) can read it.
2) Consider using one file instead of many. Alternately, create all your files before you start. Creating files is a slow process. You do not want to do it while taking data. If you have a newer version of NI-Scope, look on your CD for a directory called sfpFile. It contains some LabVIEW VIs to create binary files with structure. They are somewhat difficult to use, but are tailor made for your application. They allow you to store multiple waveforms in a single binary file with relatively easy access.
3) Your data acquisition needs are not really clear. It appears you are taking 1000 data points every millisecond. What hardware are you using to acquire the data and what scan rate are the points taken at? What is the dead time between each 1000 point scan (if any)? If you are taking data at 1MHz, you are probably better off streaming continuously instead of taking data in separate records, if your hardware supports it. If you are taking data at 100MHz, your dead time is almost a millisecond, so you do not need to stream. Consider putting your save code in a separate loop from your acquisition code. This allows LabVIEW to multithread your application (works much better in LV7.0), resulting in better performance. Use LV queues to communicate between the loops. Use local variables to pass the data between the loops.
Finally, run the LabVIEW profiler to find out where your slow steps really are (in the Tools->Advanced->Profile VIs... menu). If these suggestions don't help or are not detailed enough, post more details of you data acquisition and we'll try again. You should be able to do this.
This account is no longer active. Contact ShadesOfGray for current posts and information.

Similar Messages

  • How to acquire data from the memory of multimeter

    I am a beginner of Labview. I don't know how to acquire data from the memory of multimeter.
    I read some examples about DAQ, but it seems not similar to my case. I can't use DAQ in my computer, as I don't have DAQ board.
    Could anybody give me some guide? Similar examples would be great.
    Solved!
    Go to Solution.

    Confirm that you have the VISA Run Time Engine on the target machine. If you do not have it installed, you can install the VISA Run Time Engine from ni.com.
    Error -1073807346 Using VISA When Running LabVIEW Executable On Target Computer
    Message Edited by Mathan on 10-12-2009 07:11 AM

  • How to acquire data from multiple dataports at the same time

    Hi,
    I studied the multithreading section of Labview, but still have no idea
    how to make it work. Let me briefly explain my situation. I need to
    develop a program that can control and acquire data from 4 serial
    ports. I have 4 buttons to control starting or stopping acquisation
    from the corresponding port. Every acquisation process is a while loop.
    How can I start a new acquisation loop (eg. from COM2) while the loop
    for COM1 is still running? In other words, I wish the 4 loops running
    independently, and are controlled by their corresponding buttons only.
    Thanks for any suggestion.
    Jin

    Hi Anonymous,
          If I were you, I'd create one VI (call it Port.vi) to listen to one port - then make it reentrant.  Drop 4 copies of Port.vi on your Main diagram.  Port.vi inputs could include a VISA reference, a "Start/Stop" notifier and maybe a "Quit" occurance.  Wire to each copy of Port.vi a unique VISA reference and a unique "Start/Stop" [boolean] notifier - let all the copies share the same Quit Occurance.
    In Main, have one event case for each of your stop buttons.  When a button is pressed, send the appropriate Start/Stop notifier!
    ... of course you could accomplish the same thing with four identical loops right in your main diagram, but the more complex the port-handling gets, the easier it will be to manage in one place instead of four.
    Cheers!
    When they give imbeciles handicap-parking, I won't have so far to walk!

  • How to acquire data without daq in labview?

    how to acquire  and send anolog or digital input through the usb and other ports in my laptop without using any daq?
    i am using dell inspiron 14R hrthere are many ports in  my laptop .... is there any way to access datas through those ports.

    Vijay,
    I am not sure what you want to do with USB port, but here is a link to the parallel port utilisation:
    http://digital.ni.com/public.nsf/allkb/B937AC4D8664E37886257206000551CB
    Beginner? Try LabVIEW Basics
    Sharing bits of code? Try Snippets or LAVA Code Capture Tool
    Have you tried Quick Drop?, Visit QD Community.

  • How to acquire data through multiple channels in parallel using PXI 6070 E, PXI 4071 and LabVIEW?

    Hi,
    I am using NI LabVIEW, NI PXI 4071, and NI PXI 6070E to measure current through a variable resistance. Now, I am using one channel from SCB-68, but I want to add another channel in parallel so that I can have two resistors instead of one that I cam measure current through them.
    I have attached a Pdf file showing the setup for hardware in use and LabVIEW code also.
    Can anyone look at these files and give me guide lines or ideas that can help me resolving this issue, please.
    Thanks in advance.
    Best Regards,
    Shaheen.
    Solved!
    Go to Solution.
    Attachments:
    IV copy for HS.vi ‏55 KB
    Layout of NI Cards.pdf ‏248 KB

    Your 4071 can only do one measurement at a time. Your DAQ cannot measure resistance either nor has it got any analogue inputs.
    However, you could use a multiplexer and multiplex your 4071 DMM. This wont give you simultaneous measurements but can acquire data one after the other, the speed is obviously dependent on the multiplexer you choose!
    Hope this helps.
    Beginner? Try LabVIEW Basics
    Sharing bits of code? Try Snippets or LAVA Code Capture Tool
    Have you tried Quick Drop?, Visit QD Community.

  • How to acquire data from 2 chs of the same DAQ card at different sampling rate

    I am using single DAQ card (either 6013 or 6014) in my system i want to acquire data from 2 (or more) channels with following requirements
    1. sampling rate of each channel should be independant of each other (say one is 20 Hz and other is 15 kHz)
    2. data from all the channels should be acquired simultaneously.
    3. coding must be done using DAQmx VIs
    I have tried out following things
    1. I created separate task for each channel: i found out that two tasks can not run simultaneously even though the channels are different
    2. I tried out single task with two channels included in it. and i used 'channels to Read' property to determine from which ch. i want to acquire data: this method works fine if the sampling rates are same. but if i change the sampling rate of one channel it gets reflected in other channels as well.
    can somebody help me out to solve this problem.
    i will appreciate if somebody can post the sample code as my deadline is approaching
    Tushar Jambhekar
    [email protected]
    Jambhekar Automation Solutions
    LabVIEW Consultancy, LabVIEW Training
    Rent a LabVIEW Developer, My Blog

    Hi Dennis Knutson
    Thanks for your suggestion.
    Tushar Jambhekar
    [email protected]
    Jambhekar Automation Solutions
    LabVIEW Consultancy, LabVIEW Training
    Rent a LabVIEW Developer, My Blog

  • How to Acquire Data at High Rate for Several Seconds?

    Hello Everybody,
    I am using a PCI 5152 with 64Megs of memory per channel. I am also using Labview 7.1 in WinXP. My PC is a Quad Processor Computer with  2GB of Ram.
    I need to acquire data for several seconds as follows: I am triggering at 1ms and for each trigger I want to save the first 200us  of data at the highest possible rate (more than 200MHz).
    I have developed the code attached but I keep getting the error -1074116198 (buffer overwrite).  Any ideas or suggestions are welcome
    Thank you very much  in advance.
    Jhon.
    Attachments:
    Stream_To_Disk_ With_Queue.vi ‏170 KB

    Hi Jhon,
    Could you please provide a screenshot of the front panel for your VI when you run the program and receive the error (I want to know what each value is set to). Are you able to run the program without error when you decrease the record length and/or sample rate? Additionally, what are the values of the Records Fetched and Records Acquired indicators when you receive the error? Can you please provide a screenshot of the actual error message you are receiving as well? Finally, I am curious to know why you are taking your min record length value and dividing it by the period (reciprocal of min sample rate)? I look forward to hearing back from you soon and reproducing the issue you are seeing.
    Cheers!
    Daniel S.
    National Instruments

  • How to send datas properly to Google Analytics (ANE-Google-Analytics)

    Hello,
    I meet a problem when I'm using the native extension created by Alessandro Bianco : ANE-Google-Analytics. I tested this code many times, in the context of AIR mobile application, but I tested it without any success to add new datas to Google Analytic history. I'm really connected to internet properly.
    Moreover I think that I've made my functions as required by the author : Can you look at my code below to detect some errors to communicate with Google Analytics ?
    <s:TabbedViewNavigatorApplication
        xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        creationComplete="creationCompleteHandler(event)"
    >
        import eu.alebianco.air.extensions.analytics.Analytics;
        import eu.alebianco.air.extensions.analytics.api.ITracker;
        import flash.utils.clearInterval;
        import flash.utils.setInterval;
        import flash.utils.setTimeout;
        public var ganalytics:Analytics;
        public var gtracker:ITracker;
        protected var i:int = 1; // Debug
        protected static const ANALYTICS_ID = "My UA code is here";
        protected function creationCompleteHandler(event:Event):void
            // I launch the tracker :
            ganalytics  = Analytics.getInstance();
            ganalytics.dispatchInterval = 5; // Interval for connecting : 5 seconds
            // I begin to use the tracker :
            GtrackerSessionUsing("RecordingView","HomeView",true);
         * GtrackerConnecting
         * @description : Open connection to Google Analytics, and create instance for a tracker
         * @argument : actionName = "RecordView" or "RecordEvent"
         * @argument : valueName = Name of the view or name of the event to record
        public function GtrackerSessionUsing(actionName:String, valueName:String, createConnection:Boolean=false):void
            gtracker = ganalytics.getTracker(ANALYTICS_ID);
            gtracker.startNewSession();
            if(etablirConnexion==true)
                // Tracking des views :
                var compteur:int = 0;
                var intervalGtrackerCnxOuvrir:uint = setInterval(function():void{
                    counter++;
                    trace("gtracker ="+gtracker);
                    if(counter==50){ // Try to connect - only - 50 times
                        trace("GoogleTracker fails to connect !");
                        clearInterval(intervalGtrackerCnxOuvrir);
                    else if(gtracker!=null){
                        trace("GoogleTracker success to connect !");
                        GTrackerRecordAction("EnregistrerView","HomeView");
                        clearInterval(intervalGtrackerCnxOuvrir);
                    else{
                        trace("Trying to connect to GoogleTracker... (itérate #"+counter+")");
                        gtracker = ganalytics.getTracker(ANALYTICS_ID);
                        gtracker.startNewSession();
                },5000); // All 10 seconds : iterate a new connection test
        protected function GTrackerRecordAction(actionName:String, valueName:String)
         * @description : Use the tracker of the Google Analytics connected account, all of Views can call this function with this model of code: parentApplication.GTrackerRecordAction(...)
         * @argument : actionName = "RecordView" or "RecordEvent"
         * @argument : valueName = Name of the view or name of the event to record
            if(gtracker!=null)
                switch(actionName){
                    case "RecordView":
                    trace("GoogleTracker : gtracker.buildView("+valueName+").track()");
                    gtracker.buildView(valueName).track();
                    break;
                    case "RecordEvent":
                    switch(valueName){
                        case "event1":
                            gtracker.buildEvent("click", "button").withLabel("play").withValue(10).track();
                        break;
                        case "event2":
                            gtracker.buildEvent("click", "button").withLabel("stop").track();
                        break;
                        case "event3":
                            gtracker.buildEvent("app", "quit").track();
                        break;
                    break;
    Best regards.

    Youtch,
         I'm not sure exactly what your issue is, but I was unable to connect and looked at your code, modifying it for my purposes and it fixed my code. Hopefully it can help fix yours.
         I did notice one thing as I went through, however:
    You use
       var compteur:int = 0;
                var intervalGtrackerCnxOuvrir:uint = setInterval(function():void{
                    counter++;
    The compteur does not match the counter variable. It appears a problem with Franglais is the issue here.
    In the event it may help, here is the code I used:
    In my creationComplete function:
    GoogleAnalytics.initialize("UA-47303719-1");
    Here is the code in my app.xml
    <extensions>
            <extensionID>eu.alebianco.air.extensions.analytics.NativeGATracker</extensionID>
        </extensions>
    And here is the class I created to use the ANE:
    package ANE.NativeGATracker{
         import flash.utils.clearInterval;
         import flash.utils.setInterval;
         import eu.alebianco.air.extensions.analytics.Analytics;
         import eu.alebianco.air.extensions.analytics.api.ITracker;
         public class GoogleAnalytics{
              static private var _analytics:Analytics;
              static private var _tracker:ITracker;
              static private var _supported:Boolean;
               * There is no need to instantiate this class
              public function GoogleAnalytics(){
              * Initialize the GoogleAnalytics object.. or return false, if Analytics isn't supported
              static public function initialize(ANALYTICS_ID:String):Boolean{
                   if(Analytics.isSupported()){
                        _analytics  = Analytics.getInstance();
                        _analytics.dispatchInterval  = 5;
                        establishTracker(ANALYTICS_ID);
                        _supported   = true;
                   }else{
                         _supported  = false;
                   return _supported;
              * Establish the tracker connection
              * @description: establishes the tracker connection... reattempt every 10 seconds, up to 50 times
              static private function establishTracker(ANALYTICS_ID:String):void{
                   _tracker  = _analytics.getTracker(ANALYTICS_ID);
                   _tracker.startNewSession();
                   var counter:int    = 0;
                   var establishInterval:uint  = setInterval(function():void{
                        counter++;
                        trace("Google Analytics tracker = " + _tracker);
                        if(_tracker != null){
                             trace("GoogleAnalytics tracker connected!");
                             _tracker.buildView("Launch").track();
                             _tracker.buildView("Home").track();
                             clearInterval(establishInterval);
                       }else if(counter == 50){
                             trace("GoogleAnalytics failed to connect.");
                             clearInterval(establishInterval);
                       }else{
                             trace("Trying to connect to Google Analytics... attempt #" + counter);
                             _tracker  = _analytics.getTracker(ANALYTICS_ID);
                             _tracker.startNewSession();
                   }, 5000);
             * Analytics object
              static public function get analytics():Analytics{
                   return GoogleAnalytics._analytics;
              * Tracker object
              static public function get tracker():ITracker{
                   return GoogleAnalytics._tracker;
              * Returns true if analytics are supported, but false if they are not. Check this before any use of the tracker or analytics objects
              static public function get supported():Boolean{
                   return GoogleAnalytics._supported;

  • How to acquire data and send via tcp/ip

    well guys i'm having a problem here
    i will have a client and a server....
    the client will stay at my home doing some kind of monitoring
    and i want that my client send this informations to me here in my work
    the informations are 6 variables
    3 voltages and 3 currents i already did a program for try the communication
    and it works.... i used the random number only to see if i was receiving the values
    and it works perfectly
    now i have to put the real values... i will use a daqMX.. i don't know the exaclty daq.. but is the  cheapest... because i don't need too much things...
    how could i put the client to make this monitoring and send the data to me??
    thanks for the help!

    I assume you meant the USB-6215, as there is no 6125.
    I would suggest looking over this page: Getting Started with NI-DAQmx: Basic Programming with NI-DAQmx. It contains a wealth of information on using DAQmx.
    You can use MAX to create a simulated 6215 so you can create tasks and
    then implement your code using the simulated device. This will allow you to write the code and test it without actually having the device. Since the 6215 has only analog inputs I am assuming you're using something like a shunt to measure your 3 currents. As I noted, there are tons of examples that ship with DAQmx - just use
    the Example Finder to find them. For what you're doing you can probably
    get away with just using the DAQ Assistant Express VI. However, that
    Express VI generates dynamic data, which you will need to convert to an
    array in order to send it over TCP/IP. This can be done using the
    Convert From Dynamic Data VI (in the Express palette).
    Attached is a simple example using the DAQ Assistant. The task is configured to get just one sample from each channel. You will need to modify the code if you are getting N samples from each channel (i.e., basically a 2D array). In order to run this VI you will first need to create a simulated 6215 in MAX. Please read the documentation in MAX on how to create simulated devices. The 6215 is in the "M" branch when you get the dialog to select a device.
    Attachments:
    teste 3-B - server MOD.vi ‏123 KB

  • How to acquire the concurrent request id in data template?

    Hi all,
    I want to know how to acquire the concurrent request from my report data template. I've created a placeholder for my parameter +<parameter name="p_conc_request_id" dataType = "number" defaultValue="0"></parameter>+ and for nothing ... i've got the 0 value.
    I need the concurrent request id in order to detect the user who launched the report. Is there other way on getting the user ??
    Thank you!
    All the best,
    Laurentiu
    Edited by: laurentiu on Jul 8, 2009 5:29 PM

    Hi,
    I read your previous post about this solution but i was not able to retrieve it. Here is step by step what i've done:
    - added the parameter to my data template
    - added the parameter to my concurrent program
    - added the parameter in my pl/sql package
    - i've run my concurrent request and the value returned in my xml is 0 for the concurrent request id parameter
    I don't know where i'am getting wrong ?!?
    Thank you!
    All the best,
    Laurentiu
    Edited by: laurentiu on Jul 8, 2009 6:47 PM

  • How to counter data skips while acquiring using LabView

    Dear enthusiasts:
    I am using PCI-6031E measurement hardware and a self built LabView program to acquire data from a mp3 player. I am using AI configure, AI start and AI clear(Labview commands) in a loop so that buffer is cleared after each second(say). This is an improvement on its earlier version as it doesnot store the whole length of data in a buffer preventing crashes.But since I am configuring and starting data acquisition after each second, my data has skips at the beginning of each second. How do I modify my program to counter this. I am attaching a jpeg file to show the skip and the labview program.
    Attachments:
    panel_logger3_modified.vi ‏236 KB
    skip_compare.jpg ‏93 KB
    panel_logger3.vi ‏1737 KB

    Your first program is really the way you want to go. To prevent glitches in a continuous acquisition you certainly only want to do the Configure, Start, and clear outside of the loop. To prevent problems in this configuration you can tweak a couple things. First, the buffer size doesn't have to be as large as your entire acquisition - in fact it doesn't need to be anywhere near that large. Usually 2 to 3 times the amount of samples you are reading at a time should be sufficient. Second, you can alter the amount of samples to read at a time in the loop. The larger the number, the less overhead there is since you are grabbing larger chunks from the buffer at a time.
    If you continue to have problems with the original program, just post back. Also, in the futur
    e, I would recommend posting to the LabVIEW or DAQ group rather than DSC - you'll get a lot more and quicker responses that way.

  • How to log and print my acquired datas

    Please help me also.
    I'm using pxi 6052E board.I'm acquiring datas through DAq vis.I want to disply them and also store them in file for future print out purposes.I have succeeded in displaying.But i dont know where to start for datalogging and printing them on request.
    Thanku

    As you are from NI definitely you might be knowing the answer to my question.
    My question is,
    I'm continuously acquiring the signals from the field through PXI-6052E,scxi1000 chassis.
    I want to display them in different display formats.
    For that I have developed some vis(attached) and calling them from main vi.
    The problems i'm encountering is
    1) I cannot able to display them at a time.Even I can rum them simultaneouly using vi reference,but the fromt panel is not coming to the front.
    2) How should I assign the priority for the vis, becoz continuously i have to acquire and display.For this I have used Analog i/p vis .I can able to accsess 32 channels using ob0!sc1!md!0:31 .But how can i acquire all the 128 channels using the same v
    i.
    3)What may be the efficient way to log the datas.If saving the datas in a file is thegood way, the waht for Datalogging and supervisiory control.
    4)I have developed all the vis.How can i create an exe file.What are all the minimum requirements a system should have to execute my exe file.
    Attachments:
    main1.vi ‏65 KB
    Horizontal_bar.vi ‏140 KB
    Vertical_bar.vi ‏106 KB

  • How do i deal while acquiring data rising ni9237

     
    Hi everybody,
    I created under matlab a code that acquire data from four gauges fixed to a beam using NI9237, the aim of my code is to estimate the applied force to the beam, my problem is that at the in the end of acquisition i get the expected force devided by 10(7000N rather than 70000), i am pretty sure that the problem comes form the NIdevice, does any one of you have a suggestion?
    Yours Faithfully.
     

    Hello ismailel,
    You can test your device using NI MAX by following this tutorial:
    http://www.ni.com/tutorial/4638/en/
    Last version of MAX:
    http://www.ni.com/download/ni-system-configuration-14.5.0/5158/en/
    Best regards,
     

  • How do i deal while acquiring data unsing ni9237

    Hi everybody, I created under matlab a code that acquire data from four gauges fixed to a beam using NI9237, the aim of my code is to estimate the applied force to the beam, my problem is that at the in the end of acquisition i get the expected force devided by 10(7000N rather than 70000), i am pretty sure that the problem comes form the NIdevice, does any one of you have a suggestion?
    Yours Faithfully

    This is not a new idea for data acquisition and doesn't belong in the Idea Exchange.  It is a regular problem asking for help.
    It belongs in the Multifunction DAQ board.
    I'll ask to have it moved.

  • Numerisati​on of Acquired Data and Transformi​ng into Frequency domain to process it with some mathematic​al expression​s

    Hi everyone,
    I've been trying to manage some signal processing stuff, I use mathscript node for it; due to the node, i have to transform the data set into numerical values. Due to my research, i should do my processing in frequency domain.
    I did a VI, but i dont think it will work properly when i will use it with acquired data. The VI in the attachment has four dummy-signal sources, sines, consider these as analog input channels. The main question is actually how to process acquired data with numerical operations. And how to properly transform the time domain series into "numerical" frequency domain array.
    Take a look at the example in the attachment. The other one is mathematical expression of the process.
    Thanks,
    OZGUR
    Attachments:
    sample.vi ‏204 KB
    mathematical.png ‏103 KB

    Motorbreath,
    Here are some examples on how to use LabVIEWs graphcial coding to get things into the Frequency domain:
    https://decibel.ni.com/content/docs/DOC-9981
    http://zone.ni.com/devzone/cda/tut/p/id/13042
    http://zone.ni.com/devzone/cda/tut/p/id/7111
    http://zone.ni.com/devzone/cda/epd/p/id/2904
    But essentially you are going to want to use the FFT VIs
    http://zone.ni.com/devzone/cda/tut/p/id/4278
    http://zone.ni.com/devzone/cda/tut/p/id/4541
    http://zone.ni.com/devzone/cda/tut/p/id/3342
    https://decibel.ni.com/content/docs/DOC-6390
    I hope this gets you going
    Sam S
    Applications Engineer
    National Instruments

Maybe you are looking for

  • Status in Interaction Record update based on a follow up Business Transacti

    Hi I put in place within ICWC the Interaction record creation as initial step followed by a creation of a Service ticket. I would like at the Completion of my service tickets the interaction record to be completed automatically as we dont want any ag

  • Office 2010 BEx warning message  Worksheet BExReporsitory Sheet is protecte

    Hi gurus, we upgraded to Office 2010 and when opening an IP-Layout we get the warning message Worksheet BExRepository Sheet is protected without supplying password. When you confirm you can continue your work.In excel 2003 nothing came up. Can anyone

  • Convert scanned signature into line drawing

    I have a need to convert scanned signatures into line-drawings. I could buy MIcrosoft Illustrator (or something) to do it, but I was wondering if anyone knew of a free-ware Java tool that could do this. It would work somehting like the following: 1.

  • How to do the page menu effect

    I am  a newcomer I would like to create my menu with a rollover effect just like on this page.    http://designova.net/simple/index-animated.html

  • Displaying photo's vertically from slideshow to appleTV

    When I start a slideshow from photo's on my iphone and airplay to my apple TV, the pictures are mostly sideways, but if I just swipe through photo's they seem to be all displaying just fine. Do I need to configure something on my iphone?