sample per channel and read sample

Hello everyone

I'm new in LABVIEW and I have some difficulties with something.

I put t know exactly what is the difference between the sample by channel and the sample to read. According to me, knowing that the sample by channel is the size of the buffer that is larger than the sampling frequency, but I put t know what is the sample to read.

I ve tested with different sample per channel and read. Sometimes I get an error and sometimes know and I would like to know why. If you have examples because I understand better, it will be great.

I really need to understand this part of my project

Thanks for your help

Tony GIBERT

Hi Roro,

As you mentioned, when the size of the buffer absorbing continuous samples, you can specify the sample by placing a value to the entry "samples per channel" on schedule vi. The entry of 'number of samples per channel' on reading vi which automatically names a control / constant with 'samples to read' specifies the number of samples you want to remove from the buffer in an appointment during playback of several samples (N). This link may provide a little more detail. I am also attaching a good example of the finder OR example that you may find useful to explore. I assume you are using the DAQmx driver put then please let me know if this isn't the case, but the same principles should apply in any event.

This means accordingly for sampling at a given rate, you must make sure you're pulling data in large enough 'chunks' so that the buffer overflows (which may well be the cause of error that you see). On the other hand if your sampling rate is slow and your reading vi is having to wait the number of samples to read you have specified to be available, he can lift a time-out error. You can avoid this by increase your sampling rate, reduce your samples to play or increase the time-out specified read vi entry (-1 means it will wait indefinitely).

Let me know if this helps and how you will.

All the best.

Tags: NI Software

