[R] problem reading from serial connection since 2.10.0
Prof Brian Ripley
ripley at stats.ox.ac.uk
Wed Dec 30 10:09:41 CET 2009
RTFM time: what do you think the description of 'file' in ?scan says
about devices (I can see nothing that says they are supported). It
does however say that
As from R 2.10.0 this can be a compressed file (see ‘file’).
which is a clear indication of what changed in R 2.10.0. Did you
follow the xref?: it tells you how to use a file() connection to
achieve the former behaviour.
If you are reading repeatedly from a file or device, you would do
better to open a connection, read repeatedly from that connection and
close it when done. So (untested, of course), something like
con <- file("COM1", "rb")
for(i in 1:10) foo <- readLines(con, n=1)
close(con)
[Technical aside: a text-mode file() connection when opened looks at
the file twice, once in binary mode to read the header to see if it is
compressed and if so how, then using the appropriate decompressor to
prepare to read the contents.]
There are many other aspects of file() connections that will not work
with devices (seeking, for example) and we decided long ago not to
support them. Nevertheless, it is helpful for documentation purposes
to have such reports when alpha/beta testing is requested and not
three months later.
On Tue, 29 Dec 2009, Tom Gottfried wrote:
> Dear list,
>
> I have a balance connected to the serial port of a windows machine
> ("COM1") and I read the text output of the balance with
>
> scan("COM1", what="character", sep="\n", n=1)
>
> after calling the previous line I press the print key on the balance
> which triggers sending one line of text to the serial connection and
> with R 2.9.2 I get something like
>
> Read 1 item
> "+ 32.004 mg"
>
> Now with R 2.10.1 (and previously with 2.10.0) I have to press the
> print key on the balance twice to get the same result, thus
> apparently I have to send two lines of text to make scan() reading
> only one. But this is only when reading from the serial port, not
> when reading from a text file on disk. The same is true for 2.10.1
> on Linux (I did not try 2.9.2 nor 2.10.0 on Linux). I can't figure
> out from the documentation nor the NEWS whether something should be
> specified differently when calling scan since 2.10.0. Any ideas what
> this behaviour comes from?
>
> Here the sessionInfo() for the three cases I have tested:
> R version 2.9.2 (2009-08-24)
> i386-pc-mingw32
>
> locale:
> LC_COLLATE=German_Germany.1252;LC_CTYPE=German_Germany.1252;LC_MONETARY=German_Germany.1252;LC_NUMERIC=C;LC_TIME=German_Germany.1252
>
> attached base packages:
> [1] stats graphics grDevices utils datasets
> [6] methods base
>
> respectively:
>
> R version 2.10.1 (2009-12-14)
> i386-pc-mingw32
>
> locale:
> [1] LC_COLLATE=German_Germany.1252 LC_CTYPE=German_Germany.1252
> [3] LC_MONETARY=German_Germany.1252 LC_NUMERIC=C
> [5] LC_TIME=German_Germany.1252
>
> attached base packages:
> [1] stats graphics grDevices utils datasets methods base
>
> respectively:
> R version 2.10.1 (2009-12-14)
> x86_64-unknown-linux-gnu
>
> locale:
> [1] LC_CTYPE=de_DE.UTF-8 LC_NUMERIC=C
> [3] LC_TIME=de_DE.UTF-8 LC_COLLATE=de_DE.UTF-8
> [5] LC_MONETARY=C LC_MESSAGES=de_DE.UTF-8
> [7] LC_PAPER=de_DE.UTF-8 LC_NAME=C
> [9] LC_ADDRESS=C LC_TELEPHONE=C
> [11] LC_MEASUREMENT=de_DE.UTF-8 LC_IDENTIFICATION=C
>
> attached base packages:
> [1] stats graphics grDevices utils methods base
>
> other attached packages:
> [1] lattice_0.17-26 RODBC_1.3-1
>
> loaded via a namespace (and not attached):
> [1] grid_2.10.1
>
> Thanks a lot!
> Tom
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-help
mailing list