2009-12-13 53 views
0

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

回答

1

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

然后,在连接断开时立即检测并实施您的故障安全方法非常简单。

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

祝你好运!

2

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

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

这当然意味着你的机器人需要有一个计数器,它每秒增加一次,并在收到信息时复位。当计时器变量太高时,FULL STOP

0

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

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

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

+0

Facebook使用使用持续http连接的Comet – 2009-12-13 03:03:34