【问题标题】:How to receive multiple values in Erlang program from C program?如何从 C 程序接收 Erlang 程序中的多个值?
【发布时间】:2010-08-02 16:34:57
【问题描述】:

我正在使用 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]..等等。 请建议我实现这一目标的一些方法...

【问题讨论】:

  • Erlang 会返回一个对象吗?如果可以,创建一个包含必要数据点的复合对象并返回。
  • 为什么这个被标记的社区维基?

标签: erlang robotics


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    你用的是什么驱动?

    【讨论】:

    • 我尝试过同时使用 C 端口和端口驱动程序(链接在驱动程序中)。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-08
      • 2011-01-18
      相关资源
      最近更新 更多