2015-12-30 3 views
4

Я хочу записать данные из последовательного порта. Я полагал, что R будет хорошим инструментом для работы. Я пытаюсь читать данные из последовательного порта (COM4). Я проверял, что данные поступают через терр-терм (и закрывают сеанс перед попыткой R), но я не могу ничего получить в R.Как считывать данные из последовательного порта в R

Я проверил несколько мест, включая эти темы: How to invoke script that uses scan() on Windows? How to include interactive input in script to be run from the command line

Я также нашел эту старую резьбу на R форуме: https://stat.ethz.ch/pipermail/r-help/2005-September/078929.html

Они приобрели мне далеко, но я не могу реально получить какие-либо данные в R из сериала порт.

В этот момент я могу передавать данные в excel с помощью VBA, но я хотел бы сделать это в 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 заканчивает тем, что длинная строка с новой строки так, как я хочу, чтобы они:

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, 

enter image description here

Еще раз спасибо за помощь!

+0

Я нашел это, и это помогает на данный момент, но было бы неплохо иметь возможность поднять данные в R и иметь больше контроля над вещами: https://hackaday.io/project/5334-serialplot/log/26735-serialplot-v06-commands-snapshots –

+0

Я отредактировал этот вопрос, чтобы отразить мой прогресс. –

ответ

3

Я работаю с serial -пакет (here), доступный на CRAN. Это было разработано, чтобы сделать именно то, что вам нужно. Чтение и отправка формы данных и подключений RS232 и т. Д. Я действительно рекомендую это, потому что «mode.exe», похоже, не работает для виртуальных COM-портов. См. NPort-Server и т. Д.

+0

Спасибо. Я должен буду это проверить, когда приеду сегодня. –

+0

Это сработало для вас ?! – Seily

+0

Извините, я был занят другими вещами. Я попробовал это сегодня днем. Письмо отлично работало, но чтение все еще ускользает от меня. Я уточню вопрос. –

0

Teraterm и Windows используют другой механизм для настройки последовательных устройств. Правильно ли настроены параметры вашего системного соединения по сравнению с настройками в teraterm? Повторно проверьте параметр конфигурации в TeraTerm, а затем использовать их, чтобы установить конфигурацию COM4: в R.

системы ("Режим СОМ4: СКОРОСТЬ = 115200 ЧЕТНОСТЬ = N DATA = 8 СТОП = 1")

см. режим /? в командной строке для дополнительных параметров

это также может быть полезно прочитать данные знак, используя readChar()

Иногда бывает так, что TeraTerm не тесные связи RS232 правильно.

+0

Да, я проверил все в Terraterm и в командной строке. Соединение закрыто, или я получаю сообщение об ошибке при открытии соединения. Программа заканчивается, поэтому она сообщает мне, что она открывает соединение, читает (ничего) и затем успешно закрывает соединение. Я дам readChar() попытку. –

+0

Пожалуйста, сообщите нам о вашем успехе – Frank

+0

Я могу заставить его работать с VBA в excel, но R дает мне головные боли. Я могу писать в последовательный порт, но чтение кажется непоследовательным. Иногда я получаю полную линию, иногда частичную, а иногда и никому. То, что я ожидаю, это линии на 2 секунды. Я отправлю свой текущий код на вопрос. –

Смежные вопросы