如何从 R 中的串行端口读取数据 [英] How to Read Data from Serial Port in R

查看:49
本文介绍了如何从 R 中的串行端口读取数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从串行端口绘制实时数据.我认为 R 将是完成这项工作的好工具.我在尝试从串行端口(COM4)读取数据时遇到了困难.我已经验证数据是通过 terra term 传入的(并在尝试 R 之前关闭会话),但我似乎无法在 R 中获取任何内容.

我检查了几个地方,包括这些线程:

再次感谢大家的帮助!

解决方案

我正在使用 serial-package (此处) 在 CRAN 上可用.这是为了完全满足您的需要而开发的.读取和发送数据形式以及到 RS232 等连接.我确实推荐这个,因为mode.exe"似乎不适用于虚拟 COM 端口.参见 NPort-Server 等.

I'm wanting to plot live data from the serial port. I figured R would be a good tool for the job. I'm stumbling on trying to read data from the serial port (COM4). I've verified the data is coming in through terra term (and close the session before trying R), but I can't seem to get anything in R.

I've checked a few places, including these threads: How to invoke script that uses scan() on Windows? How to include interactive input in script to be run from the command line

I've also found this old thread on the R forum: https://stat.ethz.ch/pipermail/r-help/2005-September/078929.html

These have gotten me this far, but I can't seem to actually get any data into R from the serial port.

At this point I can stream in the data in excel using VBA, but I'd like to do it in R for some nicer live plotting and filtering of the data.

Edit: Thanks for the help so far. I just got it working while writing up this edit, so here's the code:

#
# Reset environment
#
rm(list = ls())         # Remove environemnent variables
graphics.off()          # Close any open graphics

#
# Libraries
#
library(serial)

#
# Script
#

con <- serialConnection(name = "test_con",
                        port = "COM11",
                        mode = "115200,n,8,1",
                        buffering = "none",
                        newline = 1,
                        translation = "cr")

open(con)

stopTime <- Sys.time() + 2
foo <- ""
textSize <- 0
while(Sys.time() < stopTime)
{
    newText <- read.serialConnection(con)
    if(0 < nchar(newText))
    {
        foo <- paste(foo, newText)
    }
}

cat("\r\n", foo, "\r\n")

close(con)

foo ends up being a long string with new lines the way I want them:

3181, -53120, -15296, 2,  
3211, -53088, -15328, 2,  
3241, -53248, -15456, 1,  
3271, -53216, -15424, 2,  
3301, -53184, -15488, 2,  
3331, -53344, -15360, 1,  
3361, -53440, -15264, 1,

Thanks again for all the help!

解决方案

i am working with the serial-package (here) available on CRAN. This was developed to do exactly that what you need. Reading and sending data form and to RS232 etc. connections. I do really recommend this, because "mode.exe" seems not to work for virtual COM-ports. See NPort-Server etc.

这篇关于如何从 R 中的串行端口读取数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