l i n u x - u s e r s - g r o u p - o f - d a v i s
Next Meeting:
July 7: Social gathering
Next Installfest:
Latest News:
Jun. 14: June LUGOD meeting cancelled
Page last updated:
2003 Oct 09 05:57

The following is an archive of a post made to our 'vox-tech mailing list' by one of its subscribers.

Report this post as spam:

(Enter your email address)
Re: [vox-tech] bash question - how to read specifed amnt of datafrom a file
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [vox-tech] bash question - how to read specifed amnt of datafrom a file

Due to data buffering issues, you should use a carriage return followed by
a newline (ASCII 13 and 10, respectively) instead of a pipe to separate
the data.  (only one or the other might work, but both will surely

After that, you can just read it with the read command.  Like this:

   cat /dev/ttyS0 | ./myscript

and myscript can be something like:


   while true
      read a
      echo "$date: $a"

Ryan's idea using cut won't work (sorry Ryan!) because the data is

If, for some reason, you can't change the pipe to <CR><NL>, then you need
to turn off buffering and parse the data but... you don't wanna go there.

Also, if you wanna read the data every 10 seconds, you might wanna send
the data every 10 seconds, too, since the serial port is buffered.
Otherwise you gotta flush the data before reading, and BSII might freeze
trying to send the data, and... yeah, you don't wanna go there either.


On Wed, 8 Oct 2003, dylan wrote:

> hi-
> been playing around with using a basic stamp II to collect environmental
> data with very minimal setup (CdS cell and capacitor form an RC network, RC
> constant is measured by BS II)
> [http://surfdavis.no-ip.com/~dylan/light_level.p2.png]
> the BSII sends its data to /dev/ttyS0, and it is read in with the
> command'cat /dev/ttyS0 > tmp.light &' . data is parsed by a simple awk
> script and then sent to ploticus for a nice plot. the plot is updated by
> running a shell script that runs the awk sript and then ploticus.
> this works, but there is no way to associate a time with the data values. i
> was thinking that if there was some way to have a bash script read from
> /dev/ttyS0 every 10 seconds or so, save the value to a text file along with
> a date stamp it would be pretty neat.
> the output from the BSII looks something like this:
> light_level|light_level|light_level   and so on (the delimiter is a pipe)
> now to the question: does anyone know how to make bash read from a file
> (i.e. the serial port) from one pipe until another pipe, and then save the
> value in between to a text file?
> i know this is asking a lot, but any pointers would be great!
> thanks a lot!
> dylan
> _______________________________________________
> vox-tech mailing list
> vox-tech@lists.lugod.org
> http://lists.lugod.org/mailman/listinfo/vox-tech

Mark K. Kim
PGP key available on the website
PGP key fingerprint: 7324 BACA 53AD E504 A76E  5167 6822 94F0 F298 5DCE

vox-tech mailing list

LUGOD Group on LinkedIn
Sign up for LUGOD event announcements
Your email address:
LUGOD Group on Facebook
'Like' LUGOD on Facebook:

Hosting provided by:
Sunset Systems
Sunset Systems offers preconfigured Linux systems, remote system administration and custom software development.

LUGOD: Linux Users' Group of Davis
PO Box 2082, Davis, CA 95617
Contact Us

LUGOD is a 501(c)7 non-profit organization
based in Davis, California
and serving the Sacramento area.
"Linux" is a trademark of Linus Torvalds.

Sponsored in part by:
EDGE Tech Corp.
For donating some give-aways for our meetings.