[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