我正在从事机器人自动化项目,但遇到了障碍。要控制机器人,需要通过 telnet 与它进行无线连接,并通过 tcp/ip 协议发送命令。(例如,“Mabc”命令根据左轮速度 (a)、右轮速度 (b) 和时间 (c) 将其向前移动)。我想做的是在 C 程序中进行一些计算,然后根据计算值向机器人发送消息。
如何在 C 程序中通过 tcp/ip 协议发送命令?
谢谢!
埃里克
我正在从事机器人自动化项目,但遇到了障碍。要控制机器人,需要通过 telnet 与它进行无线连接,并通过 tcp/ip 协议发送命令。(例如,“Mabc”命令根据左轮速度 (a)、右轮速度 (b) 和时间 (c) 将其向前移动)。我想做的是在 C 程序中进行一些计算,然后根据计算值向机器人发送消息。
如何在 C 程序中通过 tcp/ip 协议发送命令?
谢谢!
埃里克
您正在寻找插座。这是 C 中套接字编程的综合指南。 Telnet 也是一个定义明确的协议,虽然我不知道这个机器人是否会使用 telnet(对于一个不会有太多额外好处的协议来说,这是额外的处理开销)机器人控制程序)。Telnet 由RFC 854详细介绍
Expect将允许您与外部程序进行交互,但我不知道期望的 C 端口。否则,您会在 C 中找到一个 telnet 库,或者使用套接字编程编写您自己的库。
我会使用 libcurl:http ://curl.haxx.se/libcurl/ 。它会做你想做的事,并处理你真的不想处理的所有 telnet goo。
Expect正是为了做到这一点而设计的——通过交互式程序进行对话。它是用Tcl编写的,用各种命令扩展了 Tcl 解释器。Tcl 很容易扩展;它从一开始就被设计成一种嵌入式脚本语言。主要的 C API 使用 argv 风格的结构将参数传递给 Tcl 命令,并且非常易于使用。C API 的最佳指南是Ousterhout 的原著,我花了两个小时的实验课来启动并运行我的第一个嵌入式 Tcl 解释器。
作为奖励,您还可以获得一个内置的 Tcl 解释器,您可以使用它来为您的应用程序添加脚本功能。如果您愿意,您可能会发现其中相当一部分可以在 Tcl 中实现,因此总体上可能会节省您的时间。
我会:
这样,您更改与机器人交互的周转时间就不必一直重新编译您的程序。
顺便说一句,这听起来很有趣。
HTH。
干杯,
抢