RS 232 with more than 1000 Hz

I am trying to read out data from a serial port which is given out constantly by a measurement device at a predefined rate (up to 4000 Hz). It is connected via USB which creates a virtual Com-port with a baudrate of 921600. Communication works with the device. In order to transfer these high rates the data stream of the device is set to binary ("$BIN" command). I use the VISA-read to get the data. The problem is that there occur bad (zero) values if I increase the data rate to 1000 Hz or higher. Is Labview not able to handle it? Or is it a buffer problem? Please check the attached VI. Is it possible to transfer the data stream at the given frequency to Labview?
Thank you,
Karsten 
Attachments:
CHR2.vi ‏127 KB

Thanks for the mods and comments.
The instrument can be connected by RS232 or USB. The USB connection creates a virtual Com port, so I thought it was equivalent?
I placed the "close visa" inside the loop because I get a buffer overrun else. But it's logical that this takes time :-/
About the transmission format... As far as I see it I only need 4 bytes per transmitted set of data.
I copy a part from the instrument handbook here:
8.3 Data telegram format
The CHRocodile E supports RS232 with extended Data rate (921600/sec)
and USB Full speed (12MBit/sec) interface.
The interface does not use hardware or software handshake. The computer
must therefore be able to receive the incoming data flow at any time in order
to correctly receive the acquired data. The possible Baud rate ranges from
9600/sec to 921600/sec, but the highest possible Baud rate should be
preferred in order to be able to use the high measuring rate of up to 4 kHz
which is provided by the CHRocodile E.
The Baud rate is set via the keyboard ([F4] > [F3]…: serial port baud rate).
During normal operation the CHRocodile E continuously sends data
telegrams. The telegram rate is determined by the CCD-Scan rate divided by
the selected average number.
The telegram consists of up to 16 data words, each 16 bits wide. These
words can be transmitted either as numbers represented in ASCII characters
or binary as 2 bytes with the MSB transmitted first.
ASCII mode
data 0,data 1,....,data N CR/LF
The enabled data words (selected by $SOD command) are output in ASCII
representation, each 5 characters long, ranging from 00000 to 65535,
separated by commas.
The telegram is concluded with carriage return / linefeed.
It should be noted that the ASCII mode does not enable the transmission of
the results at the full measuring speed of 4 kHz due to the inefficiency of the
coding. For high speed data transfer, the binary mode must be used.
Binary mode
Telegram format: (the values between the <> signs mean one transmitted
byte. The prefix 0x indicates hexadecimal notation.)
<SSByte1>,<SSByte2>,<data 0 MSB>,<data 0 LSB>,...,<data N MSB>,<data N LSB>
Each telegram consists of the selected data words, high byte first, and
begins with the synchronisation sequence SSByte1, SSByte2.
This sequence is equal to 0xFF, 0xFF after power up, but it can be changed
by $SSQ-command.
It must be noted that it is not sufficient to wait simply for the occurrence of
this synchronisation sequence since it can occur also in the binary data
stream (like the stop and start bit in continuous serial transmission can be
ambiguous). It is intended that this sequence is used only to synchronise the
entire data flow, not a single telegram. Since the length of the telegram is
known, a transmission once synchronised will stay synchronous and the
synchronisation sequence is only used to prove the state of
synchronisationThere are two ways to achieve synchronisation:
• stop the data flow by sending a command. After completion of the
command the sequence ”ready CR/LF” will be sent and the CHRocodile E
starts with a new telegram.
• when you don’t receive the synchronisation sequence at the expected
place, wait for the synchronisation sequence. This will synchronise the
data flow in a few cycles since the transmitted data words are usually
changing.
Be careful that the chosen combination of Baud rate, Sample rate, Average,
Data format and selected output data permits full telegrams to be sent.
You should calculate 10/Baud rate+1 μsec per byte sent.
Example
This permits for example
1/1000Hz /(10/115200Bd+0.000 001sec) =11,39 ≈ 10 bytes = 2Bytes (synchronisation
sequence) + 4*2 Bytes (Data)
to be transmitted at 1 kHz Data rate in binary mode.
For example one transmitted set of data is (decimal notation) "255 255 077 184".

