チャットを介してサーバーのシリアルポートと通信するために、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 に代わるより簡単な方法があれば、私は反対しません。私はトルネードが好きですが。