如何将串行数据流读入闪亮的应用程序

时间:2019-01-23 18:55:35

标签: r shiny serial-port

我想从串行端口(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和数据流进行了出色的介绍,但我仍未能成功进行此工作:link。下面有一个最小的无效示例。

报告的错误是:参数1(类型“ closure”)无法由已混淆的“ 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)

0 个答案:

没有答案