Как получить несколько значений в программе Erlang из программы C? - PullRequest
4 голосов
/ 02 августа 2010

Я использую Эрланга для вождения робота.

Я считываю значения датчика в программе на C и хочу отправить эти значения датчика (несколько значений датчика) в программу Erlang , где я могу выполнять вычисления и управлять роботом.В программе, приведенной в книге Эрланга, мы можем отправить несколько аргументов, но мы получаем только один аргумент в качестве результата. для отправки программ X и Y в C:

Port ! {self(), {command, [50,X,Y]}}

В результате:

{Port,{data, Data}} ->

мы получили только один аргумент Data (buff [0]).

Есть ли способ получить несколько аргументов в программе Erlang, например, buff [0], buff [1], бафф [2] .. и т. д. пожалуйста, предложите мне какой-нибудь способ добиться этого ...

Ответы [ 3 ]

4 голосов
/ 03 августа 2010

Просто создайте и верните кортеж из 3, а затем верните двоичный код этого и сопоставьте его прямо в ответе.Вы можете создавать кортежи и списки с помощью модулей ei.См. http://www.erlang.org/doc/apps/erl_interface/index.html (модуль ei), чтобы узнать, как это сделать, и посмотрите руководство пользователя http://www.erlang.org/doc/apps/erl_interface/users_guide.html.

0 голосов
/ 24 апреля 2016

вы можете использовать ei_decode_X, где X - это тип значения, которым вы хотите, чтобы декодированное значение было. В идеале, отправляя его из erlang, вы должны сделать term_to_binary, а затем перенести его.

0 голосов
/ 03 августа 2010

Проверьте ваш C-файл и отправьте обратно двоичный файл, например,

какой драйвер вы используете?

...