Showing results for 
Search instead for 
Did you mean: 

Re: Contract multiple delimiters for "Spreadsheet string to array"

Hi guys! I know that it is an old topic , but I will try !  🙂


My DAQ board sends to PC data in the following format.


! is the starting character

and we have "," , ":"   and ";" as delimiters.

In the end of the packet (after ":") my board sends the values of two microcontroller timers (4 and 5).

The first data packet ends with a <CR> and my boards repeats that every 3 seconds.


I need to plot voltage1[n] and voltage2[n] in two separate graphs and my time base is the value of TIMER4 / n.


The real data is like showed below.




I have used and modified altenbach's VI but some delimiters are bothering me yet.



Modified Altenbach's VI



















Case value 1 detail










The result is:














The VI was great to separate correctly the values of voltage1 and voltage 2 in two separate strings but I did not know how to avoid the last comma.


Also in Timer4 and Timer5 I could not avoid the characters ":" and "," right before the numeric values.


I would be grateful if anybody help to solve this issue or give me other tips to do what I need with that data.


Thank you everybody in advance !

0 Kudos
Message 1 of 4

 Your strings appear to have the following format:

  • A "header/separator" character from the set [!;:] is followed by a comma-separated pair of numbers.
  • Pairs headed by ! or ; are pairs of Voltages.
  • Pairs headed by : are pairs of Timers.
  • A single character <CR> ends the string

You don't say, but (in principle) there could be multiple pairs of Timer values, and Voltages and Timers could be intermixed -- the header character can determine which is which.


The Scan Format %[!;:]%d,%d will isolate the header character and the pair of numbers that follow.  If used with Scan from String, it will "peel off" Voltage or Timer pairs one at a time, until there is 1 character left.  To accomodate strings ending in <CR><LF>, I used the criterion that the remaining string length was <= 2 characters.  If the header character was ! or ;, I added it to the Voltage array, while if it was ":", I added it to the Timer array.  [You could, in principle, simply exit when you output the Timer, but the code shown here is designed to be more "general" ...].


This simple logic can be written as follows:

Multiple delimiters.png

Note it only uses Scan from String and builds arrays with the While loop (it does not use Spreadsheet string to array).


Bob Schor

0 Kudos
Message 2 of 4

Crosspost where I made an attempt that uses search split string.

0 Kudos
Message 3 of 4


Lets try to do this without knowing the number of rows or columns at dev time shall we.


If you haven't installed "Hidden Gems" You probably should- Via VIPM

Split is in <LabVIEW>\vi.lib\Advanced String\ (That function you don't recognize doing some of the work)


Danged Ctrl+U moved that constant way over there

"Should be" isn't "Is" -Jay
0 Kudos
Message 4 of 4