Some questions on efficient serial read and speeding up data processing

I have this flow meter that spits out two strings when queried with command "x" : Date:time, and then Meter #1 xxxx.xxxx SCFM . All that the x does is query the meter to display its status. The serial readout from the meter is intended to only duplicate the value present on the little lcd that the meter has. It's not meant for controlling and my discussion with the company was that while not ideal, parsing the string is the only way to get useable info from it. I only need the flow value and there is no way that it will just output that string. So I have it set up to search for the meter name, and if this has a value find the number. Before I did not have the true false case but it meant that the flow would state zero every time that it received the date:time string. My questions are:
Is this the only way to do this? both in terms of finding the number I need and making sure that it is always updated properly.
Right now I have a delay in the while loop because if I sample too fast, I oversample the buffer and get no useable string data (get one letter or no value at a time). Is there any way to remove this and have continous sampling?  I thought about reducing the wait time to 25ms, searching for a series of characters like #, 1, and parsing the string character by character, but the vi moves too fast to capture all of the data. If I put in a buffer delay I am right back where I started with the longer delay.
Is there anything else I can do to make this code more efficient and better sample the flow meters output?
Attachments:
Serial Test.vi ‏15 KB

Does the device send back a termination character such as a line feed or carriage return?  If so, you should be using that to terminate your read after reading a large number of bytes.
Right now, your Write/Read sequence is in an odd order.  First you check number of bytes, then you write the X, then you read that original number of bytes immediately after sending the x.  Since it was probably 0 at the port when the loop started, you initially read 0 bytes.  Then the next iteration, (assuming your loop rate was slow enough, you'll get bytes as the port based on the X written in the previous iteration.
You need to write the X, delay a period of time, then do bytes at port (assuming you can't use the termination character, and you have a different number of bytes every iteration that you can't rely on), then read that number of bytes.

Similar Messages

  • How to read and write a data from extrenal file

    Hi..
    How to read and write a data from extrenal file using Pl/sql?
    Is it possible from Dyanamic Sql or any other way?
    Reagards
    Raju

    utl_file
    Re: How to Create text(dat) file.
    Message was edited by:
    jeneesh

  • How to Read and Write .XML datas   (HELP Plz...)

    hai everybody
    how to read and write xml datas... plz give clean and simple example..
    bcoz me want to produce such type of module...
    if any one help me .. thats the only way me laid in software ladder
    plz....
    thank u in advance

    thank u for giving idiot..
    but before posting i search in google also..
    but i cant get what me expect..
    thus i posted...
    then who is ................?
    sorry javacoder01
    // plz help me
    Message was edited by:
    drvijayy2k2

  • Does Aperture read and display XMP data generated by LR?

    Does anyone know if Aperture reads and displays XMP data generated by LR? I am not interested particularly in keywords.

    Thanks for the quick reply, William.
    I would suggest to David Schloss and AUPN that this would be a feature worth supporting. Although, hopefully both new software and improving skills in using them make me less concerned about preserving a static conversion or interpretation of an image, I think that whatever software we use to read/exchange keywords and other IPTC data is a constant.

  • Queue, Program speed on multiple Serial read and other problems

    Hi,
    Working on a relatively big program on Labview that makes
    1. data acquisition from 2xSerial devices
    2. Splitting the outputs,
    3. Showing the results
    4. Doing some alghorithms
    5. Outputing to CSVs.
    I have limited knowledge on serial methodologies and quequing in labview but through reading many posts in the forum i succeded to create this program which includes the above functions.
    Although that, I have several problems which I didnt solve:
    1. The quite button on the Graphs tab is not function correctly. This results in unabling to close the VISAs. How to handle the queques that in one button I can clear all the queques and exit the program correctly?
    2. While reading both serials, the program is going slow (I have i5 with SSD drive and 8gb RAM so I don't think its CPU problem). If I disable one of the serial or sending 'nothing' to one of the serials, the program going back to normal speed. Any suggestions in this issue?
    3. Both serials works with different configuration functions - I used that as I make a trial and error and this is the best operation for each of them. Is this correct or am I missing something?
    The main VI is "NVs_V1.6.vi"
    Thanks for your answers and feedback
    Sagi
    Attachments:
    Nvs.zip ‏973 KB

    You should only have 1 loop the dequeues from a specific queue.  Once an element is dequeued, that element is gone, meaning that no other loop can get that data.  You need to use a different queue for your two other loops.
    There are only two ways to tell somebody thanks: Kudos and Marked Solutions
    Unofficial Forum Rules and Guidelines

  • Some questions on Labview under KDE4 and GNOME

    I have some questions regarding KDE4 an GNOME with Labview for Linux. I'm trying to help a colleague get somethings working with regards to these desktop environments.
    1. KDE4: When I try to open a VI directly through Dolphin (the default file manager under KDE4)..and the file (lets say ABCD.VI) is located in say /home/user/Test VI/ABCD.vi. When I double click, Labview starts and says that "/home/user/Test" is not a valid VI and it just errors out and refuses to open. It refuses to honor any whitespaces under KDE4 is what I've noticed. I haven't noticed this under KDE3. 
    2. GNOME: There are no icons for .vi files after installation, even though the desktop support for GNOME is installed during the install process.  
     Would appreciate some help!

    Hi Anshul,
    What version of Mandriva do you see this in?  We only official test for and support a couple distributions (SUSE is only supported up to 10.3): http://digital.ni.com/public.nsf/websearch/35D2B5E483A001A18625716B005BE464?OpenDocument 
    Regards,
    Jeremy_B
    Applications Engineer
    National Instruments

  • Some files I can't read and write to my socket!?

    I have the following code that writes files to my socket:
    OutputStream out = new BufferedOutputStream(socket.getOutputStream());
    File f = new File(SOME_PATH);
    InputStream fin = new FileInputStream(f);
    int n;
    while((n = fin.read()) > 0) {
      out.write(n);
    out.flush();
    fin.close();And the following reads this file from the socket, and writes it to another file on the server:
    InputStream in = new BufferedInputStream(socket.getInputStream());
    File f = new File(SOME_PATH);
    OutputStream vos = new FileOutputStream(f);
    int n;
    for(int i=0;i<fileSize;i++) {
      n = in.read();
      vos.write(n);
    vos.close();
    vos = null;"fileSize" is always the size of the file, I'm pretty sure here.
    I can transfer both binary and text files, but not all text files. Why is that? How do I fix it?

    Another way is to have an object that represents the file...and then it can contain the filename and other stuff...
    public class MyFile
       private String filename = "";
       private byte[] filecontents = null;
    }If you then use an ObjectOutput/InputStream then you can read the file in wholesale...
    However if you are having "other" commands that you read from the stream then it wouldn't solve that problem!
    Another way is to use the ISDN method, more complex but effective, that is to have a control channel and a data channel...i.e. one stream for sending commands, another for sending data in response to commands...one issue there though is that of synchronization...
    Another potential method is to use XML to provide a "data envelope" that encapsulates the file...
    i.e.
    <file filename="[name]">
    <![CDATA[
       <!-- File contents go here, could be binary/plain text -->
    ]]>
    </file>Of course using XML in this way has it's own problems...
    Overall if you already have a working system in place then I'd stick with that, but those are some ideas!!!

  • What is the best way to read and manipulate large data in excel files and show them in Sharepoint

    Hi ,
    I have a large excel file that has 700,000 records in it. The excel file has a few columns that change every day.
    What is the best way to read the data form the excel file in fastest and most efficient way.
    2 nd Problem,
    I have one excel file that has many rows each row contain some data that has certain keywords.
    What I want is  to segregate the data of rows into respective sheets(tabs ) in the workbook.
    for example in rows have following data 
    1. Alfa
    2beta
    3 gama
    4beta
    5gama
    6gama
    7alfa
    in excel
    I want there to be 3 tabs now with each of the key words alfa beta and gamma.

    Hi,
    I don't really see any better options for SharePoint. SharePoint use other production called 'Office Web App' to allow users to view/edit Microsoft Office documents (word, excel etc.). But the web version of excel doesn't support that much records as well
    as there's size limitations (probably the default max size is 10MB).
    Regarding second problem, I think you need some custom solutions (like a SharePoint timer job/webpart ) to read and present data.
    However, if you can reduce the excel file records to something near 16k (which is supported rows in web version of excel) then you can use SharePoint Excel service to refresh data automatically in the excel file in SharePoint from some external sources.
    Thanks,
    Sohel Rana
    http://ranaictiu-technicalblog.blogspot.com

  • Read and Modify NTUser.DAT file

    Hello All,
    I've to perform the uninstall operations of activesetup in a console application based in C#.
    The tasks is to mount the NTUser.Dat file of all the users of system and search the HKLM and HKCU hives of each user and remove corresponding registry entries related to activesetup.
    I've found the RegLoadKey method but couldn't found the read and modify methods to treat NTUser.dat for my requirement.
    I've found one link:-
    https://www.daniweb.com/software-development/vbnet/threads/108278/load-registry-hive
    But even this doesn't perform the required operations.
    Please share some suggestions or Code examples to perform this operation?
    Thanks in Advance.
    TECHIT_ASHISH

    Hi
    TechIT_Ashish,
    The Ntuser.dat file is a registry file. Each user's Ntuser.dat file contains the registry settings for their individual account. The Windows registry, as described by Microsoft, is a "central hierarchical database" that contains information about
    the software, hardware and user profiles contained on a computer.
    So about read that file, the.NET Framework supports a lot and in C# the RegistryKey class.
    You can use the
    RegLoadKey P/Invoke.
    [DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=true)]
    public static extern int RegLoadKey(uint hKey,string lpSubKey, string lpFile);
    //API'used
    // Loading a Hive "C:\NTUSER.DAT"
    RegLoadKey(HKEY_USERS,"NTUSER.DAT",@"C:\NTUSER.DAT");)
    You can get some hints from Load registry hive from C# fails 
    Modify NTUser.DAT file, I am afraid there is no some build-in method in .Net Framework, after some research, I've found use Script to modify ntuser.dat.
    http://www.experts-exchange.com/Networking/Windows_Networking/Q_21220278.html
    http://blogs.technet.com/b/deploymentguys/archive/2008/06/06/useful-script-number-5-adjusting-the-default-user-registry-hive.aspx
    Note: This response contains a reference to a third party World Wide Web site. Microsoft is providing this information as a convenience
    to you. 
    Microsoft does not control these sites and has not tested any software or information found on these sites;Therefore, Microsoft
    cannot make any representations regarding the quality, safety, or suitability of any software or information found there.
    There are inherent dangers in the use of any software found on the Internet, and Microsoft cautions you to make sure that you
    completely understand the risk before retrieving any software from the Internet.
    Best regards,
    Kristin
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • Memory leak in Real-Time caused by VISA Read and Timed Loop data nodes? Doesn't make sense.

    Working with LV 8.2.1 real-time to develop a host of applications that monitor or emulate computers on RS-422 busses.   The following screen shots were taken from an application that monitors a 200Hz transmission.  After a few hours, the PXI station would crash with an awesome array of angry messages...most implying something about a loss of memory.  After much hair pulling and passing of the buck, my associate was able to discover while watching the available memory on the controller that memory loss was occurring with every loop containing a VISA read and error propogation using the data nodes (see Memory Leak.jpg).  He found that if he switched the error propogation to regular old-fashioned shift registers, then the available memory was rock-solid.  (a la No Memory Leak.jpg)
    Any ideas what could be causing this?  Do you see any problems with the way we code these sorts of loops?  We are always attempting to optimize the way we use memory on our time-critical applications and VISA reads and DAQmx Reads give us the most heartache as we are never able to preallocate memory for these VIs.  Any tips?
    Dan Marlow
    GDLS
    Solved!
    Go to Solution.
    Attachments:
    Memory Leak.JPG ‏136 KB
    No Memory Leak.JPG ‏137 KB

    Hi thisisnotadream,
    This problem has been reported, and you seem to be exactly reproducing the conditions required to see this problem. This was reported to R&D (# 134314) for further investigation. There are multiple possible workarounds, one of which is the one that you have already found of wiring the error directly into the loop. Other situations that result in no memory leak are:
    1.  If the bytes at port property node is not there and a read just happens in every iteration and resulting timeouts are ignored.
    2.  If the case structure is gone and just blindly check the bytes at port and read every iteration.
    3.  If the Timed Loop is turned into a While loop.
    Thanks for the feedback!
    Regards,Stephen S.
    National Instruments
    Applications Engineering

  • Read and store XML data

    I have created a connection to a sample XML file and was wondering how you would go about reading from that data source and storing the data using JavaScript so that different data can be displayed based on user choices (e.g. dropdown list)? Can this data also be stored so that an end-user can open the PDF without needing to have a local copy of the XML file on their machine?

    I have created a connection to a sample XML file and was wondering how you would go about reading from that data source and storing the data using JavaScript so that different data can be displayed based on user choices (e.g. dropdown list)? Can this data also be stored so that an end-user can open the PDF without needing to have a local copy of the XML file on their machine?

  • Is there a way to use the FF vi's to read and write complex data types; specifically, clusters?

    I'm trying to interface with a Fieldbus device through LabVIEW.  I need to be able to read and write a variable that consists of a cluster of two unsigned int 32's.  The FF vi's provided with FF Communications Manager 3.2 do not support clusters.  I have tried to use a code interface node to write my own, but the CIN's I was using before to do this function do not give me a device list anymore (they were originally written on Communications Manager 2.3.5).  I have recompiled the .lsb, as well as trying to use the older versions of the header and library files.  Is there another workaround I can use?

    Hello Bryan,
    The BrowseDeviceList VI was released within NI-FBUS 3.2. For NI-FBUS Configurator 3.1, please unzip the attached file and copy the "addon" and "Ff" folders into "\vi.lib" directory. LabVIEW 7.1 or above version is required for using these addons.
    And for your information, there is a free upgrade (version 3.1.1) for NI-FBUS Configurator 3.1 users. Here is the link to the upgrade kit.
    http://digital.ni.com/softlib.nsf/websearch/00A1614EC291219586256F390020671B?opendocument&node=132070_US
    Hope it helps!
    Regards,
    --Josiane
    Attachments:
    locate_fflv_in_labview82.jpg ‏214 KB
    vi.lib.zip ‏391 KB
    locate_fflv_in_labview71.jpg ‏193 KB

  • Some questions about Java deployment steps and techniques

    All my java experience is coding and testing in my local machine (where, of course, a jre is available), but ... when I deploy to other people, they may not have a jre or they may have a different version of it than the one needed to run my application. I've read different stuff online including jars and java web start but still I have many questions.
    (1) first one first, Sun contradicts common sense, when it says that i can redistribute my own customized light version of their jre by taking out some files (java.sun.com/j2se/1.5.0/jre/README). there are two ways for me to get a jre: Way one is by downloading one from Sun, the download comes as an *.exe file and I don't see how I can take files out of it, so do you know how?. Way two would be by simply copying the set of files i choose (according to that Readme) from my current jre installation (the one on my \java\jdk\jre directory), does this make sense?, (if you're under windows) doesn't an installed version of a jre need a couple of dlls plus some new registry entries?, this contradicts common sense, if I'm not wrong, that Readme is a nonsense, but since that readme is at each of us jre installation \java\jdk1.x\jre\Readme, it can't be a nonsense, therefore I'm wrong, therefore the answer is either Way 1 or Way 2, HOW? ... or maybe there's a Way 3?
    (2) Say I never read that Readme so I download the jre (as an exe) to bundle it along with my application in a jar ... now I'll give my neighbor either a jar with two exes or two exes jars ... is there a way to make a jar so that two files get executed? ... if the answer is No and I have competition from a second neighbor, then I believe I'm asking my first neighbor to choose my application based on our friendship, that's not reasonable if we are doing business, so Java loses.
    (3) Say that my application is a single executable file like this,
    class X{
    public static void main(String[]$$$){
    System.out.println("Console, where are you?");
    At this point, say that my neighbor accepted the two executables, he executed the jre.exe and has jre6 in his system, now he double clicks on my X.jar ... it's a console application and jar files are not associated with the java.exe launcher since java 5, but with javaw which doesn't open any console ... how do i make it so a console opens and prints "Console, where are you?" ... do I ask my neighbor-customer to add a couple of lines to his path and open his console and (please) enter java -jar jarfile.jar? ... isn't it too much? ... i hope i'm wrong cause this is kind of discouraging
    (4) I've read that by installing a more recent version of a jre on a system that has an older jre (there to help other applications work), I might be causing a problem for the other applications to run ... I guess that's the reason why that Readme kind of encourage to redistribute a "private" version of a jre (one that doesn't come with a java.exe launcher ... any feedback on this?
    (5) I'm reading a lot of hype about Java Web Start ... it looks better than the traditional jar/jre deployment ... but setting up a MIME type to *.jnlp, it doesn't come with some free hosting I've checked ... somebody can recommend a free hosting service that allows to set a *.jnlp MIME? (I'll appreciate a suggestion here, cause I would like to test Web Start)... and, anyhow, how you people compare it with the paradigm of the single executable file?.
    Thanks. Your feedback is highly appreciated.

    jorgelbanda wrote:
    ..(5) I'm reading a lot of hype about Java Web Start ... It's gratifying to think that someone who wants to deploy apps., has the common sense to search first! You would not guess how I often I hear "I wanna' make an EXE" shortly followed by "What's webstart?".
    ...it looks better than the traditional jar/jre deployment ... but setting up a MIME type to .jnlp, it doesn't come with some free hosting I've checked ... OK. You cannot define new mime types, but perhaps the site already has it defined. An easy way to check is to upload 'any old file' that ends in .jnlp and use the [mime type checker|http://pscode.org/mime/] to see what content type it is served as.
    ..somebody can recommend a free hosting service that allows to set a .jnlp MIME? (I'll appreciate a suggestion here, cause I would like to test Web Start)... I'm pretty sure the Google based sites offer it.
    Note that I edited the asterisks out of your post, to avoid the forum software parsing half the reply as bold.

  • Some question about mdm java api and portal content

    Hi Gurus,
    I am new to MDM. I am going to develop some web dynpro application using mdm java api.
    My question is regarding the relationship between MDM version and NW version:
    for example
    1.MDM5.5 JAVA api can be deployed to CE 7.11 server?
    2.MDM7.1 JAVA API can be deployed to CE 7.11 server? or can only be deployed to CE server.
    the same question for the MDM portal content.
    the possible dev environment  for our company would be:
    1.MDM7.1
    2.CE7.2(do we need another EP7 server for the UWL?)
    Best regards,
    John

    Hi,
    I am using Portal 7.0. MDM version is 7.1.
    My problem is ... i am trying to connect WebDynpro (JAVA) to MDM7.1. But am unable to do so. I have a WD Frame in which i have a WD iView and the MDM iView. But i am unable to pass parameters from the WD iView to MDM Item Details iView.
    Note:
    1. I have deployed MDM JAVA API on NWDS
    2. I have specified " * " as a parameter to pass from the URL in the Item Details iView.
    Please help.
    Every help that i have read talks about CE7.1 but not NW 7.0
    -Alpana

  • Some questions about Unity 4.0 and IPC

    I have a couple of questions and I was looking for "real world" answers, not specific answers from the design guide.
    1.What is this bandwidth requirement between Exchange and Unity and what is it used for?
    2. What sort of issues would we experience if we placed the Unity UM Server at the Colo and placed the Exchange server at the customer premise; with a single T1 between the sites?
    3.What else is involved with a Unity UM install vs. a Unity VM install?
    4.Does the Unity UM and Exchange servers have to be running AD?
    5. Can Unity or the Exchange box be the Domain Controller? Or does it need to be a separate server?
    6. Where does a vm message get streamed from? The Unity server or the Exchange server?

    No you do not pay for FaceTime. It uses your WiFi network, so if you have access to WiFi it is free.
    There is no server required for FaceTime, it will use a direct device to device protocol.
    I can't answer the question about using phones in different countries as that will depend on if you buy a phone that is locked to a carrier.
    If you buy a phone in Germany and it is locked to a German phone network then it will most likely not work with a SIM from Turkey. You would need to buy an unlocked phone which are very expensive as they do not have any carrier subsidy applied to the price.

Maybe you are looking for