Similar Messages

  • List with more than 1000 elements

    I'm trying to use this query:
    select *
    from street
    where street_cod in ('street_code_list')
    It working well when the 'street_code_list' has less than 1000 codes but it fails when it have more, with a message that says that a list can't have more than 1000 elements. How can I fix this problem? Can I use any other kind of object to store my list?
    I'm querying the database in ColdFusion using ODBC.
    Thank you in advance,
    Rui

    Another thing to consider doing is simply creating a "list table" which would contain your list elements and allow you to do a
    SELECT X
    FROM Y
    WHERE X IN (SELECT X
    FROM Z)
    type query.
    I don't know where you are getting your list from, but if it is persistant (i.e, doesn't change with every program run) this is certainly a viable option (and may be usable even if the list does change every run).
    If this is being executed in PL/SQL (or some other procedural language) you could also just loop through your list: execute the query with the first 1000 list elements and do your processing, then the next, and so on. Of course, to some extent this depends on your processing, but if you need the entire result set before you can process it, then you could store the individual result sets in a PL/SQL table or an array (if you are using Pro*C or whatever) and then process when the PL/SQL table/array was fully populated.

  • IN operator with more than 1000 values

    Hi,
    For a given list of IDs (PKs), I need to fetch the corresponding rows.
    The problem is that I have more than 1000 values and as far as I know that IN operator is limited to 1000
    values.
    I thought about using UNION such that each Select contains up to 1000 IDs.
    example":
    select * from temp where id in(1....1000)
    union all
    select * from temp where id in(1001....2000)
    Is there a better way to do that?
    Thanks
    dyahav

    As others have presented technical solutions, i'll present you a logical one (seemingly logical anyways, but it will depend on your application).
    I have seen some applications where you get
    select * from some_table where ... <conditions>;That result set is returned to the front end and presented to the users who then pick a series of records and submit another request to the database which ends up being...
    --note, this could be a many table join, with lots more information that just the some_table, this is illustrative only
    select * from some_table where pk_value in (super_super_duper_list_based_on_last_result_set);If this mimics what you have in your application, i'd recommend just fixing it so the users can select a reasonable set of data, OR the entire set (in the last case you'd just send the <conditions> instead of a massive list of PK values).
    Again, highly speculative but i thought i'd mention it in the off chance it's useful to you.

  • Error occurs when executing an item in an inbox with more than 1000 entries

    Hi Everyone,
    One of our approvers in SRM experienced an error when his inbox contained more than 1000 entries .  Further execution on any inbox item produces errors.
    Would you know where to set the maximum allowable entries in a user's inbox? Can this be set thru SRM config or Basis functionality?
    We also searched for existing SAP Notes but found nothing.
    Your inputs and help are greatly appreciated.
    Thanks and Regards,
    Vhong

    Hello,
    The user has sent me the screen shot. But this has no error messages. The approval transaction shows an ITS screen/code with template 'bbpapproval/99/saplbw02_1200.html'
    However, we have a user in Quality where the page displays with no problem and with 1675 Entries.
    Do you think this is more of an ITS setting or any Template/JavaScript issues?
    I got this code (view source code) earlier today and the topmost header of the code is:
    <!--
    This page was created by the
    SAP Internet Transaction Server (ITS, Version 6200.1025.7214.5, Build 908978, Virtual Server Q36, Add. service info none, WGate-AGate Host esetnmw028, WGate-Instance Q36)
    All rights reserved.
    Creation time:  Mon Mar 15 07:21:39 2010
    Charset:        iso-8859-1
    Template:       bbpapproval/99/saplbw02_1200.html
    -->
    Regarding the not-so-good practice of approvers to have more than 1000 entries in their inbox, we are still in the process of planning on how to divide the task to different approvers since there is only one approver (Project Manager) for the related network.
    Thanks and Redards,
    Vhong

  • Oci error in report 6i in reports with more than 1000 pages

    hi
    in a report that has more than 1000 page output , run in report 6i while formatting pages an error occurs:
    OCI error.==>SELECT NAME,
    what this means?
    please help me.
    CAROL.

    in reports that i know number of pages for example 1100 pageswhile formatting pages 150-200 this error occurs.
    Did you get the error if total report pages < 1100?
    indeed in another report with about 3500 pages output this error not occurs. Any diff. of setting/limits etc. between your two reports?

  • Vector or ArrayList  use for dropdown with more than 1000 entries

    Hi Friends
    I am having more than 1000 entries of different TimeZone's which i need to display in a dropdown list.
    i am not able to decide whether i need to use a Vector or Arraylist for storing these values.
    please let me know which one will be best suited to use in case the list entry is more than 1000 characters.
    waiting for a positive reply from your side.
    Thanks & Regards
    Vikeng

    A JComboBox can be constructed from a Vector (rather than any other sort of List) without having to implement your own ComboBoxModel. (JList is similar).
    I agree with kajbj - a control like this with a thousand entries is rather poor interface design. One exception might be if the entries are sorted in some way, and you "jump" to the appropriate place in the list as the user types.

  • To display text field with more than 1000 length in ALV

    Hi Friends,
           I need to display material long text field which is more than 1000 length in ALV or Object oriented ALV.
    Please help me to resolve the issue.
    Regards,
    Jaya.

    Hi,
    U mean to say in a single cell of ALV ??
    It is not possible in ALV .. As per OSS note 857823
    Below is the reason for same.. I think you should to split in number of columns.
    Summary
    Symptom
    Entries in cells of the type CHAR or string are truncated after 128 characters in the SAP GUI.
    Other terms
    ALV Grid Control (cl_gui_alv_grid), function module (Full-screen)
    Grid (Reuse_alv_grid_display, SAPLSLVC_FULLSCREEN), SAPGUI, back end, front end
    Reason and Prerequisites
    The data table that is sent to the front end only allows character values with the length 128.
    Solution
    This is the standard system behavior and cannot be changed.

  • Error Creating Invoices with more than 1000 positions

    Hello.
    I am creating invoices in SD module with VF01 transaction.  When the document has more than 1000 positions an error is displayed.
    The text of the error is:
    Memory area p.status GUI SAPMV60A SM is too small.
    área memoria p.status GUI SAPMV60A SM demasiado pequeña.
    I would like to know if there is any way to correct this error. If it happens because memory is too small, how could it be increased?
    Thank you.
    Diana Carolina.

    Hi Diana
    As far as I know, standard SAP has restricted the no. of line items in an accounting document to 999.
    So, this is in turn impacts the no. of line items you can have on a Sales invoice,
    Since every invoice  line item can have atleast 2 accounting entries, the max. no. of  invoice line items you can have is 499.
    I dont think there is no work around for this
    Rgds

  • Table with more than 1000 columns

    I need to store data from an equipment that logs 1500 parameters every minute. The natural approach would be to create a table where the first column stores the timestamp and the remaining columns the values sampled:
    CREATE TABLE parameters (
    sample_date date,
    param1 float,
    param2 float,
    param1500 float
    However, since there is a limitation of "just" 1000 coluns in Oracle, the table was designed as follows:
    CREATE TABLE parameters (
    sample_date date,
    param_id number(4),
    value float
    An auxiliar table stores the valid parameters and their ids.
    This works fine to store information, however it is very difficult to select data in a natural way.
    There are situations where we just need to make a report using a few columns out of the 1500 available. Is it possible to create a view that would make the way we designed the table transparent? Let's say we just need to make a report using params 1,2 and 4. How can we create a view that would return all parameters of a sample in a single row:
    sample_date param1 param2 param4
    just as if we had the parameters stored in individual columns?
    Marco

    Not a very efficient and space friendly design to do name-value pairs like that.
    Other methods to consider is splitting those 1500 parameters up into groupings of similar parameters, and then have a table per group.
    Another option would be to use "vertical table partitioning" (as oppose to the more standard horizontal partitionining provided by the Oracle partition option) - this can be achieved (kind of) in Oracle using clusters.
    Sooner or later this name-value design is going to bite you hard. It has 1500 rows where there should be only 1 row. It is not scalable.. and as you're discovering, it is unnatural to use. I would rather change that table and design sooner than later.

  • HT1353 I have a IPOD 5th generation with more than 1000 titles of music

    I bought it in 2007. I then lost it and lost my itune access too. In 2012 I started a new i tunes account and downloaded around 20 titles of music. After that I received my IPOD back. Now I do not know how synchronize my IPOD in a way that my laptop that my itunes center is receiving the titles of my IPOD and that I do not risk to delete any titles by synchrizing. When I tried to synchronize I am asked if I want to delete titles from my IPOD. So I do not know what to do....I want simply to copy all 1000 titles from my IPOD to my Itunes center and not the other way round. Thank you.

    You cannot use iTunes to transfer song files from iPod to computer (except for songs purchased from the iTunes Store).  iTunes syncing is generally in one direction, from the computer's iTunes library to the iPod.  However, there are third-party methods and utilities that can transfer song files from iPod to computer.  If you do an Internet search on something like "ipod transfer," you should get some links.  (The CNET article seems to be popular.)
    Once the song files are on your computer's drive, you can add them to your current iTunes library.  Then, with your new and old songs consolidated, you can sync your iPod to that library.
    NOTE:  If your old songs were purchased from the iTunes Store, you can re-download them at no cost.  You need to sign in to the iTunes Store using the Apple ID used to make the purchases.  From the iTunes Store Home screen, click on Purchased under QUICK LINKS.  On the Purchased screen, you can find previous purchases and download them into your current iTunes library.

  • ALV grid display with more than 1000 columns

    Hi Friends,
    I have to prepare a report output which have 1015 columns.
    User will give 100 weeks of data to retrieve. I have to display the output in day wise.
    100*7 + 315 = 1015 columns.
    I am using ALV grid display for this in 4.6C.
    My Question is, whether I have to declare the output table type with 1015 fields.?
    Is there any other way to do this, without declaring 1015 cloumns.
    Please guide me to solve this.
    Regards,
    Viji.

    I'm thinking when your End-user will press Ctrl + P feeding A4 size to printer
    Thomas:
    Maybe the functional consultant is pulling your leg?
    May be OP is pulling our legs or something further?
    Cheers

  • Table with more than 35 columns

    Hello All.
    How can one work with a table with more than 35 columns
    on JDev 9.0.3.3?
    My other question is related to this.
    Setting Entities's Beans properties from a Session Bean
    bought up the error, but when setting from inside the EJB,
    the bug stays clear.
    Is this right?
    Thank you

    Thank you all for reply.
    Here's my problem:
    I have an AS400/DB2 Database, a huge and an old one.
    There is many COBOL Programs used to communicate with this DB.
    My project is to transfer the database with the same structure and the same contents to a Linux/ORACLE System.
    I will not remake the COBOL Programs. I will use the existing one on the Linux System.
    So the tables of the new DB should be the same as the old one.
    That’s why I can not make a relational DB. I have to make an exact migration.
    Unfortunately I have some tables with more than 5000 COLUMNS.
    Now my question is:
    can I modify the parameters of the ORACE DB to make it accept Tables and Views with more than 1000 columns, If not, is it possible to make a PL/SQL Function that simulate a table, this function will insert/update/select data from many other small tables (<1000 columns). I want to say a method that make the ORACLE DB acting like if it has a table with a huge number of columns;
    I know it's crazy but any idea please.

  • How to pass more than 1000 entries in 'IN' clause, Oracle 11g

    Hi All,
    I know this is a very common question in Oracle discussion forum. But, Im in different zone.
    I use C#, .NET and Oracle 11g. I have a situation where I will create a query statement using 'IN' clause in C# code based on my requirement and execute that statement from code itself with oracle connection object. I do not have any procedures. I must phrase my query statement and pass it on to OracleConnection object to execute it.
    My code looks like this....
    List<decimal> x_Ids = new List<decimal>();
    I will load my IDs into x_Ids here;
    string whereInClause = ........I will prepare a 'IN' clause (All IDs separated by ',')
    My query would looks like this....
    string query = select * from MYTABLE where X_ID in [ whereInClause with more than 1000 entries]
    oraConn.ExecuteQuery(query);
    I have a workaround with OR operator with 'IN' clause like below.
    X_ID in [ Ids till 1000 entries] OR X_ID in [Next 1000 entries] OR X_ID in [Next 1000 entries] ....so on.....
    It is working, but, I heard that this may slowdown the performance of the application. Is this really a performance hit to my application?
    Can you please suggest any other workaround to overcome this situation?

    >
    I have a workaround with OR operator with 'IN' clause like below.
    X_ID in [ Ids till 1000 entries] OR X_ID in [Next 1000 entries] OR X_ID in [Next 1000 entries] ....so on.....
    It is working, but, I heard that this may slowdown the performance of the application. Is this really a performance hit to my application?There should be no performance difference between a statement like
    select * from myTab
    where ID in (1,2,3,4,5)
    OR ID in (6,7,8,10,12) and
    select * from myTab
    where ID in (1,2,3,4,5,6,7,8,10,12) The execution plan should be identical.
    However those values might better be send as a single object (collection or table of numbers type).
    I think the ODP or OO4O connectivity allows to create and such oracle object types.
    Another way could be to think about how all the values are created? Did any user enter them manually? Certainly not. Then maybe you can apply the same logic to the SQL statement that created those values in your .Net application.
    something like
    select * from myTab
    where ID in (select t2.FK_ID from otherTab t2 where t2.Col1 = 100) This approach would probably beat all others performancewise. Since you avoid the overhead of constructing the in-lists.

  • SendMail: can not send mail with body more than 1000 caracters

    Hi,
    I can not send mail with a body wich is more than 1000 caracters.
    FUNCTION SendMail(SMTPServerName IN STRING,                     
                        Sender IN STRING,                     
                        Recipient IN STRING,                     
                        CcRecipient IN STRING,                     
                        BccRecipient IN STRING,                     
                        Subject IN STRING,                     
                        Body IN STRING,                     
                        ErrorMessage OUT STRING,                     
                        Attachments IN ATTACHMENTS_LIST) RETURN NUMBER IS      
                        AttachmentList VARCHAR2(4000) := '';      
                        AttachmentTypeList VARCHAR2(2000) := '';   
                          BEGIN       ParseAttachment(Attachments,                      
                                                      AttachmentList);      
                                      RETURN JSendMail(SMTPServerName,
                                                       Sender,                       
                                                       Recipient,                       
                                                       CcRecipient,                       
                                                       BccRecipient,                       
                                                       Subject,                       
                                                       Body,                       
                                                       ErrorMessage,                       
                                                       AttachmentList); 

    Hi,
    I can not send mail with a body wich is more than 1000 caracters.
    FUNCTION SendMail(SMTPServerName IN STRING,                     
                        Sender IN STRING,                     
                        Recipient IN STRING,                     
                        CcRecipient IN STRING,                     
                        BccRecipient IN STRING,                     
                        Subject IN STRING,                     
                        Body IN STRING,                     
                        ErrorMessage OUT STRING,                     
                        Attachments IN ATTACHMENTS_LIST) RETURN NUMBER IS      
                        AttachmentList VARCHAR2(4000) := '';      
                        AttachmentTypeList VARCHAR2(2000) := '';   
                          BEGIN       ParseAttachment(Attachments,                      
                                                      AttachmentList);      
                                      RETURN JSendMail(SMTPServerName,
                                                       Sender,                       
                                                       Recipient,                       
                                                       CcRecipient,                       
                                                       BccRecipient,                       
                                                       Subject,                       
                                                       Body,                       
                                                       ErrorMessage,                       
                                                       AttachmentList); 

  • Speeding up the footage more than 1000% but with transitions

    Hey there,
    I am trying to speed up the footage of a view out of an airplane window in Premiere Pro CC. I basically want to have a view over the whole landscape, let's say in a height of 300m, and then speed this view gradually up until the airplane lands, and all this within around 3-5 seconds seconds.
    The first problem I have is that I seem to not be able to speed my footage up to more than 1000%. If I wanted to have a time lapse between being up in the air and landing on the runway within like 5 seconds that is definitely not enough.
    The second problem is that I don't want to start the timelapse sudden, but have a transition when changing the speed. Normally, I do that with these blue little handles to get a S-curve for my speed of a certain clip. When I tried googling it considering a higher speed than 1000% someone only suggested to export the speeded clip, import it again and then speed it up again. But then there is no gradually speed up possible, it only works for the same speed over the whole clip
    Summarizing these problems, I can't find a way to speed my footage up to more than 1000% without loosing the effect of a gradually S-speed-curve.
    Does anyone have an advice on how to solve this problem, especially focussing on my specific clip?
    Thank you and sorry for my english.
    Peter

    You should not have to render your captured material. If the capture settings match the sequence settings (conform this by checking item properties for both) then no rendering is necessary except for effects and filters.
    Offline editing (editing in low res and capturing in full res) is not a function available in FCE.

Maybe you are looking for