Buffer size to what value? Digital Output

HI,
I am trying to write digital waveforms and constants on 14 bits of the port0 [see picture attached] but I always get the error of too small buffer size. 
Actually I don't know what numeric value I should wire to the sample clock of the DO instead of 256.
Previously I generated digital waveforms simply autoindexing a for loop's loop index values at the loop's border and I wired this array directly to the DO write and it worked on 8 bits. At that time I put 256 as buffer size because 2^8=256.
Now the situation would be very similar, I want to output digital waveforms on 8 bits and constants on the other 6 bits. 2^14 as buffer size doesn't work. Can somebody please advise how to calculate the correct buffer size.
Thanks,
Krivan
Attachments:
buffersize.PNG ‏35 KB

Hey Krivan,
You can use a property node to edit the size of the buffer much like I have done (see attached image.). For this piece of code you should also have a 1D Boolean array in order to write to the correct channels and also ensure that the line grouping on the create task is set to on channel for each line.
Regards
Andrew George @ NI UK
Attachments:
Krivan.png ‏116 KB

Similar Messages

  • Audigy 2 Value Digital Output O

    Hello
    I recently bought an Audigy 2 Value and connected it into my expternal amplifier via the digital out connector. Is there a digital output only option hidden somewhere that would mute all the other outputs? It isn't under the advanced window of Play Control, that's where my old SBLi've used to have it. Thank you!

    alright, i read the knowledge base articles and saw that the tests won't output more than left and right, but still, it's not working for my dvd's. i have my receiver set to "direct". is that right? i'm using windows media player for the dvd playback, should i try something else? do i have to install an AC3 codec? do i have to enable something in media player? anything please

  • Error -200609 occurred at DAQmx Write: Selected Buffer Size Too Small

    Hello, I'm writing some simple test VI's that I will eventually build upon to make an externally clocked analog output VI. I started with a very simple program to output finite samples using the onboard clock with the DAQmx Timing.VI. When I run the program, I almost immediately get an error. The error message is below.
    Error -200609 occurred at DAQmx Write (Analog DBL 1Chan 1Samp).vi:1
    Possible reason(s):
    Generation cannot be started, because the selected buffer size is too small.
    Increase the buffer size.
    Conflicting Property
    Property: Output.BufSize
    Corresponding Value: 1
    Minimum Supported Value: 2
    Task Name: _unnamedTask<1C>
    I have used DAQmx VI's before in similar applications and never encountered this error. Additionally, I read at the link below that DAQmx Timing.VI should be generating the buffer automatically. Any ideas as what could be causing this?
    Specs:
    Windows 7
    Labview 2012
    PCIe-6353 as DAQ board
    Below is a picture of my block diagram and the VI is attached.
    Solved!
    Go to Solution.
    Attachments:
    FiniteSamplesTest.vi ‏18 KB

    Oops. Just realized my very silly mistake: I forgot to add the Start Task VI. I did so and it works as designed.

  • NI PXI 6229 DAQ Card Digital Output High/Low Levels

    Hi everyone, I can't seem to find in the NI PXI 6229 DAQ spec what the Digital Output high voltage and low voltage is when I set a digital signal high and low.  What is the voltage when I set a Digital Output "HIGH" and what is the voltage when I set a Digital Output "LOW"?
    Thanks! 

    See the digital I/O characteristics section of the specs. Typical ttl levels.

  • What is the default buffer size if we dont specify in buffer write?

    If we dont specify what is the default buffer size in BufferedWriter. How to increase/decrease the size of it?
    What is the purpose of flush?
    If flush() is not used, only partial content is written to the file. Is it because of the default size of the buffer.

    THis is the bufferedwriter class, it helps to look at them, look at the bold underlined, thats answers your defualt buffer size
    * @(#)BufferedWriter.java     1.26 03/12/19
    * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
    * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
    package java.io;
    * Write text to a character-output stream, buffering characters so as to
    * provide for the efficient writing of single characters, arrays, and strings.
    * <p> The buffer size may be specified, or the default size may be accepted.
    * The default is large enough for most purposes.
    * <p> A newLine() method is provided, which uses the platform's own notion of
    * line separator as defined by the system property <tt>line.separator</tt>.
    * Not all platforms use the newline character ('\n') to terminate lines.
    * Calling this method to terminate each output line is therefore preferred to
    * writing a newline character directly.
    * <p> In general, a Writer sends its output immediately to the underlying
    * character or byte stream. Unless prompt output is required, it is advisable
    * to wrap a BufferedWriter around any Writer whose write() operations may be
    * costly, such as FileWriters and OutputStreamWriters. For example,
    * <pre>
    * PrintWriter out
    * = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));
    * </pre>
    * will buffer the PrintWriter's output to the file. Without buffering, each
    * invocation of a print() method would cause characters to be converted into
    * bytes that would then be written immediately to the file, which can be very
    * inefficient.
    * @see PrintWriter
    * @see FileWriter
    * @see OutputStreamWriter
    * @version      1.26, 03/12/19
    * @author     Mark Reinhold
    * @since     JDK1.1
    public class BufferedWriter extends Writer {
    private Writer out;
    private char cb[];
    private int nChars, nextChar;
    private static int defaultCharBufferSize = 8192;
    * Line separator string. This is the value of the line.separator
    * property at the moment that the stream was created.
    private String lineSeparator;
    * Create a buffered character-output stream that uses a default-sized
    * output buffer.
    * @param out A Writer
    *public BufferedWriter(Writer out) {*
    *     this(out, defaultCharBufferSize);*
    * Create a new buffered character-output stream that uses an output
    * buffer of the given size.
    * @param out A Writer
    * @param sz Output-buffer size, a positive integer
    * @exception IllegalArgumentException If sz is <= 0
    public BufferedWriter(Writer out, int sz) {
         super(out);
         if (sz <= 0)
         throw new IllegalArgumentException("Buffer size <= 0");
         this.out = out;
         cb = new char[sz];
         nChars = sz;
         nextChar = 0;
         lineSeparator =     (String) java.security.AccessController.doPrivileged(
    new sun.security.action.GetPropertyAction("line.separator"));
    /** Check to make sure that the stream has not been closed */
    private void ensureOpen() throws IOException {
         if (out == null)
         throw new IOException("Stream closed");
    * Flush the output buffer to the underlying character stream, without
    * flushing the stream itself. This method is non-private only so that it
    * may be invoked by PrintStream.
    void flushBuffer() throws IOException {
         synchronized (lock) {
         ensureOpen();
         if (nextChar == 0)
              return;
         out.write(cb, 0, nextChar);
         nextChar = 0;
    * Write a single character.
    * @exception IOException If an I/O error occurs
    public void write(int c) throws IOException {
         synchronized (lock) {
         ensureOpen();
         if (nextChar >= nChars)
              flushBuffer();
         cb[nextChar++] = (char) c;
    * Our own little min method, to avoid loading java.lang.Math if we've run
    * out of file descriptors and we're trying to print a stack trace.
    private int min(int a, int b) {
         if (a < b) return a;
         return b;
    * Write a portion of an array of characters.
    * <p> Ordinarily this method stores characters from the given array into
    * this stream's buffer, flushing the buffer to the underlying stream as
    * needed. If the requested length is at least as large as the buffer,
    * however, then this method will flush the buffer and write the characters
    * directly to the underlying stream. Thus redundant
    * <code>BufferedWriter</code>s will not copy data unnecessarily.
    * @param cbuf A character array
    * @param off Offset from which to start reading characters
    * @param len Number of characters to write
    * @exception IOException If an I/O error occurs
    public void write(char cbuf[], int off, int len) throws IOException {
         synchronized (lock) {
         ensureOpen();
    if ((off < 0) || (off > cbuf.length) || (len < 0) ||
    ((off + len) > cbuf.length) || ((off + len) < 0)) {
    throw new IndexOutOfBoundsException();
    } else if (len == 0) {
    return;
         if (len >= nChars) {
              /* If the request length exceeds the size of the output buffer,
              flush the buffer and then write the data directly. In this
              way buffered streams will cascade harmlessly. */
              flushBuffer();
              out.write(cbuf, off, len);
              return;
         int b = off, t = off + len;
         while (b < t) {
              int d = min(nChars - nextChar, t - b);
              System.arraycopy(cbuf, b, cb, nextChar, d);
              b += d;
              nextChar += d;
              if (nextChar >= nChars)
              flushBuffer();
    * Write a portion of a String.
    * <p> If the value of the <tt>len</tt> parameter is negative then no
    * characters are written. This is contrary to the specification of this
    * method in the {@linkplain java.io.Writer#write(java.lang.String,int,int)
    * superclass}, which requires that an {@link IndexOutOfBoundsException} be
    * thrown.
    * @param s String to be written
    * @param off Offset from which to start reading characters
    * @param len Number of characters to be written
    * @exception IOException If an I/O error occurs
    public void write(String s, int off, int len) throws IOException {
         synchronized (lock) {
         ensureOpen();
         int b = off, t = off + len;
         while (b < t) {
              int d = min(nChars - nextChar, t - b);
              s.getChars(b, b + d, cb, nextChar);
              b += d;
              nextChar += d;
              if (nextChar >= nChars)
              flushBuffer();
    * Write a line separator. The line separator string is defined by the
    * system property <tt>line.separator</tt>, and is not necessarily a single
    * newline ('\n') character.
    * @exception IOException If an I/O error occurs
    public void newLine() throws IOException {
         write(lineSeparator);
    * Flush the stream.
    * @exception IOException If an I/O error occurs
    public void flush() throws IOException {
         synchronized (lock) {
         flushBuffer();
         out.flush();
    * Close the stream.
    * @exception IOException If an I/O error occurs
    public void close() throws IOException {
         synchronized (lock) {
         if (out == null)
              return;
         flushBuffer();
         out.close();
         out = null;
         cb = null;
    What Flush(); does
    Example, you have a file called c, your writer is b and buffereredwriter is a. so your programs calls a, a talks to b, and b talks to c. when you call the Flush method, the information is sent to the outfile which is c immediately before you even close the file, because when you write to the file, it does not write directly, it writes to a buffer, so flush actually causes the buffer to write to file. Also if you call the close method on that file without the flush, the buffer will still get flushed.
    consider BufferedWriter c = new BufferedWriter(new PrintWriter("c:\\c"));
    you wrap printwriter into a buffered writer, now if you close this "connection" to the file, the buffer will get flushed, noting that all the data is sitting in the buffered and not yet in the file, and this happens if something dont break...

  • What's the optimum buffer size?

    Hi everyone,
    I'm having trouble with my unzipping method. The thing is when I unzip a smaller file, like something 200 kb, it unzips fine. But when it comes to large files, like something 10000 kb large, it doesn't unzip at all!
    I'm guessing it has something to do with buffer size... or does it? Could someone please explain what is wrong?
    Here's my code:
    import java.io.*;
    import java.util.zip.*;
      * Utility class with methods to zip/unzip and gzip/gunzip files.
    public class ZipGzipper {
      public static final int BUF_SIZE = 8192;
      public static final int STATUS_OK          = 0;
      public static final int STATUS_OUT_FAIL    = 1; // No output stream.
      public static final int STATUS_ZIP_FAIL    = 2; // No zipped file
      public static final int STATUS_GZIP_FAIL   = 3; // No gzipped file
      public static final int STATUS_IN_FAIL     = 4; // No input stream.
      public static final int STATUS_UNZIP_FAIL  = 5; // No decompressed zip file
      public static final int STATUS_GUNZIP_FAIL = 6; // No decompressed gzip file
      private static String fMessages [] = {
        "Operation succeeded",
        "Failed to create output stream",
        "Failed to create zipped file",
        "Failed to create gzipped file",
        "Failed to open input stream",
        "Failed to decompress zip file",
        "Failed to decompress gzip file"
        *  Unzip the files from a zip archive into the given output directory.
        *  It is assumed the archive file ends in ".zip".
      public static int unzipFile (File file_input, File dir_output) {
        // Create a buffered zip stream to the archive file input.
        ZipInputStream zip_in_stream;
        try {
          FileInputStream in = new FileInputStream (file_input);
          BufferedInputStream source = new BufferedInputStream (in);
          zip_in_stream = new ZipInputStream (source);
        catch (IOException e) {
          return STATUS_IN_FAIL;
        // Need a buffer for reading from the input file.
        byte[] input_buffer = new byte[BUF_SIZE];
        int len = 0;
        // Loop through the entries in the ZIP archive and read
        // each compressed file.
        do {
          try {
            // Need to read the ZipEntry for each file in the archive
            ZipEntry zip_entry = zip_in_stream.getNextEntry ();
            if (zip_entry == null) break;
            // Use the ZipEntry name as that of the compressed file.
            File output_file = new File (dir_output, zip_entry.getName ());
            // Create a buffered output stream.
            FileOutputStream out = new FileOutputStream (output_file);
            BufferedOutputStream destination =
              new BufferedOutputStream (out, BUF_SIZE);
            // Reading from the zip input stream will decompress the data
            // which is then written to the output file.
            while ((len = zip_in_stream.read (input_buffer, 0, BUF_SIZE)) != -1)
              destination.write (input_buffer, 0, len);
            destination.flush (); // Insure all the data  is output
            out.close ();
          catch (IOException e) {
            return STATUS_GUNZIP_FAIL;
        } while (true);// Continue reading files from the archive
        try {
          zip_in_stream.close ();
        catch (IOException e) {}
        return STATUS_OK;
      } // unzipFile
    } // ZipGzipperThanks!!!!

    Any more hints on how to fix it? I've been fiddling
    around with it for an hour..... and throwing more
    exceptions. But I'm still no closer to debugging it!
    ThanksDid you add:
    e.printStackTrace();
    to your catch blocks?
    Didn't you in that case get an exception which says something similar to:
    java.io.FileNotFoundException: C:\TEMP\test\com\blah\icon.gif (The system cannot find the path specified)
         at java.io.FileOutputStream.open(Native Method)
         at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
         at java.io.FileOutputStream.<init>(FileOutputStream.java:131)
         at Test.unzipFile(Test.java:68)
         at Test.main(Test.java:10)Which says that the error is thrown here:
         // Create a buffered output stream.
         FileOutputStream out = new FileOutputStream(output_file);Kaj

  • Doing Buffered Event count by using Count Buffered Edges.vi, what is the max buffer size allowed?

    I'm currently using Count Buffered Edges.vi to do Buffered Event count with the following settings,
    Source : Internal timebase, 100Khz, 10usec for each count
    gate : use the function generator to send in a 50Hz signal(for testing purpose only). Period of 0.02sec
    the max internal buffer size that i can allocate is only about 100~300. Whenever i change both the internal buffer size and counts to read to a higher value, this vi don't seem to function well. I need to have a buffer size of at least 2000.
    1. is it possible to have a buffer size of 2000? what is the problem causing the wrong counter value?
    2. also note that the size of max internal buffer varies w
    ith the frequency of signal sent to the gate, why is this so? eg: buffer size get smaller as frequency decrease.
    3. i'll get funny response and counter value when both the internal buffer size and counts to read are not set to the same. Why is this so? is it a must to set both value the same?
    thks and best regards
    lyn

    Hi,
    I have tried the same example, and used a 100Hz signal on the gate. I increased the buffer size to 2000 and I did not get any errors. The buffer size does not get smaller when increasing the frequency of the gate signal; simply, the number of counts gets smaller when the gate frequency becomes larger. The buffer size must be able to contain the number of counts you want to read, otherwise, the VI might not function correctly.
    Regards,
    RamziH.

  • VISA Set I/O Buffer Size fails with all but one value on Linux RT

    I was unable to initialize a serial port on a cRIO-9030 using a code that works fine on VxWorks and Windows, when I tracked it down to this somewhat strange behaviour;
    If you call VISA Set I/O Buffer Size on Linux RT (at least on the 9030 device) you will get error code 1073676424 for all size values other than 0.
    That is a bit strange (what will the buffer size be then I might add...), but something even uglier is that if you leave the function's buffer size unwire,  you will also get the error (because the function's default is 4096). 
    MTO

    Under the hood VISA is using the POSIX serial interface for Mac OS X (same as for Linux and Solaris). This interface does not support changing the buffer size. Hence, the buffer size is fixed to the internal OS buffer size. The only thing that changing the buffer size will do (for the out buffer) is to have VISA not flush the data after every write. This is a limitation in the serial API for Mac OS X. Therefore, VISA reports a warning.

  • Best buffer size for BufferedInput/Output Streams?

    I'm developing a client-server application where one server serves an undetermined number of clients. The server spins off threads to service each client individually. The clients send data (serialized objects) to each other via BufferedInput/OutputStreams wrapped in ObjectInput/OutputStreams. The streams are created like this:
    toServer = new ObjectOutputStream(new BufferedOutputStream(theSocket.getOutputStream()));
    fromServer = new ObjectInputStream(new BufferedInputStream(theSocket.getInputStream()));I've never had more than a handful (5-6) users on the system at one time, and it works fine. However, I haven't the resources to test the system with a large number of clients, and I'm wondering if the default buffer size is enough to handle a potentially large amount of traffic to a client. Should I increase the buffer size just in case, or should I not worry? Does the buffer size even matter when using an ObjectInput/OutputStream?
    I'd appreciate any good advice.

    There is an underlying buffer size of 1024 in ObjectIn/OutputStream anyway so the buffer should be at least this large. Generally 4k is adequate unless you are doing very high data volumes in which case 16k, 32k, 63k may help. If you are on Windows you should also up the socket send/receive buffers which by default are 8k: change this to at least 28k. The precise value depends on the network link & in theory should be >= the bandwidth-delay product.

  • Trouble with Digital output on Live Value under Windows

    I have a soundblaster li've value card in my system using the digital output in win98se and all works fine. I just upgraded to WinXP. The windows drivers worked fine once i switched them to digital output. However, i lost the Creative mixer and wanted it back. I then downloaded your Unipack driver for the Li've card for winXP and lost the digital output even when i toggled to digital output control. I then downloaded the li've value from the Gateway site since they OEM'd the card in my system and the digital is working again. However, they do not provide the Creative mixer. Is there anyway I can get the Creative Mixer to work in XP wiith the li've value card? Thanks
    Soundblaster FAQ states:
    Some name brand systems shipped with a special Li've! Value card that was made to work with digital speakers. If you system shipped with a Li've! Value and you have digital speakers you will need to use drivers provided by your system manufacturer. If you use the drivers on the Creative website your card will no longer work with your digital speakers.
    Boston Acoustic Digital Speakers or Prebuilt System With a Digital Li've! Card
    If you have a set of Boston Acoustic digital speakers that came with your system and they are not working with your sound card, make sure you have it connected to the digital out on the card. Also make sure that the digital out is enabled.

    I still always get the value 0.0 returned for minA. I
    know that the data is being correctly stored because I
    have a seperate report frame that displays all values
    for all entries.
    Any ideas where the flaw is?
    Thanks!
    Hey, there. It's unlikely that your users are entering negative numbers which are the only numbers that will be less than zero. You need to initialize your minA to be some quite large number.

  • What is ths maximum PDO read buffer size using the Series 2 CAN cards?

    Does anyone know the maximum size for the PDO read buffer when using a Series 2 PCI NI-CAN card?

    Hi
    The maximum size for a single PDO does not depent on the series of your board it is depending on what else you are doing with the CANopen Library.
    The board uses a specific shared memory to transfer messages between driver and hardware. The size of this memory fits nearly 350 messages.
    The CANopen Config takes 100 messages for different services like NMT. That means the maximum size for a single PDO would be approx. 250 messages.
    Or for 5 different PDOs 50 each. But normaly you can leave the buffer size to zero, thus the PDO Read would allways read the newest data.
    This calculation is true for the board. That means you have 350 messages per board and 2 ports whould need to share the memory.
    DirkW

  • DAQ Continous Digital Output Changing Buffer each 1 ms

    I am developing an application using labview 8.5 and Real Time with ETS.
    I need to output continuous digital output in 4 lines but the values will be recalculate in each cicle in a deterministic loop.
    I cannot figure out how programm this in LabView.
    My last try is in the attached picture.
    I would apreciate some help in this issue.
    Thanks,
    JR Osses
    Attachments:
    DigitalContinuous2.JPG ‏198 KB

    Hi,
    You have some examples in LabVIEW Help about DAQmx continuous write digital chanel. You can implement it for RT application to respect the deadline.
    Hope this helps.
    Benjamin R.
    R&D Software Development Manager
    http://www.fluigent.com/
    Attachments:
    Cont Write Dig Chan-Pipelined Sample Clock.vi ‏49 KB

  • Audigy 2 value where is the option for digital output? Help

    i have the creative inspire 5700 and the audigy 2 value but i cant find the checkbox for "digital output only"
    where can i find it's Pls help me !!!

    That is not the problem however it is located in the speaker setup window and all it does is disable the line outs, digital is always turned on and cannot be turned off. I suggest you re-read the 5700 manual. Tell me which lights you have on.

  • Sudden latency! No change of buffer size or hardware. What give?

    I'm trying to record a song and there's latency. I was recording two nights ago and everything was fine. The only thing that's happened between now and then is I unplugged my gear and replugged it today. The buffer size is set to 256 (and always has been as far as I know). Is it possible that the latency is due to a faulty hardware connection? I don't understand how it could be software related. Also, if the solution is to change my buffer size (which I tried and it does reduce the latency at 32) does that affect the sound quality? I find this all quite mysterious... and infuriating.

    Reducing latency does not affect soundquality, but computer performance.
    Buffer 256 induces pretty much latency. On my system, RME Babyface, 14.8 ms roundtrip.
    And I find it quite useless to record with. So I go for buffer 64/32, or simply mute the channel I'm recording to.
    And monitoring through my interface........But you didn't explain if your problem is MIdi or audio related.
    With first version of LPX (10.0) I experienced som strange behaviour, too. It seems to have gone now.

  • What Is Ideal Buffer Size?

    When setting up my soundcard with Audition 3 (under Preferences/Audio Hardware) it asks for I/O Buffer Size.
    It was automatically on 512. Is this an ideal setting for a 1 mic, VO setup?
    Thanks!

    Hi,
    The NI-USB devices have a totaly different approach for buffering write and read operations, then our Plug In boards. because it is USB , the driver buffers all the frames for Write operations in Host memory. For Read operations there is a small memory at the device but the driver transfers as fast as possible and buffers the frames in Host memory as well.
    Thus you do not need to configure queues with the config function at all. I have not seen a overflow error so far, even with Full Speed USB.
    Hope that helps.
    DirkW

Maybe you are looking for