网络机器人的故障保护

时间:2009-12-13 01:00:11

标签: php robotics

我有一个我通过浏览器控制的机器人。带有前进,后退等按钮的页面是用托管在板载计算机上的PHP编写的。 PHP只是通过串行连接将ASCII字符发送到微控制器。无论如何,我需要实现故障保护,以便当驾驶它的人断开连接时,机器人将停止。我唯一能想到的就是在网页上ping某人,但我确信有更好的方法。机器人通过ad hoc网络或连接到互联网的常规无线网络连接。显然,如果我使用ping方法,那么在实际断开连接和实现断开连接之间必须存在延迟。无论使用何种方法,我都希望这种延迟尽可能小。我很感激有关如何做到这一点的任何想法。

3 个答案:

答案 0 :(得分:2)

Ping一个Web客户端有点不可靠,因为你必须考虑到客户端ip可能会改变。

另一方面,您可以通过Ajax模拟“死人按钮”。让网页不时发送一个定义的命令(可能每隔5到10秒)。如果机器人在一段时间内没有收到消息,则可以停止。 Ajax脚本可以在后台运行,因此控制用户甚至不会注意到任何内容。

这当然意味着,您的机器人需要一个每秒递增一次的计数器,并在收到消息时重置。定时器变量太高时,FULL STOP

答案 1 :(得分:1)

我建议您使用Web浏览器中嵌入的简单Flash对象打开机器人服务器的套接字连接吗?服务器可以用任何合适的语言编写 - 甚至PHP(咳嗽)。

然后,在连接断开时立即检测并实施故障安全方法是一件简单的事情。

HTTP不是机器人控制的理想协议。

祝你好运!

答案 2 :(得分:0)

我能想到的是在HTML中包含ajax代码,每隔X秒“ping”一次服务器。我相信Facebook Chat确实知道你是否还在线。

HTML 5 Web套接字可能是您正在寻找的解决方案,但您必须考虑到大多数用户的浏览器都不会实现它。

您可能会发现这篇文章很有趣:http://www.infoq.com/news/2008/12/websockets-vs-comet-ajax