Как читать последовательный поток данных в блестящее приложение - PullRequest
0 голосов
/ 23 января 2019

Я хочу прочитать поток данных с последовательного порта (USB-порт).

В моем случае это данные с платы Arduino, однако проблема, на мой взгляд, общая.

Это легко сделать в R. Например:

library(serial)
conn <- serialConnection("arduino", port="ttyUSB0", mode="9600,n,8,1") # port may be different on other machines and OS's
open(conn)
while(TRUE) { print(read.serialConnection(conn) ) }

Это будет непрерывно выплевывать поток данных в виде текста (включая множество значений NULL).

Я хочу сделать нечто подобное в Shiny App. Мне не удалось заставить это работать, несмотря на превосходное введение в R / Shiny и потоки данных здесь: ссылка . Ниже приведен минимальный нерабочий пример.

Сообщаемая ошибка: аргумент 1 (тип 'закрытие') не может быть обработан 'cat', который был сбит с толку. Это проблема типа данных, которую print () может обработать, но renderText () не может?

library(shiny)
library(serial)

conn <- serialConnection("arduino", port="ttyUSB0", mode="9600,n,8,1")
open(conn)

ui <- fluidPage(
  titlePanel("Shiny Data Serial Stream"),
  fluidRow(
    column(4, 
       hr(),
       textOutput('serial'),
       hr()
      ) 
    )
  )

server <- function(input, output, session) {
  serialRead <- reactive({
    invalidateLater(100, session)
    read.serialConnection(conn)
  })

  output$serial <- renderText({serialRead})
}

# Run the application 
shinyApp(ui = ui, server = server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...