Ruby-Serialport: прослушивание ввода - PullRequest
1 голос
/ 24 апреля 2011

Я планирую вскоре перейти к кодированию ввода от последовательных устройств, и был очень рад найти Ruby-serialport .API выглядит простым в использовании, но я немного озадачен тем, как подход к получению данных основан на событиях.

Я хочу что-то делать с данными всякий раз, когда появляется \n, но текущийread () в библиотеке, по-видимому, просто выводит все, что находится на экране.Что я действительно ищу, так это способ переключения функций при поступлении новых данных.

Ответы [ 2 ]

4 голосов
/ 24 апреля 2011

Ruby и ОС уже обрабатывают управляемую событиями часть последовательного ввода-вывода для вас.

Класс SerialPort, реализованный вашим гемом, является потомком IO, поэтому он уже будет обрабатывать чтение до новых строк ... что-то вроде этого:

sp = SerialPort.new "/dev/my-modem", 9600
...
while s = sp.gets
  ..
end
0 голосов
/ 24 апреля 2011

Я думаю, что вам нужно создать еще один поток в вашем приложении для прослушивания данных.

Тогда вы должны обработать входящие данные - поместить в какой-то массив.

Используйте шаблон проектирования Observer для отслеживания состояния массива с данными - тогда вы будете иметь свою функциональность - помните, что ruby ​​не является языком, управляемым событиями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...