如何从C程序在Erlang程序中接收多个值?

时间:2010-08-02 16:34:57

标签: erlang robotics

我正在使用Erlang驱动机器人。

读取C程序中的传感器值,并希望将这些传感器值(多个传感器值)发送到Erlang程序,我可以在那里执行计算和控制机器人。 在Erlang书中给出的程序中,我们可以发送多个参数,但是我们只返回一个参数。 用于将X和Y发送到C程序:

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

结果:

{Port,{data, Data}} ->

我们只得到一个参数Data(buff [0])。

有没有办法在Erlang程序中接收多个参数,如buff [0],buff [1],buff [2] ..等等。  请建议我实现这个目标......

3 个答案:

答案 0 :(得分:4)

只需构造并返回一个3的元组,然后返回它的二进制文件并在答案中将其直接匹配。您可以使用ei模块构建元组和列表。请参阅http://www.erlang.org/doc/apps/erl_interface/index.html(模块ei)了解如何执行此操作,并查看http://www.erlang.org/doc/apps/erl_interface/users_guide.html以获取用户指南。

答案 1 :(得分:0)

检查您的C文件并发送回二进制文件,例如

你正在使用什么样的司机?

答案 2 :(得分:0)

您可以使用ei_decode_X,其中X是您希望解码值的值的类型。理想情况下,当从erlang发送它时,您应该执行term_to_binary然后传输它。