Я хочу прочитать поток данных с последовательного порта (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)