Я изучаю подключение к серийному устройству с Elixir. Единственная библиотека, которую я нашел, - this one. Я все еще пытаюсь обернуть голову вокруг Genservers, и прежде чем я начну писать программу/приложение, я хочу просто сделать несколько простых экспериментов в iex
, но я не знаю, с чего начать.
Я начал новый проект микширования, добавил пакет elixir_serial
в качестве зависимости и запустил iex с sudo iex -S mix
. (Я нахожусь на ubuntu, и в настоящее время, если я не использую sudo, я получаю сообщение об ошибках чтения/записи при попытке подключения, но это отдельный вопрос afaik). я, кажется, чтобы иметь возможность подключить нормально:Подключение последовательного порта Elixir
iex(3)> {:ok, serial} = Serial.start_link
{:ok, #PID<0.124.0>}
iex(4)> Serial.open(serial, "/dev/ttyUSB0")
:ok
iex(5)> Serial.set_speed(serial, 9600)
:ok
iex(6)> Serial.connect(serial)
:ok
iex(7)> Serial.send_data(serial, <<0x01, 0x02, 0x03>>)
:ok
Но я не знаю, как получить данные обратно. Я попытался положить в коде предложил в elixir_serial
README:
def handle_info({:elixir_serial, serial, data}, state) do
# do something with the data
end
как в IEX (завернутые в defmodule MySerial сделать конечный блок) и в главном файле проекта микс, просто торчит в IO.puts(data)
в функции ,
Мне явно не хватает чего-то здесь, требуется ли для последовательного соединения программа iex pid для отправки данных обратно? Я не понимаю, нужно ли мне настроить приложение GenServer для чтения данных, или если я могу использовать api elixir_serial
api для чтения данных из последовательного порта.
Как я уже сказал, я обертываю голову вокруг GenServer, я понимаю общие черты, но я хотел бы знать, как начать использовать этот пакет, чтобы просто проверить отправку и получение данных, прежде чем я начну создавать приложение вокруг него.
Вы пытаетесь написать тест, чтобы действовать, как если последовательное устройство отправляется обратно данные? –
Я хотел бы отправить команду на устройство, а затем прочитать результат этой команды на устройстве. Я отправляю данные на коммутатор Cisco и поэтому должен по существу подражать человеческому взаимодействию в Cisco cli, поэтому я хочу получить представление о результатах различных команд. (в предыдущем опыте с pyserial были определенные gotchas, которые сделали это сложным) – bordeltabernacle