Fast, temporary data storage

I'm trying to create a screen capture program that'll take screenshots and save them (in some form or another) and then convert them to a movie once recording is completed (similar to java's example Jpeg to Mov program), and I've come to a performance hit (which I think may end up requiring native calls).
I can capture the screen relatively quickly (15-20 fps; no saving of images), so I've determined my issue is temporarily storing them for later use.
At first, I just tried using ImageIO.write (using various different formats), but that cut my fps in half.
Then I tried temporarily storing the BufferedImages in an array to write later. This worked...for about 10 seconds until the computer I was using ran out of memory.
Then I tried separating the work into 2 threads, one for "reading" (screen capture), one for writing, using a LinkedList that's shared between the two threads (reading places image at the end, writing removes the current head). This worked a little bit longer (lasted 30-45 seconds) with a small fps loss (tolerable), but I again got the out of memory error.
So now I'm starting to try and think outside the box.
I read elsewhere on the web that certain methods to get pixel information weren't performance-friendly, and I ended up using
BufferedImage bi = robot.createScreenCapture(screen);
Raster ras = bi.getData()
int[] rgb = (int[]) ras.getDataElements(0,0,screen.width,screen.height,null);Data from my machine at work:
Screen capture: 0.48 sec (consistently)
ImageIO.write: 1.00 - 1.9 sec (depending on format, jpg being the fastest, but at a quality loss, PNG being slowest, but maintaining quality)
rgb array: 0.11 sec (consistently)
So I tried various methods of writing the rgb array to a file:
FileWriter: 1.3 - 1.7 sec (see below)
PrintWriter 1.2 sec (consistently)
BufferedWriter out = new BufferedWriter(new FileWriter("test-image.txt"));
out.write(""+rgb[i]+"\n");  //1.3 sec consistently
out.write(""+rgb); //1.7 sec consistently
out.newLine();
PrintWriter o = new PrinterWriter("test-image2.txt");
for(int k:rgb) {
o.println(rgb[k]);
//1.2 sec consistentlyFor now, it looks like the PrintWriter might be the best trade-off between speed and quality (since it's writing the original color values for each pixel, no quality loss).
Just thought I'd see if anyone else knew of any faster/more efficient methods of temporarily storing the data from a screen shot (BufferedImage).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

amp88 wrote:
How does this run?Forget that. Try this. When you run "Screenie Generator" it will create Screenie files which contain the lossless pixel information from your display. It will continue to do this until you forcibly stop it (Ctrl+C or stop it with your IDE). The files it creates are found in a folder called "Screenies" in the directory you run the code from. To convert those files into PNGs run the ScreenieViewer class. Due to the way the generator is operating at the moment (the fact you have to forcibly stop it executing) when you try to convert the files an exception will always be thrown from the Viewer class when it encounters the partial file. Don't worry about this though, it won't stop the Viewer app from exiting cleanly. There are a couple of parameters you can fiddle with in the code. Modifying DELAY_BETWEEN_SCREENSHOTS_MS will change the target time between generating screenshots. 50 ms gives you 20 fps target output. You can have a play about with that and check out your system usage. If you try too low a value you will run into out of memory problems. Modifying WAITING_SCREENIES_THRESHOLD will change how often the program outputs the screenies it has generated. Please give this a go and let me know how you get on. Also, could you provide details of your system (e.g. the resolution you're attempting to capture at, your CPU, hard disk setup, graphics card etc).
Generate output files:
package tester;
import java.awt.AWTException;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ScreenieGenerator {
     private final int DELAY_BETWEEN_SCREENSHOTS_MS = 50;
     private final int WAITING_SCREENIES_THRESHOLD = 5;
     private Robot robot;
     private Dimension screenDimension;
     private Rectangle screen;
     private File screenshotsDir = new File("Screenies"+File.separatorChar);
     private ExecutorService cachedThreadPool;
     private ConcurrentLinkedQueue<Screenie> screeniesToBeWrittenToDisk = new ConcurrentLinkedQueue<Screenie>();
     public static void main(String[] args) {
          new ScreenieGenerator();
     private ScreenieGenerator() {
          cachedThreadPool = Executors.newCachedThreadPool();
          screenDimension = Toolkit.getDefaultToolkit().getScreenSize();
          try {
               robot = new Robot();
          } catch(AWTException awte) {
               awte.printStackTrace();
               System.exit(1);
          screenshotsDir.mkdirs();
          screen = new Rectangle(screenDimension);
          Timer outputGeneratorTimer = new Timer();
          outputGeneratorTimer.scheduleAtFixedRate(new TimerTask() {
               public void run() {
                    cachedThreadPool.execute(new CaptureScreenshot());
                    int waitingScreenies = screeniesToBeWrittenToDisk.size();
                    if(waitingScreenies > WAITING_SCREENIES_THRESHOLD) {
                         cachedThreadPool.execute(new OutputScreenshot());
          }, 0, DELAY_BETWEEN_SCREENSHOTS_MS);
     private class CaptureScreenshot implements Runnable {
          public void run() {
               BufferedImage bi = robot.createScreenCapture(screen);
               Screenie thisScreenie = new Screenie(bi.getWidth(), bi.getHeight(),
                         bi.getRGB(0, 0, bi.getWidth(), bi.getHeight(), null, 0, bi.getWidth()));
               screeniesToBeWrittenToDisk.add(thisScreenie);
     private class OutputScreenshot implements Runnable {
          public void run() {
               if(screeniesToBeWrittenToDisk.size() > 0) {
                    try {
                         Screenie screenie = screeniesToBeWrittenToDisk.remove();
                         ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(
                                   screenshotsDir.getAbsolutePath()+
                                   File.separatorChar+System.nanoTime()+".screenie"));
                         oos.writeObject(screenie);
                         oos.close();
                    } catch(IOException ioe) {
                         ioe.printStackTrace();
}Convert outputted files from program above to PNG files:
package tester;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import javax.imageio.ImageIO;
public class ScreenieViewer {
     File screeniesDirectory = new File("Screenies/");
     public static void main(String[] args) {
          new ScreenieViewer();
     private ScreenieViewer() {
          if(!screeniesDirectory.exists()) {
               print("Screenies directory doesn't exist: "+screeniesDirectory.getAbsolutePath());
               System.exit(1);
          int filesConverted = 0;
          File[] allScreeniesFiles = screeniesDirectory.listFiles();
          if(allScreeniesFiles == null || allScreeniesFiles.length == 0) {
               print("no screenie files to convert!");
               System.exit(0);
          for(File oneScreenie : allScreeniesFiles) {
               if(oneScreenie.getAbsolutePath().endsWith(".screenie")) {
                    print("found a screenie file to convert: "+oneScreenie.getAbsolutePath());
                    try {
                         outputOneFileAsPNG(oneScreenie.getAbsolutePath());
                         filesConverted++;
                    } catch(IOException ioe) {
                         print("IOException attempting to output file: "+oneScreenie.getAbsolutePath());
                         ioe.printStackTrace();
                    } catch(ClassNotFoundException cnfe) {
                         cnfe.printStackTrace();
                         System.exit(1);
          print(filesConverted+" screenie files converted");
          print(this.getClass().getSimpleName()+" exiting");
     private void outputOneFileAsPNG(String inputFilename) throws ClassNotFoundException, IOException {
          BufferedImage screenieImage = getBufferedImageForInputScreenie(inputFilename);
          String outputFilename = inputFilename;
          outputFilename = outputFilename.substring(0, outputFilename.lastIndexOf("."))+".png";
        ImageIO.write(screenieImage, "png", new File(outputFilename));
        print("successfully outputted screenie file: "+outputFilename);
     private BufferedImage getBufferedImageForInputScreenie(String inputFilename) throws IOException, ClassNotFoundException {
          ObjectInputStream ois = new ObjectInputStream(new FileInputStream(inputFilename));
          Screenie screenie = (Screenie) ois.readObject();
          BufferedImage screenieImage = new BufferedImage(screenie.getWidth(), screenie.getHeight(), BufferedImage.TYPE_INT_ARGB);
          screenieImage.setRGB(0, 0, screenie.getWidth(), screenie.getHeight(), screenie.getData(), 0, screenie.getWidth());
          return screenieImage;
     private void print(String msg) {
          System.out.println(msg);
}The output file object:
package tester;
import java.io.Serializable;
public class Screenie implements Serializable {
     private static final long serialVersionUID = 1289508155211323563L;
     private int width, height;
     private int[] data;
     public Screenie(int width, int height, int[] data) {
          this.width = width;
          this.height = height;
          this.data = data;
     public int getWidth() {
          return width;
     public int getHeight() {
          return height;
     public int[] getData() {
          return data;
}

Similar Messages

  • What is Error code "@43@####" in DTP, Temporary Data?

    What is Error code "@43@####" in DTP, Temporary Data?
    I am gerring this "@43@####" in Status field for some records, in DTP's Temporary data storage...
    Please let me know the solution... Thanks..
    Rammohan

    Hi,
    I guess you get some not allowed signs/characters in one field. Check psa for that and try to correct the values there.
    regards
    Siggi

  • Uploading to online data storage: Now cannot download songs into iTunes

    Hello all.
    I am not seeing this one on any FAQs, knowledge bases, or discussion boards yet:
    I am doing my initial upload of files to SugarSync, a highly-recommended online data storage service. Since I started, I cannot download songs into iTunes, even from the iTunes Store.
    On any new downloads from the iTunes Store, the song DOES appear in the Music library view but immediately after completing the download it shows the exclamation point warning that the file is not in its location. The new folders get created properly within the iTunes Music folder but the subfolder where the song should be is empty. Each time I had to write iTunes Support to get them to make the files available.
    I can still add files manually, no problem. E.g., I can add *.mp3 or *.wav files or folders, I can convert them to AAC, etc. The glitch seems to occur only when automated loads into iTunes are operating.
    As a test, I downloaded a song from Amazon. Here the problem was different but I could work around it manually. Normally the Amazon process loads songs automatically into iTunes, too. Here again, the download did create the proper folder in the iTunes Music folder, as it should, but this time the symptoms were reversed:
    (a) the mp3 file WAS in its folder as it should be (w/the iTunes DL, the file was NOT there)
    (b) the song did NOT appear in the iTunes Music view (w/the iTunes DL, the song DID appear)
    (c) I was able to browse to the file and tell it manually to load into iTunes (w/iTunes I had to write Support and wait a day).
    (I wonder what's the cause of the differences between the two cases.)
    Strictly speaking, I can't PROVE the problem has anything to do with SugarSync (which otherwise seems good so far), but the DL problem started as soon as I started using it. Something in the SugarSync upload or file-monitoring process, or an odd thin gin iTunes, seems to be preventing automated, direct loads into iTunes. And since the data service runs in background, so it can monitor file changes, that might mean I can't buy music anymore! Obviously that would be a dealbreaker with SS. (I have contacted SS on this but they've not had fair chance to reply yet.)
    1) Anyone else have this problem?
    2) Is this permanent or just temporary while I am doing the initial upload?
    3) Anyone know a solution?
    (FYI, I am a highly-experienced user and otherwise quite handy with iTunes files, library moves, and backups. My library is entirely consolidated and all AAC.)
    Thanks.
    (Oh, and this occurred in both iTunes 8 and the new iTunes 9, so it seems unrelated to the upgrade this week.)

    UPDATE 1. CHANGING BROWSER HELPED -- OR DID IT?
    I called Apple iTunes Support, who said the problem is new to them. The technician's hypothesis was that something, perhaps browser-related, was interfering with the initial creation of a temporary file (which should go to the Recycle Bin) that instead causes the completed file to go to there.
    He noted that iTunes, though not going through one's browser onscreen, does use settings within one's default browser. I use Mozilla Firefox, so we switched to IE as the default browser, restarted iTunes, and the song downloaded with no problem! Then I switched back to Mozilla, restarted iTunes, and it worked AGAIN with no problem!
    (Dutifully I advised SugarSync, which is still investigating.)
    UPDATE 2: ARTIST NAME CHANGE - SOME FILES GOT MIS-MOVED / MIS-CHANGED
    Definitely something still wrong. This time some pre-existing song entries (not new downloads) lost their connection to their source file.
    In iTunes, which manages folder names for artists and albums automatically, I corrected the spelling for an Artist, so immediately iTunes renamed the folder, and automatically SugarSync noted the change to be uploaded. While the changed folder name and all the songs within were still uploading to SS, in iTunes I saw exclamation points come up -- but only for some of them. Most files got moved or changed correctly, but several lost connection to their file (i.e., the file was removed for the original misnamed folder but never moved into the correctly-named folder). Weird.
    Worse, in only some of those cases did I find the missing *.m4a file in the Recycle bin. (I had to retrieve old, original *.mp3 versions from another folder and re-import each into iTunes manually.) I've never seen iTunes have a problem managing an Artist rename until I started using the live SS process.
    (I've reported this to SS and asked if there is a way to disable temporarily SS to see if that's the problem.)
    [Note: I am willing to try downloads again but I am wary of trying to rename entire Artists (Folder) again. That was a lot of work.]
    ====
    UPDATE 3: SERIES OF TESTS - 1 FAILURE USING iTUNES
    Still problem occurs, but not always. Today, I rebooted PC. I tried CD, iTunes, & Amazon. I varied having the browser open when using iTunes.
    Here are the results of a series of attempts to download songs. "FAIL" means the file did not load properly into iTunes or loaded but lost its connection (exclamation point warning).
    # Source Mozilla #Songs Result
    1 CD Closed 1 OK
    2 iTunes Closed 1 OK
    3 Amazon Open 2 OK
    4 iTunes Open 1 FAIL
    5 Amazon Open 1 OK
    6 iTunes Closed 1 OK
    7 Amazon Open 2 OK
    8 iTunes Open 2 OK
    (I reported this to SS. Hoping they'll test and find the problem.)

  • 2.23 Apps must follow the iOS Data Storage Guidelines or they will be rejected

    My Multi Issue v14 App (24124) was just rejected by Apple. Apparently because storage of the data (folios?) was not iCloud compatible.
    Is this related to v14? Would building a v15 app resolve the issue?
    or is there some other problem?
    Please advise...
    Full text of Apple rejection below...
    Nov 4, 2011 08:17 PM. From Apple.
    2.23
    We found that your app does not follow the iOS Data Storage Guidelines, which is not in compliance with the App Store Review Guidelines.
    In particular, we found magazine downloads are not cached appropriately.
    The iOS Data Store Guidelines specify:
    "1. Only documents and other data that is user-generated, or that cannot otherwise be recreated by your application, should be stored in the /Documents directory and will be automatically backed up by iCloud.
    2. Data that can be downloaded again or regenerated should be stored in the /Library/Caches directory. Examples of files you should put in the Caches directory include database cache files and downloadable content, such as that used by magazine, newspaper, and map applications.
    3. Data that is used only temporarily should be stored in the /tmp directory. Although these files are not backed up to iCloud, remember to delete those files when you are done with them so that they do not continue to consume space on the user’s device."
    For example, only content that the user creates using your app, e.g., documents, new files, edits, etc., may be stored in the/Documents directory - and backed up by iCloud. Other content that the user may use within the app cannot be stored in this directory; such content, e.g., preference files, database files, plists, etc., must be stored in the /Library/Caches directory.
    Temporary files used by your app should only be stored in the /tmp directory; please remember to delete the files stored in this location when the user exits the app.
    It would be appropriate to revise your app so that you store data as specified in the iOS Data Storage Guidelines.
    For discrete code-level questions, you may wish to consult with Apple Developer Technical Support. Please be sure to include any symbolicated crash logs, screenshots, or steps to reproduce the issues when you submit your request. For information on how to symbolicate and read a crash log, please see Tech Note TN2151 Understanding and Analyzing iPhone OS Application Crash Reports.
    To appeal this review, please submit a request to the App Review Board.

    You might want to check out our ANE (Adobe Native Extension) solution that enables your FB projects to abide by the Apple's Data Storage guidelines.
    https://developer.apple.com/library/ios/#qa/qa1719/_index.html
    Do Not Backup project:
    http://www.jampot.ie/ane/ane-ios-data-storage-set-donotbackup-attribute-for-ios5-native-ex tension/
    David
    JamPot.ie

  • I need a memory management/ data storage recomendation for my IMac 2 GH Intel Core 2 Duo

    Since giving my mid 2007 IMac a 2GB memory boost to accommodate Lion all has been well however my memory is full. I have a sizable ITunes library and 6000 photos in IPhoto, Me thinks I should store this all more effectively for the safety of the music and photos and for the well-being of the computer....but there seems to be choices. Is this where ICloud comes into play or time capsule or should I just get an external mini hard drive. Can anyone help me with some pearls of wisdom with data storage.

    Greetings John,
    There are two types of memory which you mention here.
    The 2 GB memory you refer to is RAM.  It is not used for storing information.  Rather for giving the computer a place to do much of its work.
    File storage is handled by the hard drive of the computer.
    If your available hard drive space is getting low you can move larger files to a Mac Formatted external drive:
    Faster connection (FW 800) drives:
    http://store.apple.com/us/product/H2068VC/A
    http://store.apple.com/us/product/TW315VC/A
    http://store.apple.com/us/product/H0815VC/A
    Normal speed (USB) drives:
    http://store.apple.com/us/product/H6581ZM/A
    Larger files can include entire databases like iTunes, iMovie, or iPhoto.
    Keep in mind that if you move these items to an external drive you will have to have the drive plugged in and powered on to access the data on them.  In addition, if you move important information off your internal drive to an external, you should be sure that your backup solution is backing up that external drive to keep your information safe.
    iCloud is not a file storage solution and TimeCapsule is not suited for storing databases like those mentioned above (its meant primarily as a backup solution).  I would stick with an external drive (1 to hold your big files and another one big enough to backup both your computer and the first drive).
    Here are some other general computer clean up suggestions: http://thexlab.com/faqs/freeingspace.html.
    Hope that helps.

  • Hi,i need to upgrade my 13"late 2011macbook pro with an ssd drive.i have noticed there is a system hard drive for booting up and a data storage hard drive that my computer uses,are these the same hard drive i can see inside my laptop?

    hi,i use logic pro 9 and cubase to record,produce and master audio recordings and have bought a mac as recommended.have upgraded to 8gig memory (which i was told was the maximum you could upgrade a macbook pro)and still my recordin is slightley behind plauback.i need to replace my hard drive with a solid state drive to solve the problem.i have seen on youtube how to replace the hard drive but have noticed on the disk partition information that there is a 500gig harddrive for the system(booting up ect)and a 500gig harddrive for data storage,are these the same unit?i need to be sure im upgrading what the system uses to an ssd as well as the data storage or the problem wont be solved.i have an external hard drive so i have been looking at a smaller,faster ssd. hope you can help!

    DaisyMay wrote:
    Firewire 400/USB 2.0/1.1
    I would recommend not settling for less then USB 3 or hold out for Thunderbolt, if your machine is capable. Firewire 800 minimum.
    MacBook Pro, Mac OS X (10.7), 2.4GHz IntelCore i5 320 HD 8GB RAM ParallelsDesktop6.0

  • Rejected...We found that your app does not follow the iOS Data Storage Guidelines,

    Where and how do I fix this?
    We found that your app does not follow the iOS Data Storage Guidelines, which is required per the App Store Review Guidelines.
    In particular, we found that on launch and/or content download, your app stores 3.54MB. To check how much data your app is storing:
    - Install and launch your app
    - Go to Settings > iCloud > Storage & Backup > Manage Storage
    - If necessary, tap "Show all apps"
    - Check your app's storage
    The iOS Data Storage Guidelines indicate that only content that the user creates using your app, e.g., documents, new files, edits, etc., should be backed up by iCloud.
    Temporary files used by your app should only be stored in the /tmp directory; please remember to delete the files stored in this location when the user exits the app.
    Data that can be recreated but must persist for proper functioning of your app - or because customers expect it to be available for offline use - should be marked with the "do not back up" attribute. For NSURL objects, add the NSURLIsExcludedFromBackupKey attribute to prevent the corresponding file from being backed up. For CFURLRef objects, use the corresponding kCFURLIsExcludedFromBackupKey attribute.

    You're submitting a Newsstand app, right? This error is still under investigation, but the current workaround is create SD (1024x768/768x1024) cover images for your HD (2048x1536) folio renditions and try again.
    More info here:
    http://forums.adobe.com/message/4730637#4730637

  • My iphone 4 has no data storage. I have deleted all apps, music and texts and it still says I only have 1.9 GB available. There is nothing in my storage.

    My iphone 4 has no data storage. I have deleted all apps, music and texts and it still says I only have 1.9 GB available. There is nothing in my storage.

    The problem could be that you don't have enough storage on the device itself, not on iCloud.  Go to Settings>General>Usage to see how much "Storage" you have available on the device.  Farther down the list is the available storage on iCloud.
    Also check:
    Go to Settings>iCloud>Storage & Backups>Manage Storage; there, tap the device you need info on and the resulting screen lists Backup Options with which apps store data on iCloud as well.  Tap Show All Apps to get the complete list of apps and MB used for backup storage.
    A device needs many MB of storage in order to perform a backup to iCloud.
    Also see:  http://support.apple.com/kb/ht4847`

  • TREX - Configuring Distributed Slave with Decentralized Data Storage

    I am creating a distributed TREX environment with decentralized data storage with 3 hosts.  The environment is running TREX 7.10 Rev 14 on Windows 2003 x64.  These are the hosts:
    Server 01p: 1st Master NameServer, Master Index Server, Master Queue Server
    Server 02p: 2nd Master NameServer, Slave Index Server
    Server 03p: Slave NameServer, Slave Index Server (GOAL; Not there yet)
    The first and second hosts are properly set up, with the first host creating the index and replicating the snapshot to the slave index server for searching.  The third host is added to the landscape.  When I attempt to change the role of the third host to be a slave for the Master IS and run a check on the landscape, I receive the following errors:
    check...
    wsaphptd03p: file error on 'wsaphptd03p:e:\usr\sap\HPT\TRX00\_test_file_wsaphptd02p_: The system cannot find the file specified'
    wsaphptd02p: file error on 'wsaphptd02p:e:\usr\sap\HPT\TRX00\_test_file_wsaphptd03p_: The system cannot find the file specified'
    slaves: select 'Use Central Storage' for shared slaves on central storage or change base path to non shared location
    The installs were all performed in the same with, with storage on the "E:" drive using a local install on the stand-alone installation as described in the TREX71InstallMultipleHosts and TREX71INstallSingleHosts guides provided.
    Does anybody know what I should try to do to resolve this issue to add the third host to my TREX distributed landscape?  There really weren't any documents that gave more information besides the install documents.
    Thanks for any help.

    A ticket was opened with SAP customer support.  The response to that ticket is below:
    Many thanks for the connection. We found out, that the error message is wrong. It can be ignored, if you press 'Shift' and button 'Deploy' (TREXAdmin tool -> Landscape Configuration).  We will fix this error in the next Revision (Revision 25) for TREX 7.1.

  • File path of open data storage

    Hello all!
    Now I'm using the blocks of open data storage, write data and close data storage for storing and extracting result data. For the file path issue, before I
    set the data path by double clicking the "open data storage" block and inserting the file location in the indicated place, and that worked!
    Now since I made a stand alone application of this program and shall use it in other computers, the file location I inserted in open data storage block isn't
    valid any more in other PCs. So I modified my source code by connecting a "current vi path" to the open data storage block's file path node instead of
    inserting it inside the block, and this doesn't work! During running there shows an error in the write data block saying that the storage refnum isn't valid!
    I'm wondering why I couldn't specify the file path like this. Any way to allow me to specify the file path as the current vi path?
    Thanks!
    Chao
    Solved!
    Go to Solution.

    You need to account for the path changes when built in to an application, have a look at this example.
    https://decibel.ni.com/content/docs/DOC-4212
    Beginner? Try LabVIEW Basics
    Sharing bits of code? Try Snippets or LAVA Code Capture Tool
    Have you tried Quick Drop?, Visit QD Community.

  • Append value with Data Storage Vis

    Dear,
    I would like to use the Data Storage VIs to collect my data but I can't achieve my target.
    I'm acquiring 1000 samples at 1kHz (N samples on demand) and I make the mean value of the samples. At the end of this proces I have a scalar value and the initial time at wich I have acquired the data. With this two I build a waveform and then I use the Write Data Storage Vi (TDMS) with "append" write mode to save my data.
    When I read the Data Storage all the value have lost the time information. They start from 1.00.00,000 01/01/1904 and are equal spaced in time.
    How can I keep the time information?
    Thanks

    Sorry totaly misread what you were doing.
    You need to create ensure that waverform that is saved has the correct values for X0 and dx when you save it. Use the build waveform function to acheive this.
    edit:
    the default value for X0 is timestamp 0 (1904), use get datetimestamp at the very start of the cycle to get the correct value.
    James
    Message Edited by James W on 04-21-2010 01:06 PM

  • SR830 data storage for rs232

    Hi,
    I found a LabVIEW code here which can storage data from input signal (e.g.A/I)in SR830 and transfer it by the GPIB.
    I used function generator to generate a sine wave with frequency:30Hz& Vp-p:100mVolt , conencting to SR830.
    Clearly ,I got a correct result when i used the code by GPIB communication interface(left graph).
    Than,I tried to change the communication interface RS232 to accept the same signal,but it has mistakes(right graph).
     Here is original code "data storage for GPIB"
    Here is rewrite code for RS232 by myself,but what's wrong i did?
    Attachments:
    SR830 DATA STORAGE EXAMPLE.VI ‏54 KB
    scan test1.vi ‏43 KB

    The SR830 expects three integer arguments (separated by commas) for the TRCA? query:
    * i = 1 or 2 specifies which buffer to download from
    * j >= 0 specifies the starting point
    * k>=1 specifies how many points to download
    If you know k, you can calculate the exact number of bytes in the response. For your code, which downloads 4000 points at a time, that will be something like 60 kB (if memory serves, the response in ASCII transfer mode is 15 bytes/value). Make sure that you're not hitting any timeout or serial buffer size limits with a transfer of that size.  
    Edit: You have your bitrate set to 9600 baud (1200 bytes/second) and a 10 second timeout. That will read 12 kB before timing out, or 1/5th of your transfer. The 830 supports baud rates up to 19,200, which will help, but you'll also need either a longer timeout or to transfer your data in smaller chunks. 

  • OWA 2007 Issue : Microsoft.Exchange.Data.Storage.VirusMessageDeletedException Could not get properties.

    Hi I am facing an issue with Outlook web access on my production server Exchange Server 2007 with Sp1. When i try to reply or forward a message from OWA it displays The message has been deleted due to a virus threat . Kindly refer to the below error details. I have a box with all 3 roles installed I do not have an Edge Server . IO have installed Forefront on the same Box as my exchange Server.Below is the Detail of  the error . Kindly Help
    A virus was found in this message and it has been deleted. For further
    information, please contact technical support for your organization.
    Click here to continue working.
     Copy error details to clipboard
     Show details
    Request
    Url: https://192.168.7.12:443/owa/forms/basic/BasicEditMessage.aspx?ae=Item&t=IPM.Note&a=Reply&id=RgAAAACFMIZq8d7LTqcPs%2bRZA5g%2bBwBDDZWeCojSQZ1bZZ7Ga%2fkWAAAAeCc6AABDDZWeCojSQZ1bZZ7Ga%2fkWAA5iTbjpAAAJ
    User host address: 192.168.7.11
    User: Munendra Pal Gangwar
    EX Address: /o=First Organization/ou=Exchange Administrative Group
    (FYDIBOHF23SPDLT)/cn=Recipients/cn=mp_gangwar
    SMTP Address: [email protected]
    OWA version: 8.1.336.0
    Mailbox server: PFCDELEXCH01.PFCDOMAIN
    Exception
    Exception type: Microsoft.Exchange.Data.Storage.VirusMessageDeletedException
    Exception message: Could not get properties.
    Call stack
    Microsoft.Exchange.Data.Storage.MapiPropertyBag.GetProperties(IList`1
    propertyDefinitions)
    Microsoft.Exchange.Data.Storage.StoreObjectPropertyBag.InternalLoad(PropertyDefinition[]
    properties, Boolean forceReload)
    Microsoft.Exchange.Data.Storage.StoreObjectPropertyBag..ctor(StoreSession
    session, MapiProp mapiProp, Origin origin, PropertyDefinition[]
    autoloadProperties, Boolean canSaveOrDisposeMapiProp)
    Microsoft.Exchange.Data.Storage.StoreObjectPropertyBag..ctor(StoreSession
    session, MapiProp mapiProp, Origin origin, PropertyDefinition[]
    autoloadProperties)
    Microsoft.Exchange.Data.Storage.Item.InternalBindItem(StoreSession
    session, StoreObjectId itemId, Byte[] changeKey, ItemBindOption
    itemBindOption, PropertyDefinition[] allPropsToLoad)
    Microsoft.Exchange.Data.Storage.Item.InternalBind[T](StoreSession
    session, StoreId id, ItemBindOption itemBindOption,
    PropertyDefinition[] allPropsToLoad)
    Microsoft.Exchange.Data.Storage.Item.InternalBind[T](StoreSession
    session, StoreId id, PropertyDefinition[] allPropsToLoad)
    Microsoft.Exchange.Clients.Owa.Core.Utilities.GetItem[T](StoreSession
    storeSession, StoreId storeId, Boolean forceAsMessageItem,
    PropertyDefinition[] prefetchProperties)
    Microsoft.Exchange.Clients.Owa.Core.Utilities.GetItem[T](UserContext
    userContext, StoreId storeId, Boolean forceAsMessageItem,
    PropertyDefinition[] prefetchProperties)
    Microsoft.Exchange.Clients.Owa.Core.Utilities.GetItem[T](UserContext
    userContext, StoreId storeId, PropertyDefinition[] prefetchProperties)
    Microsoft.Exchange.Clients.Owa.Basic.EditMessage.LoadMessage()
    Microsoft.Exchange.Clients.Owa.Basic.EditMessage.OnLoad(EventArgs e)
    System.Web.UI.Control.LoadRecursive()
    System.Web.UI.Page.ProcessRequestMain(Boolean
    includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
    Inner Exception
    Exception type: Microsoft.Mapi.MapiExceptionVirusMessageDeleted
    Exception message: MapiExceptionVirusMessageDeleted: Unable to get
    properties on object. (hr=0x80004005, ec=1294) Diagnostic context:
    Lid: 18969 EcDoRpcExt2 called [length=479] Lid: 27161 EcDoRpcExt2
    returned [ec=0x0][length=422][latency=15] Lid: 23226 --- ROP Parse
    Start --- Lid: 27962 ROP: ropOpenMessage [3] Lid: 17082 ROP Error:
    0x50E Lid: 26977 Lid: 21921 StoreEc: 0x50E Lid: 27962 ROP:
    ropExtendedError [250] Lid: 1494 ---- Remote Context Beg ---- Lid:
    1238 Remote Context Overflow Lid: 14164 StoreEc: 0xFFFFFA1D PropTag:
    0x672D0003 Lid: 8660 StoreEc: 0x8004010F PropTag: 0x672D0003 Lid:
    21970 StoreEc: 0x8004010F PropTag: 0x672D0003 Lid: 23921 StoreEc:
    0x3EC Lid: 21970 StoreEc: 0x8004010F PropTag: 0x672F0014 Lid: 23921
    StoreEc: 0x3EC Lid: 21970 StoreEc: 0x8004010F PropTag: 0x6708000B Lid:
    21970 StoreEc: 0x8004010F PropTag: 0xE960102 Lid: 21970 StoreEc:
    0x8004010F PropTag: 0x6708000B Lid: 21970 StoreEc: 0x8004010F PropTag:
    0xE960102 Lid: 21970 StoreEc: 0x8004010F PropTag: 0x67760102 Lid:
    25394 Lid: 19506 Lid: 27698 Lid: 11285 StoreEc: 0x50E Lid: 21970
    StoreEc: 0xFFFFFC07 PropTag: 0x30080040 Lid: 25818 Lid: 6153 StoreEc:
    0x50E Lid: 25906 Lid: 5249 StoreEc: 0x50E Lid: 1750 ---- Remote
    Context End ---- Lid: 27962 ROP: ropGetPropsSpecific [7] Lid: 17082
    ROP Error: 0x4B9 Lid: 26465 Lid: 21921 StoreEc: 0x4B9 Lid: 27962 ROP:
    ropExtendedError [250] Lid: 1494 ---- Remote Context Beg ---- Lid:
    26426 ROP: ropGetPropsSpecific [7] Lid: 1750 ---- Remote Context End
    ---- Lid: 26849 Lid: 21817 ROP Failure: 0x4B9 Lid: 20385 Lid: 28577
    StoreEc: 0x50E Lid: 32001 Lid: 29953 StoreEc: 0x50E
    Call stack
    Microsoft.Mapi.MapiExceptionHelper.ThrowIfError(String message, Int32
    hresult, Object objLastErrorInfo)
    Microsoft.Mapi.MapiProp.GetProps(PropTag[] propTagsRequested)
    Microsoft.Exchange.Data.Storage.MapiPropertyBag.GetProperties(IList`1
    propertyDefinitions)

    I had this same issue, except I have Symantec mail security not Forefront. It wound up being a line in the adult content filter. For whatever reason, they included "If you received this email" as one of the literal strings. This is probably part
    of almost every corporate confidentiality clause I have ever seen!! go figure......
    Thanks for the event log hint- since I have the adult content set to delete, I had no good tracking mechanism in Exhange or SMSME. I set email notifications for the future on these.
    Brent
    I had this same problem, but I have ESET Mail Security Server. in some one case the problem y solved if I attach the "user@domain" in the "white
    List". But in many case the problem is continuous. I have Exchange 2007 in MS Windows Server 2003.
    Thanks for yours help.

  • Exchange 2010 SP3 UR2 and Event 4999 = AirSync, M.E.Data.Storage, M.E.D.S.AppointmentTombstone

    Hello together,
    i'm having the following event on my cas servers every about 30 minutes:
    Event 4999 MSExchange Common
    Watson report about to be sent for process id: 5780, with parameters: E12, c-RTL-AMD64, 14.03.0151.000, AirSync, M.E.Data.Storage, M.E.D.S.AppointmentTombstone..ctor, System.OverflowException, 7f09, 14.03.0158.001.
    ErrorReportingEnabled: False
    it looks like it is a known bug fixed in SP3 UR3 (http://support.microsoft.com/kb/2891587/de) ?
    http://support.microsoft.com/kb/2888911/de
    they are talking there about a workarround to delete the problematic "thumbstone data". but how to find and identiy them before deletion ?
    "To work around this issue, use the MFCMAPI tool to remove the corrupted tombstone data."
    thanks for feedback,
    best,
    martin

    Hello Martin,
    I have a user who is having this exact same issue. I know this thread is a few months old, did you ever find an answer to where the corrupted tombstone data was located at?
    thanks,
    Emmanuel Fumero Exchange Administrator

  • Data storage and read

    Hello all,
    I got a problem in data storage and read. I used the combination of "Open data storage", "Write data" and "Close data storage" to store some data as an array as shown below.
    And used the inverted combination to read data as shown below:
    As shown the data file is in tdm form. This works fine in my computer, both the VI and the stand alone application. However when I run the stand alone application in a target pc, the storage file can't be generated!
    I don't know if it's the problem of my code or the problem of the target pc, since the target pc has tiny memory card with few drivers installed. I'm wondering if anybody could help me fix this problem. If there's other way I can store and read the file? or if I can make the target pc generate the tdm file.
    Thanks!
    Chao
    Solved!
    Go to Solution.

    What error is being presented when the file isn't being generated?  Is it an error with permissions?  Or an error with a folder not existing?  Can you manually make a file in the location where you expect the file to be generated?
    Unofficial Forum Rules and Guidelines - Hooovahh - LabVIEW Overlord
    If 10 out of 10 experts in any field say something is bad, you should probably take their opinion seriously.

Maybe you are looking for

  • Required to change the Baseline Date in the MIRO Invocie Document

    Dear Friends, According to the Payment Terms, while doing the MIRO, the Baseline Date getting populated corresponds to the Document Date. However, the users need to replace the same with the GR Date. Is there a way to check for the GR date or the Del

  • .pdf files come up as web links instead of documents

    when I send adobe standard XI produced files to a certain customer they come up as web links instead of documents.  This customer says that they are having no problem opening documents from other people. Any help with this will be appreciated.

  • Not able to print in color after changing cartridge

    Hi. Using a Mac OS X 10.6.8 with an HP Officejet J6480 printer. No problems in the past but just changed both black and white and color cartridges (new- not refurbished) and it's not working. When I look at a preview it's also only in B&W. I've tried

  • Reg: How to add new tab strip in MIGO transaction

    Hi Experts, I need to add a new tab strip(Inside one selection screen, If the user clicks the new tab strip, New selection screen should populate) in MIGO transaction after pressing enter for the movement type '122'. I tried with the BADI MB_MIGO_BAD

  • Error running UploadJars.sh

    Hi All, I'm getting the following error when trying to run the UploadJars utility. Any suggestions would be appreciated... [oracle@toim02 bin]$ ./UploadJars.sh ./UploadJars.sh: line 30: /bin/java: No such file or directory [oracle@toim02 bin]$ export