我想要从串口打印实时数据。 我认为R将是一个很好的工具。 我试图从串口读取数据(COM4)。 我已经validation了数据是通过terra术语进入的(并且在尝试R之前closures会话),但是我似乎无法在R中获得任何内容。
我已经检查了几个地方,包括这些线程: 如何调用在Windows上使用scan()的脚本? 如何在脚本中包含交互式input以便从命令行运行
我也在R论坛上发现了这个旧post: https : //stat.ethz.ch/pipermail/r-help/2005-September/078929.html
这些已经得到了这么多,但我似乎无法从串口实际获取任何数据到R。
在这一点上,我可以使用VBA在Excel中传输数据,但是我想在R中进行一些更好的实时绘图和数据过滤。
编辑:感谢迄今为止的帮助。 编写这个编辑的时候,我刚刚开始工作,所以代码如下:
# # 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最终会变成一个很长的string,换行符是我想要的:
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,
再次感谢所有的帮助!
我正在使用CRAN上的serial
package( 这里 )。 这是为了完成你所需要的。 读取和发送数据表格和RS232等连接。 我真的推荐这个,因为“ mode.exe
”似乎不适用于虚拟COM端口。 参见NPort-server等
Teraterm和Windows使用不同的机制来配置串行设备。 与teraterm中配置的相比,您的系统连接设置是否正确? 重新检查teraterm中的配置参数,然后使用它们在R中设置COM4:配置。
系统(“模式COM4:BAUD = 115200 PARITY = N DATA = 8 STOP = 1”)
看模式/? 在命令提示符下输入更多参数
使用readChar()来逐字读取数据可能也是有帮助的
有时会发生teraterm不能正确关闭RS232连接。