Experimenting with a TTY Connection for R

Experimenting with a TTY Connection for R

Experimenting with a TTY Connection for R Matthew S. Shotwell Vanderbilt University Department of Biostatistics August 16, 2011 What is a TTY? A TTY, or computer terminal is a two-way asynchronous communications channel with configurable properties. The name \TTY" derives from the teletype or text telephone. Text Terminal configurable: I line endings: `nn' vs. `nnnr' I keyboard interrupts: ctrl-c ! SIGINT Serial Terminal configurable: I serial protocol: baud rate, character size, stop bits, I serial protocol: parity, flow control POSIX I Portable Operating System Interface for Unix I \POSIX" suggested by Richard Stallman (useR! 2010 Invitee) I [IEEE and The Open Group, 2008] I Defines a standard and API for OS interface I Character Set & Locale I Environment Variables I Headers I General Terminal Interface The General Terminal Interface shall be supported on any asynchronous communications ports if the implementation provides them. OS Support for the General Terminal Interface I Linux and UN*X (native) I Mac OS X (native) I Microsoft Windows (indirect) Implementing the General Terminal Interface in R Strategy: I specify a new type of R connection I implement a tty function I configure the TTY using arguments to tty Rationale: I parsimonious with the R/S concept of IO I utilize generic funcionality (readBin, flush, etc.) Implementing a New R Connection The R connection internal code is NOT available to package developers. Hence, new R connection implementations I cannot be in an R package I must patch the R source code I cannot be distributed via the CRAN The R connection internals (at R 2.12.0) are detailed in an unofficial collection of notes: R Connection Internals [Shotwell, 2010] in HTML and PDF. patch + instructions. The TTY Connection for R: The tty Function The TTY connection patch provides: tty <- function (description, open = "", blocking = TRUE, baudrate = NULL, input = NULL, output = NULL, control = NULL, local = NULL, chars = NULL) { ... } I input, output, control, local, and chars are each lists of configurable TTY parameters (see ?tty and the General Terminal Interface [IEEE and The Open Group, 2008]) I tty returns an instance of the `connection' class The TTY Connection for R: Text Terminal Application #get a password from the terminal, don't echo characters getpass <- function(prompt="password:") { cat(prompt) con <- tty("/dev/tty", local=list(ICANON=TRUE,ECHO=FALSE)) pw <- readLines(con, 1) close(con) cat("\n") invisible(pw) } R> print(getpass()) password: [1] "mysecretpassword" The TTY Connection for R: Serial Terminal Application µC Temperature Sensor Interface The TTY Connection for R: Biomedical Application Raw 2 0 −2 Low Frequency Filter 2 0 −2 V High Frequency Filter 2 0 −2 ECG 2 0 −2 0 5 10 15 20 Time http://biostatmatt.com/archives/78 IEEE and The Open Group (2008). Standard 1003.1 & Base Specifications Issue 7. Technical report, Institute of Electrical and Electronics Engineers & The Open Group. URL: http://pubs.opengroup.org/onlinepubs/9699919799/ retrieved Aug. 7, 2011. Shotwell, M. (2010). R connection internals. Technical report, BioStatMatt.com. URL: http://biostatmatt.com/R/R-conn-ints..

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    13 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us