2

我有一个非常简单的 Python 脚本,用于轮询串行设备(一个 Xbee 模块)。它本质上只是一个无休止的while循环。通过此循环的每次迭代我都希望更新一个网页。我已经看到很多示例显示 UI 交互,其中用户单击按钮将 ajax 帖子发送到服务器并返回,但我希望 python 后端循环在没有用户交互的情况下对客户端进行更新。我查看了 web.py 和 ajax,这似乎是要走的路,我似乎无法让它继续下去,希望得到一些帮助。这是我的python脚本的要点:

ser = serial.Serial('COM3', baudrate=9600)
while 1:
    data = ser.readline()
    if len(data) == 14:
        num = struct.unpack('BBBBBBBBBBBBBB', data)[9]
        if num == 1:
            // update the web client with 1
        elif num == 2:
            // update the web client with 2
        else:
            // update the web client with 0
    app.processEvents()

该设置在 ubuntu 12.04 上运行,带有 apache2 和 python 2.7。

4

1 回答 1

0

主要限制是:您无法从服务器上的脚本中更新客户端上显示的网站。您必须通过 Javascript 从您的网站内请求数据,然后让您的服务器返回更新后的数据。

在您的网站中,您可以使用

setInterval(function() {
    //do something
    }, 2000)

或者

setTimeout(function() {
    //do something
    }, 2000)

每两秒做一件事。然后,最简单的方法是重新加载网站

window.location.reload()

您也可以使用 small<iframe>仅更新一小部分。

一个更复杂的选择是使用 AJAX,我建议坚持使用像 jQuery 这样的成熟库来这样做:jQuery AJAX。jQuery 还使更改网站内容变得非常容易,只需查看文档即可。

于 2013-01-15T07:33:01.080 回答