0

我有一个通过浏览器控制的机器人。带有前进、后退等按钮的页面是用 PHP 编写的,托管在车载计算机上。PHP 只是通过串行连接向微控制器发送 ASCII 字符。无论如何,我需要实现一个故障保护,这样当驾驶它的人断开连接时,机器人就会停止。我唯一能想到的就是在网页上ping这个人或其他东西,但我相信有比这更好的方法。机器人通过自组织网络或连接到互联网的常规无线网络连接。显然,如果我使用 ping 方法,那么在实际断开连接的时间和它意识到它已断开连接之间必须有一个延迟。无论使用何种方法,我都希望这种延迟尽可能小。一世'

4

3 回答 3

2

ping Web 客户端有点不可靠,因为您必须考虑到客户端 ip 可能会更改。

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

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

于 2009-12-13T01:09:50.320 回答
1

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

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

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

祝你好运!

于 2009-12-13T02:07:26.417 回答
0

我能想到的就是在您的 HTML 中包含每 X 秒“ping”您的服务器的 ajax 代码。我相信这就是 Facebook Chat 用来了解您是否仍然在线的方法。

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

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

于 2009-12-13T02:35:14.417 回答