3

チャットを介してサーバーのシリアルポートと通信するために、Tornado Websockets Chat Demo を変更する方法を探しています。以下に、メッセージが送信されるときに呼び出されるメソッド (?) を示します。メッセージの本文をserial.write()に送信することで、シリアルに書き込むことができます。しかし問題は、シリアル フィードバックを 1 回しか取得できないことです。ただし、現在のアプリケーションでは、シリアルは話しかけられたとき以外にもデータを送信する場合があります。

    ...
    import serial
    serial = serial.Serial("COM3", 57600)
    ...
    def on_message(self, message):
        test = ""
        logging.info("got message %r", message)
        parsed = tornado.escape.json_decode(message)

        serial.write(parsed["body"] + "\n")
        logging.info("SENT " + parsed["body"] + "\n")
        test = serial.readline()

        chat = {
            "id": str(uuid.uuid4()),
            "body": test,
            }

        chat["html"] = self.render_string("message.html", message=chat)

        ChatSocketHandler.update_cache(chat)
        ChatSocketHandler.send_updates(chat)

シリアルを常にポーリングし、同時に Websockets IO を処理する方法はありますか? また、複数のページをリアルタイムで更新できる Tornado に代わるより簡単な方法があれば、私は反対しません。私はトルネードが好きですが。

4

2 に答える 2

1

他のアプローチを受け入れることができるので、この完全な実例に興味があるかもしれません。これは、シリアルおよびWebSocketを介してArduinoセンサーボードから駆動されるブラウザーインスタンスのリアルタイムチャートを示しています。これはアウトバーンとツイストを使用します。

開示:私はアウトバーンの原作者であり、タヴェンドで働いています。

于 2012-10-02T08:15:56.813 に答える
1

Tornado と Python のマルチプロセッシング ライブラリを使用する別のアプローチを使用しました。詳細はこちらから入手できます:

ラズベリーパイ + トルネード + アルドゥイーノ

于 2013-02-27T23:38:06.667 に答える