Similar Questions

  • samples per channel and the number of samples per channel

    in my DAQ mode samples finished program, there are two screws: timing and read.vi DAQmx DAQmx.

    I have to set the parameter to "samples per channel" DAQmx timing.vi and 'number of samples per channel' on DAQmx read.vi... Is there a relationship between these two?

    My laser runs at 1 K Hz. I want to go to the wavelength, wait for a number of shooting lasers, read the data and move on to the next page...

    Thank you

    Lei

    In your case, the VI will acquire the lesser of either:

    The "samples per channel" that you have defined on the timing DAQmx VI

    -OR-

    The number of iterations of your for loop (N) times the 'number of samples per channel"that you have defined on the DAQmx read VI

    The "samples per Channel" VI DAQmx of timing for a finite acquisition dictates how many samples the DAQ hardware should acquire in it's onboard buffer before indicating that the acquisition is complete.  "The number of samples per Channel" on the read DAQmx VI dictates how many samples the DAQmx driver must return buffer on board the aircraft to your application.

    Let's say the "samples per channel" on the calendar DAQmx VI is set to 50.  Thus, the card will acquire 50 samples and place them in the edge of the buffer, then stops.  Suppose we have the 'number of samples per Channel"on the DAQmx reading VI the value 3 and what we call the VI in a loop For which runs 10 times.  Thus, every time the DAQmx lu VI is called, it will wait until there are at least 3 samples in the buffer, and then return these three.  We call the VI a total of 10 times, then we will answer 30 total samples.  Thus, the last 20 samples acquired the card remains in the buffer and are destroyed when the task is disabled.

    Now let's say that we increase the "number of samples per Channel" on our DAQmx Read VI at 10.  VI Read will wait until 10 or more samples are in the buffer, and then return these 10. Thus, we will be back all 50 samples map acquired by the 5th iteration of the loop For.  The 6th time we call him VI DAQmx Read it expires, because there will never be another 10 samples in the buffer, and the VI returns a warning.

    This clarifies things?

    The purpose of this behavior is to allow you to both set the total number of samples that the DAQ hardware will acquire and also control how much of these samples is returned whenever you call the DAQmx Read VI.

    Kind regards

  • How to abort Continuous Acquisition (which is set to acquire a constant number of samples per channel each iteration)?

    Hi all

    I would like to continuously acquire an input channel analog and, if necessary, be able to stop the acquisition as quickly as possible.

    I use a card NI USB-6289. I implemented a DAQmx (voltage) analog input task, set the clock sampling DAQmx 'continuous samples' and the rate required (IE 1000, which is 1 kHz). For the acquisition, I used a while loop with inside the DAQmx Read with Terminal 'number of samples per channel', wired (IE 1000). The while loop waits until 1000 samples are acquired and therefore continuously reads the channel in uniform batches of 1000 samples every second ticking. The while loop can be easily interrupted when the DAQmx has completed the acquisition of the lot being 1000 samples, but it takes the DAQmx finish their current task.

    My problem is how to stop the loop while the DAQmx Read lies in the middle to get 1000 samples WITHOUT delay all 1000 samples are received? Is it possible to interrupt the DAQmx Read?

    I could reduce "the number of samples per second", increasing the responsiveness of the while loop, but this is not the solution I prefer. I tried to destroy the task (outside the while loop), but that does not stop immediately the acquisition, Read DAQmx still finish acquire 1000 samples. I've included an example Subvi. When I was using a PCI card, I used a timed while loop with inside the DAQmx Read with Terminal 'number of samples per channel' wired-1 (= which means ' read everything in the buffer "). In this case, it was easy to stop the acquisition at any time: the timed, while the loop is abandoned and the acquisition has ceased immediately. But it does not work with an NI USB-6289 map (see thread http://forums.ni.com/ni/board/message?board.id=170&message.id=386509&query.id=438879#M386509) because of the different way the data are transferred to the PC.

    Thank you very much for your help!

    Have a great day,

    LucaQ

    Hi LucaQ,

    Your solutions are decrease of the number of samples, or record the time you want to stop and remove samples that have been acquired beyond this time. There is no other way to stop the actual reading out of the hardware store.

    Flash

  • Total number of samples per channel

    Hello

    I was wondering if you can call a function that returns the total number of samples per channel read. I try to get a precise timestamp.

    I use DAQmx ANSI C developer environment.

    According to NOR:

    Option #1:

    Try and do exactly what the driver is doing.  This will require you to do exactly what you do in the displayed example.  Call time current system immediately before calling the DAQmx Read and subtract dt * x where x is the number of samples already acquired.  It will take you to know exactly how many samples were acquired.  It can be found by calling the Total property of the samples by chain acquired immediately before the DAQmx Read.  This is to introduce some points for innaccuracy.  For example, you're time system is already innaccurate to a certain amount.  In addition, it takes some time between the system times call, calling the total number of samples acquired and calling the DAQmx reading.  If 2 samples are acquired between the call to the time system and the total number of samples acquired, you could be shifted a few samples.  For the slower clock rates, you will have more precision.

    I try to attempet to program this solution, but cannot find the total number of samples per channel acquired property. If anyone can help me, your help will be very appreciated.

    Thank you for your help,

    Vladimir

    Hi Vladimir,.

    Here is the property you are looking for (as the C reference help):

    You will be able to get accurate relative timestamps, since we know that our acquisition is based on a sample with a certain dt clock.  The value of initial time must still come from the OS.

    Best regards

    John

  • Can a module SCXI 1102 with a block of 1303 b cause some channels of reading of the voltage signals and other signals of current reading at the same time?

    Hello

    I'm trying to use two sensors of moisture Omega HX85BA and experience two CFI mass flowmeters in current loop. Humidity sensors have three outputs 0 - 10V, while flow meters have two outputs 4-20 Ma. Can I have all four sensors to wire to the same block of connection SCXI-1303 and read all the signals in the same VI? the block is connected to an SCXI 1102 b card and a 6052E DAQ of NI PCI card.

    Thanks in advance!

    Hello BBalmforth,

    Yes it can. Although you will need external resistances (I recommend resistors precision for better accuracy) for current signals. The SCXI 1102 b is indirectly measuring the current by measuring the voltage drop across the resistance. The table below describes the current diagram and how it will seek in LabVIEW and DAQ assistant.

    Wiring diagram

    LabVIEW

    DAQ Assistant

    Kind regards

    Izzy O.

    Technical sales engineer

    National Instruments

    NI.com/support

  • The most effective way to log data and read simultaneously (DAQmx, PDM) high data rates

    Hello
     
    I want to acquire the data of several Modules cDAQ using several chassis to
    high data rates (100 k samples per second if possible). Let's say the measurement time is 10 minutes and we got a large number of channels (40 for example). The measured data is written to a PDM file. I guess, the memory or the HARD disk speed is the limits. For the user, there must be a possibility to view the selection of channels in a graph during the measurement.

    My question: what is the best and most effective way to save and read data at the same time?

    First of all, I use an architecture of producer-consumer and I don't want to write and display the data in the same loop. I expect two possibilities:

    [1] to use the 'DAQmx configure logging.vi' with the operation 'journal and read' to write the data to a PDM file. To display the data in a second loop, I would create a DVR samples documented and 'sent' the DVR for the second loop, where the data will be displayed in a graph (data value reference). This method has the disadvantage that the data of all channels is copied into memory. Correct me if I'm wrong.

    [2] use 'DAQmx configure logging.vi', but only with the "journal" operation to write the data to a PDM file. To view the selected data, I had read a number of samples of the TDMS file in the second loop (I'm currently writing the TDMS file). In this case, I have only one copy data from the selected channels (not), but there will be more HARD drive accesses necessary.

    What is the most effective and efficient solution in this case?

    Are there ways to connect and read data with high frequencies of sampling?

    Thank you for your help.

    You say that the measurement time is 10 minutes. If you have 40 channels and you enjoy all CHs at 100 kHz, it is quite a number of values.

    In this case, I always try to approach under the conditions of use. If a measure is only 10 minutes, I just connect all PDM data and create a graphic module that could be in the same loop of consumers where connect you the data. You can always work on the raw data files big offline afterwards, the extraction of all the information you need (have a look at the product called NI DIAdem: http://www.ni.com/diadem/)

    The main issue is that the user needs to see in the graph (or perhaps a chart can be useful too). Lets say that the graph is 1024 pixels wide. It makes no sense to show multiple data to 1024 points, Yes? Every second will produce you 100 data points k per channel. What is the useful information, which should see your username? It depends on the application. In similar cases, I usually use some kind of data reduction method: I use a moving average (Point by point Mean.VI for example) with a size of the interval of 100. This way you get 100 data points of 1000 per channel every second. If you feed your graph every second with these average values, it will be able to data points in 1024 of the store (as a default) by channel (curve), which is a little more than 10 minutes, so that the user will see the entire measurement.

    So it depends on the frequency at which you send data to the consumer. For example, collect you values 1024 by iteration of the producer and send it to the consumer. Here you can make a normal means calc or a bearing (according to your needs) and he draw a graphic. This way your chart will display only the values of the last 10 seconds...

    Once I programmed some kind of module where I use a chart and not a graph, and the user can specify the interval of the absolute timestamp that is traced. If the data size is larger than the size of the chart in pixels, the module performs an average calculation in order to reduce the number of data points. Of course, if you need to see the raw data, you can specify an interval that is small. It all depends on how you program zoom functions, etc... In my case I hade a rate of 1 Hz, so I just kept all data in RAM limiting the berries to keep 24 hours of data, so that technicians could monitor the system. In your case, given the enormous amount of data, only a file read/write approach can work, if you really need access to all of the RAW data on the fly. But I hope that the values of working capital means will be enough?

  • Config problem and reading of AI

    Hello

    I have a problem when I use have config and read the structure.

    I use Labview new v12.0 and chassis PXI-1042 NI6120 daq card.

    If I use NI MAX, I can measure approximately 1 V (which is the minimum value for the sensor) or I can measure 1 V using the voltmeter.

    (@ OR MAX, I have set up for voltage analog - NI 6120 - ai0 - 0/5V DC - 20 kHz sampling frequency and number of samples of 4 kHz)

    When I use have config and read the structure, I can't measure 1V! Channel ai0 value is 0 a little.

    Config and read the ai0 channel structure is attached.

    You have an idea what the problem is when I use config and read the structure.

    Best regards

    Serdar

    Two thoughts:

    1 looks like to your acquisition is set to finished samples, then you're exciting the sensor before running the code? Or have you tried to change continuously, so you can change the voltage of the sensor the code runs?

    2. you mention DC in your configuration of MAX, but your coupling in your "10045" code means coupling AC. Do you intend to use the current alternative or continuous? If you want DC, your value of coupling must be 10050 (or you need to create a constant off the coast of the entrance so that you get the enum rather than use a digital).

    Hope that helps!

    -Ryan_S

  • Memory of the PXI - 6562 Max per channel

    I have two questions.

    I have a PXI - 6562 and a data set is 256 MB (32 MB). I want to send the data in this dataset on a single axis of I/O serial. basically, I would like to spend my little of a set of data at the same time on both edges of the clock on an axis of IO. I don't like on the other IO pins. Is this possible with the PXI-6562 or all bits in each octet in the memory of the card corresponds to a specific channel.

    If I can't send my data in series then I will accept that to encode every bit in my data set in the form of byte with a bit of data and the other zeros. This means that, for a set of data from 256 MB, I would need 8 times more memory 2048b. I understand that there are a total of 2 GB of RAM on the PXI-6562. Is this all addressable RAM in series? I can write the data of all the 2 GB of RAM for say 8 i/o ports?

    gtg811q

    With the PXI-6562 even if you want to only output a channel you must always write in a format of U8. So, as you describe you that a single bit, worries you, and you will need to set to 0 for the rest. This means that all data that you generate will be the value of 256 MB of data, because the smallest unit you can write with the HSDIO driver is the U8.

    Now in regards to moving data on the two edges of both sides of the sample clock, this is called Double flow of data and is available with our devices OR 656 X and 6547 and 6548 devices. We have a developer area which details the DDR option more.

    Advanced features of NOR-HSDIO: Double data rate

    http://zone.NI.com/DevZone/CDA/tut/p/ID/6718

    In reference to the memory of the generation, the width of the data to the memory of the generation is not configurable by the user. This means that if you have the 128 MB / channel option your total memory available per channel is 512 Mbit/channel. Because the width of the generation of data is set to 1 byte, and you get 4 times the memory per channel mode DDR with the 6562. The KB below explains the behavior. Look under the section 'Generation '.

    Width of HSDIO and allowance data memory:

    http://digital.NI.com/public.nsf/allkb/E5170A54988EF81A8625725A006103BB?OpenDocument

    So, in summary, the total of 2 GB memory won't be available for a single channel, but you have a total of 256 MB/channel available for each channel. Since you are really interested in only one channel you will be able to write data from 256 MB to you. As you would put all your data on the memory of the card you have to the flow of the disc on your generator HSDIO card. To do this, we have some examples:

    NOR-HSDIO Stream from disk (generation) using Win32 IO file:

    http://zone.NI.com/DevZone/CDA/EPD/p/ID/5270

    However, there will be a bottle neck on your PXI backplane data, because the basket max transfer rate will be around 100-110 MB/s you will not be able to cope with your generation session. Since you will write in U8s each sample is 1 byte, which means that the best you can hope to stream would be around 100 MHz or more.

    We have not the cards LVDS SMU (PXI Expresss) which would allow you to have a superior data through-put, but if you do not necessarily need the LVDS, we have other options. I'm guessing you need LVDS or you would not the 6562.

    The other option is to write you data in parallel in the 8-bit generation DDR and then use an external serializer for an 8 to 1, then you would be able to use all of the available memory and you would probably be able to fit all your data on the memory of the card and you do not have to stream from the disc. This external serializer allows you to put your first data point on channel 0, second data point on channel 1 and one until you loop around back and have your second sample generated between the way 0 be your 8th overall your waveform data point.

    I hope this helps and let me know if you have follow-up questions. Thank you!

  • Selection of a subset of channels to read with DAQmx

    Hello

    I use a 32 channel NI9205 analog input module, connected with the chassis OR cDAQ-9174 and LABVIEW 2011.

    I created a task in the measurement and Automation Explorer who has 16 analog input of virtual channels (each of them with her has an entry configuration, scale, calibration, etc...). Inside LABVIEW, I opened this task to acquire some data, but I just want to read some of the 16 channels (defined by the user), not all, so before the "time DAQmx", I put a 'DAQmx reading node' and I put the ChannelsToRead with the names of the channels that I want to read. It seems to work, but when I put the acquisition rate it's error.

    The acquire module supports a rate of 250 kHz (divided by each channel). So if I put 5 channels to read, for example, it should work with a rate of up to 50 kHz. But whenever I try to use an acquisition rate higher than 15 625 kHz (which is 250 kHz/16) I get an error that says that the maximum rate is 15, 625kHz. As if I was using 16 channels of the task, but I'm not...

    Here the screenshot of channels read and sync configuration.

    Thank you
    Alexander

    Hello Alexander, and welcome to the forums,

    As odessy27 says that you do not reach the correct sample rate because the task is to be set up to read 16 channels; in spite of you more later by specifying which channels are to read.

    To preserve the configuration settings of your created able task and Automation Explorer (MAX), I recommend creating global chains of these. A Global channel will store your configuration for each physical channel and can be accessed from multiple tasks

    Creating a Global channel by the physical channels in your task of MAX right-clicking and then selecting create Global Channel. .

    You can drag these through to your block diagram and wire in the task/channels in the terminal of a function of mx-acquisition of data, as shown in the image below.

    If you change to a control by right clicking > change control channels can be set by the user and the maximum purchase price will go as planned.

    Concerning

    Jamie

  • How to write constantly to analog output and read from analog inputs

    Hi all -

    I had a question about writing continuously to analog output reading simultaneously an analog input.

    It's my first time to post a message to the community, so please let me know if I made mistakes.

    I use Labview 2011 with a NEITHER-DAQ USB 6215.

    I'm looking to generate a waveform and write it continuously in an analog output. It is then connected to an entry on the acquisition of data, where I am trying to sample the analog signal. (I realize, there is a system of trivial, but I'm hoping to build on it once I have run).

    The task of reading from the analog input works fine, as I tested it in several other cases. I have a problem writing to the analog output.

    For this task, I tried to follow the "Gen Cont Wfm Clck Int' VI to generate the wave form and start the task. I then try to write to the output of the analog timed loop. However, it does not seem to transmit a signal and doesn't give me any errors.

    I have attached the VI but also a screenshot.

    Please let me know if anyone has any ideas. I would really appreciate the help!

    Thank you

    Peter Borgstrom

    We will review your tasks one at a time.  First of all, the task of generation/Analog output Waveform.  Generate you a waveform (I'm unsure of your VI if it is a fixed waveform or not) and send it to a defined output function to produce a waveform continuously, using N-channel and samples of N (where you set not these previously).  You should not put this inside has timed loop, as the DAQ hardware has its own clock - if you simply put it in a while loop (with a stop to break out of the loop), the loop will call the function for the first points of N, wait until all N have been taken out, then call it again to another N points (up to what you press Stop).

    Now, suppose that you have the output connected to a load voltage (say a decent resistance).  You can wire the input terminals of your A/D converter through the same load and set up a similar analog input loop, running in parallel (i.e. in its own independent of the OD loop, while loop).  You pourriez start together (with, say, a merged error since the initialization code line loops HAVE and AO become lines of error in "loops of sampling" described above), but you might want to delay loop (a little) the AI so that the OD has a chance to set the voltage before the bed.

    I hope this helps.

    BS

  • Create a data streaming from C++ stream and read it in LabView

    Hi all.

    I'm working on a project that is to connect to a tracker of movement and reading data of position and orientation of this in real time. The code to get the data is in c ++, so I decided that the best way to do it would be to create a c++ DLL that contains all the functions necessary to first connect to the device and it reads the data and use the node to call a library function to power the Labview data.

    I have a problem, because, ideally, I would like a continuous flow of data from the code c ++ in Labview, and I don't know how to do this. Put the node function of library call for a while loop seems like an obvious solution, but if I do it this way I'd have to reconnect to the device whenever I get the data, which is quite a bit too slow.

    So my question is, if I created c ++ function that creates a data stream, could I read that in Labview without continually having to call a function? I would rather have only to call a function once, and then read the data stream until a stop command is given.

    I'm using Labview 2010, version 10.0.

    Apologies if the question is badly worded, thank you very much for your help.

    Dave

    dr8086 wrote:

    This method resembles an excellent suggestion, but I have a few questions where I don't think I understood fully.

    I understand the basic principle is to use a call library function node to access a DLL that creates an instance of the device object and passes a pointer too in labview. Then a separate call library function node would pass this pointer to another DLL that could access the device object, update and read the data. This part could be in a while loop, then continue on reading the data until a stop command is given.

    That's all. I'm including some skeleton for example code. I am also including the code because I don't know how you experience multi threading so I show how you can use critical sections to avoid interactions between threads so that they do not lead to questions.

    // exported function to access the devices
    extern "C"  __declspec(dllexport) int __stdcall init(uintptr_t *ptrOut)
    {
        *ptrOut= (uintptr_t)new CDevice();
        return 0;
    }
    
    extern "C"  __declspec(dllexport) int __stdcall get_data(uintptr_t ptr, double vals[], int size)
    {
        return ((CDevice*)ptr)->get_data(vals, size);
    }
    
    extern "C"  __declspec(dllexport) int __stdcall close(uintptr_t ptr, double last_vals[], int size)
    {
        int r= ((CDevice*)ptr)->close();
        ((CDevice*)ptr)->get_data(last_vals, size);
        delete (CDevice*)ptr;
        return r;
    }
    
    // h file
    // Represents a device
    class CDevice
    {
    public:
        virtual ~CDevice();
        int init();
        int get_data(double vals[], int size);
        int close();
    
        // only called by new thread
        int ThreadProc();
    
    private:
        CRITICAL_SECTION    rBufferSafe;    // Needed for thread saftey
        vhtTrackerEmulator *tracker;
        HANDLE              hThread;
        double              buffer[500];
        int                 buffer_used;
        bool                done;       // this HAS to be protected by critical section since 2 threads access it. Use a get/set method with critical sections inside
    }
    
    //cpp file
    
    DWORD WINAPI DeviceProc(LPVOID lpParam)
    {
        ((CDevice*)lpParam)->ThreadProc();      // Call the function to do the work
        return 0;
    }
    
    CDevice::~CDevice()
    {
        DeleteCriticalSection(&rBufferSafe);
    }
    
    int CDevice::init()
    {
        tracker = new vhtTrackerEmulator();
        InitializeCriticalSection(&rBufferSafe);
        buffer_used= 0;
        done= false;
        hThread = CreateThread(NULL, 0, DeviceProc, this, 0, NULL); // this thread will now be saving data to an internal buffer
        return 0;
    }
    
    int CDevice::get_data(double vals[], int size)
    {
        EnterCriticalSection(&rBufferSafe);
        if (vals)   // provides a way to get the current used buffer size
        {
            memcpy(vals, buffer, min(size, buffer_used));
            int len= min(size, buffer_used);
            buffer_used= 0;                 // Whatever wasn't read is erased
        } else  // just return the buffer size
            int len= buffer_used;
        LeaveCriticalSection(&rBufferSafe);
        return len;
    }
    
    int CDevice::close()
    {
        done= true;
        WaitForSingleObject(hThread, INFINITE); // handle timeouts etc.
        delete tracker;
        tracker= NULL;
        return 0;
    }
    
    int CDevice::ThreadProc()
    {
        while (!bdone)
        {
            tracker->update();
            EnterCriticalSection(&rBufferSafe);
            if (buffer_used<500)
                buffer[buffer_used++]= tracker->getRawData(0);
            LeaveCriticalSection(&rBufferSafe);
            Sleep(100);
        }
        return 0;
    }
    

    dr8086 wrote:

    My main concern is that the object can get out of memory or be deallocated since it would not take place to any namespace or whatever it is.

    As you create the object with the new, the object expire not until the dll is unloaded or the process (LabVIEW) closes. If the object will remain valid between condition LabVIEW dll calls not a not unload the dll (who does if the screws are closed). When that happens, I don't know exactly what happens to the active objects (that is, if you forgot to call close), I guess the system recovers the memory, but the device could still be opened.

    What to do to make sure that everything is closed when the dll before I could call unloads close and remove the object is whenever I create a new object in the dll that I add to a list when the dll is unloaded, if the object is still on the list, that I'm deleting it.

    dr8086 wrote:

    I also have a more general question of programming on the purpose of the buffer. The buffer would essentially be a large table of position values, which are stored until they can be read in the rest of the VI?

    Yes, see the code example.

    However, according to the frequency with which you need to collect data from the device you have this buffer at all. That is, if take you a sample on every 100ms, then you can remove all threads and buffer related functions and instead to read data from the read feature itself like this:

    double CDevice::get_data()
    {
        tracker->update();
        return tracker->getRawData(0);
    }
    

    Because you need only a buffer and a separate if thread you collect data at a high frequency and you can not lose any data.

    Matt

  • NEITHER the 6602 write and read frequency

    Hi all

    I have NEITHER 6602 calendar card and I am trying to use it to write and read from the

    DAQmxWriteCtrFreq (taskHandle1, 0, 1, 10.0, DAQmx_Val_GroupByChannel, & freq, & duty, & writtenVal, 0);

    and

    You should have the following sample installed on your PC that can help you in this task: DigPulseTrain - Cont.prj (it could be found in \program files\National Instruments\CVIx\samples\daqmx\counter\generate pulse folder)

  • DAQmx start and read series vi low bits before actually reading

    I use DAQmx writing to set the bit on a map of 9403. When I set a little high, then try to read this small in a vi subseqeuent little gets low! Both DAQmx Start DAQmx Read screws seem to back the lower wick. How is that supposed to happen? I was certain that bits would not be initialized weak unless the device has been reset.

    I'm guessing that you create a digital output channel, call start, writing and then create as a separate digital input channel and call start-> reading or reading.

    Create the input channel changes the direction of the line.  This happens to commit (which you cross when they if call to start, or read with no departure).  Once the changes of direction, you no longer drive line.  That's why you always read zero.

    You have two options.  You can call read after write (in the task of digital output), or you can have fun with the tristate property.  TriState is a channel DAQmx (DigitalOutput-> Tristate) property.  Aid that it is good enough.

    Two ways to read the value of the line without changing the current state of the row.

  • Find channels and cDAQ modules

    I have looked around the previous messages, but can't seem to find what I'm looking for.

    In most of my experience, I've implemented some DAQ and once the modules and channels are all in place, which is where they stay forever.

    Since I know things will not move, I create tasks in DAQmx.

    I'm working currently on a new installation program, but the problem is that in things cDAQ will not be in the same place every time.

    The application must read a number of strain gauges, which will be connected to the NI 9235 modules.

    It will take place anywhere from 1 to 3 modules attached, and they can be in one of the 8 available cDAQ chassis slots 9172.

    In addition, within a given module, anywhere from 1 to 8 channels will be connected.

    So basically, I guess my questions are running:

    (1) how many modules are connected and where?

    (2) in each module, the number of channels is turned on and how much is empty.

    From there on, I use DAQmx palette to take care of things.

    Thank you!

    So with every new start of the program, you will have a known device (your strain gauge device), but unknown channels. Here's how I attacked only a few years ago...

    • DAQmx create a task to create a job.

    • Make a constant table of all known possible channels. Say that it is 8 cells and compare that to an array of channels USED, making false tracks off the chains 'Unused' and the names of real channel out of used ones. Under certain conditions to check which ones which is used to remove the appropriate channel and add the DAQmx virtual channels properly. The VI snapshot below goes into the details. I brought not only the channels, channels, such as min/max properties and bridge information. My VI also made bridge removal, under certain conditions, depending on sensor that the user wanted to null (that part is not shown.)

    This code isn't super sleek, but I hope this gives you the ideas come from.

  • error timeout on write and read VISA

    I'm having problems of error timeout with a VI who just writes and reads the necessary data and will be eventually added as a Subvi. Everything is set up the same as my camera. I tried to increase the timeout for the session, but it does not work and I don't know what else to try.

    Any help would be appreciated!

    The \r is the termination character (carriage return) and YOU set the constant/control channel for------display Codes. It is a right click option.

    The driver is located by help > find the instrument Drivers. The driver page main has links on what makes a driver is and how to use a.

    http://www.NI.com/downloads/instrument-drivers/

Maybe you are looking for

  • Can I open pop-ups in a new tab instead of a separate window? How?

    I'm on the customer's Web site, and whenever I click on a 'link' to move to this file, the link opens in a new window (separate and single w/out of the address bar or whatever it is, IE, files and printing options). Just, I want to open in a new tab

  • Back to the same place of the web page

    When I click on the arrow to the left happens to me on web page, I was ahead, but there also go to the top of the page, but not to the task, I was working, so I have to scroll down to this place. How can I get back to this place on the web page?

  • Pavilion laptop g6: 10 laptop is overheating since the loading of windows of ideas?

    Hello Since Windows 10 loading on my laptop the laptop is over heating and the fan will continue cutting in the sense, when I had Windows 8.1 I had no problem. No idea why it is now overheating with Windows 10?, it's too much for my laptop and I have

  • Once more Windows promises but does not completely.

    I am very satisfied with Windows 7.  He corrected several problems that I had with Vista and it is faster.  But once more, Microsoft will only 90% of the way.  I use Windows 7 Home Premium, because that's all I need. I need the XP mode to run old sof

  • Print of droidx

    I have a droidx and I have a wireless printer can I print of the droid should be able too. If so how do you go.