9

我正在从事机器人自动化项目,但遇到了障碍。要控制机器人,需要通过 telnet 与它进行无线连接,并通过 tcp/ip 协议发送命令。(例如,“Mabc”命令根据左轮速度 (a)、右轮速度 (b) 和时间 (c) 将其向前移动)。我想做的是在 C 程序中进行一些计算,然后根据计算值向机器人发送消息。

如何在 C 程序中通过 tcp/ip 协议发送命令?

谢谢!

埃里克

4

5 回答 5

17

您正在寻找插座。这是 C 中套接字编程的综合指南。 Telnet 也是一个定义明确的协议,虽然我不知道这个机器人是否会使用 telnet(对于一个不会有太多额外好处的协议来说,这是额外的处理开销)机器人控制程序)。Telnet 由RFC 854详细介绍

于 2008-10-14T21:16:12.820 回答
7

Expect将允许您与外部程序进行交互,但我不知道期望的 C 端口。否则,您会在 C 中找到一个 telnet 库,或者使用套接字编程编写您自己的库。

于 2008-10-14T21:25:30.243 回答
4

我会使用 libcurl:http ://curl.haxx.se/libcurl/ 。它会做你想做的事,并处理你真的不想处理的所有 telnet goo。

于 2008-10-14T23:13:27.827 回答
2

Expect正是为了做到这一点而设计的——通过交互式程序进行对话。它是用Tcl编写的,用各种命令扩展了 Tcl 解释器。Tcl 很容易扩展;它从一开始就被设计成一种嵌入式脚本语言。主要的 C API 使用 argv 风格的结构将参数传递给 Tcl 命令,并且非常易于使用。C API 的最佳指南是Ousterhout 的原著,我花了两个小时的实验课来启动并运行我的第一个嵌入式 Tcl 解释器。

作为奖励,您还可以获得一个内置的 Tcl 解释器,您可以使用它来为您的应用程序添加脚本功能。如果您愿意,您可能会发现其中相当一部分可以在 Tcl 中实现,因此总体上可能会节省您的时间。

于 2008-10-14T23:12:49.573 回答
1

我会:

  • 编写一些简单的 shell 脚本,其中包含按照此处文档编写的 telnet 交互。
  • 使用主目录中的 .telnetrc 文件来控制 telnet 会话的各个方面,例如 crmod
  • 使用系统调用调用脚本。

这样,您更改与机器人交互的周转时间就不必一直重新编译您的程序。

顺便说一句,这听起来很有趣。

HTH。

干杯,

于 2008-10-14T22:58:34.453 回答