Javascript ajax等待文件更改
我正在编写一个网站来控制我的树莓皮机器人。我正在使用.py脚本驱动两个步进电机,我称之为:Javascript ajax等待文件更改,javascript,php,python,html,ajax,Javascript,Php,Python,Html,Ajax,我正在编写一个网站来控制我的树莓皮机器人。我正在使用.py脚本驱动两个步进电机,我称之为: sudo ./GPS.py forward 100 30 第一个参数是要走的路,第二个参数是要走多少步,最后一个参数是两步之间的延迟 脚本打开location.txt文件(看起来像“100/50/18”),并采用坐标x=100、y=50和Alpha=18度。然后移动,计算新的坐标并将其写入此文件 阅读脚本顶部的部分: fo = open("location.txt", "r") data = fo.re
sudo ./GPS.py forward 100 30
第一个参数是要走的路,第二个参数是要走多少步,最后一个参数是两步之间的延迟
脚本打开location.txt文件(看起来像“100/50/18”),并采用坐标x=100、y=50和Alpha=18度。然后移动,计算新的坐标并将其写入此文件
阅读脚本顶部的部分:
fo = open("location.txt", "r")
data = fo.read()
fo.close()
coordinates= data.split("/")
temp1 = coordinates[0]
temp2 = coordinates[1]
temp3 = coordinates[2]
Alpha= float(temp3)
X = float(temp1)
Y = float(temp2)
然后它进行所有请求的移动和计算,最后将新的X、Y、Alpha保存回文件:
fo =open("location.txt", "w")
fo.write(str(X)+"/"+str(Y)+"/"+str(Alpha))
fo.close
好吧,这在Putty中非常好用,但现在我想驾驶我的机器人通过网站,所以我制作了一个网站来控制它
但现在我有一个问题。现在我有这样的网站:
HTTP --> Javascript --> PHP --> .PY script to move robot.
{ date_updated: "13-11-2013 15:45:98",
x_position: 105,
y_position: 120,
alpha: 123 }
这是可行的,但我不知道如何在我的网站上从location.txt刷新X,Y,Alpha坐标。我有一个想法:
Javascript运行.PY并等待它完成,然后JS open.txt并获取数据,最后为我的网页设置新的坐标。但我不知道怎么做。这等待着。PY结束真让我心烦
谢谢你的帮助!
哈欠2
附言
我在我的Raspberry Pi上安装了apache,我可以通过网页加载我的.py脚本,并且我可以打开.txt文件。进行此操作的经典web方式是从客户端轮询,直到您被告知更改为止 例如
- 调整文件,使其包含更新的日期和时间
- 实现一个PHP脚本来打开文件,并将内容作为一个JSON对象(更新日期、X、Y和Alpha作为属性)
- 加载页面时,加载位置并存储所有4个组件
- 当向服务器发送移动指令时,开始轮询更改-定期重新加载JSON对象,直到更新了日期更改的对象。然后,您可以停止轮询
- 然后应存储此更新的位置并用于更新页面
- 设置轮询的最大次数,如果达到最大次数,则放弃并出错
<div id="locationInfo" />
在主页中,您可以使用jQuery创建一个脚本,该脚本将
上面真正缺少的是当更新日期改变时,反复轮询和中止的部分
@johnny craig在这里描述了一个投票的简单示例:
在这些示例中,一旦您获得了所需的数据(通过更新日期的变化识别),您就需要退出条件
它可能会工作,实现起来非常简单,但会受到来自网页的大量无用请求的影响。尽管要记住,网络做这种事情已经有很长一段时间了
或者,你可以了解所有关于它的HTML5,并在WebSocket上阅读。使用WebSocket,您可以从服务器端而不是客户端发起更新。所需的轮询更少,客户端的响应时间应该更好
以下内容将为您提供基本知识:
$.get( "getLocationInfo.php", function( data ) {
var html = 'Location: ' + data.x_position + ', ' + data.y_position + ' @' + data.alpha
$( "#locationInfo" ).html( html );
});