Sør*_*ill 5 serial-port r shiny
我想从串行端口(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) ) }
Run Code Online (Sandbox Code Playgroud)
这将不断地将数据流吐出为文本(包括许多 NULL)。
我想在 Shiny App 中做类似的事情。尽管在此处对 R/Shiny 和数据流进行了出色的介绍,但我还没有设法使其正常工作:链接。下面有一个最小的非工作示例。
报告的错误是:argument 1 (type 'closure') cannot be processing by 'cat' which has been changed. 是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)
Run Code Online (Sandbox Code Playgroud)