そこで、cherrypy と pyserial を使用して、Arduino Uno とやり取りするための Web インターフェイスをコーディングしました。それはかなり完全です。私が見逃していて、1日かけて理解しようとしてきた唯一のことは、Arduinoから送信されたデータを継続的に読み取り、html内のメッセージを含むdivを自動的に表示することですコード。コンソールに表示できますが、実際のhtmlを返すことができません。実際、return を使用することはできません。print を使用する必要がありますが、コンソールではなく html ページのデータが必要なため、これは便利ではありません。これを行うために多くの方法を試しました。
これが私のコードです。かなり単純です。定数関数は、Arduino から送信されるデータを読み取り続け、コンソールに送信します。ライブアップデートのように、htmlコードに送信したい。どうすればいいですか?
# -*- coding: Utf-8 -*-
import cherrypy, arduino, time, threading
ser=arduino.Serial('COM4', 9600)
def constant():
while True:
m=''
print('running')
while True:
print('sub_running')
byte=(ser.read().encode('Utf-8'))
if byte=='*':
break
m=m+byte
time.sleep(1)
print(m)
time.sleep(1)
class website(object):
def index(self):
return '''
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script><script src="annexes/functions.js"></script>
<link rel=stylesheet type=text/css media=screen href="/annexes/design.css">
<form action="command" method="POST">
<input type="submit" name="command" value="Turn the LED on" text="hey"/>
<input type="submit" name="command" value="Turn the LED off"/>
</form>
'''
index.exposed=True
def command(self, command):
m=''
if command=='Turn the LED on':
ser.write('1')
if command=='Turn the LED off':
ser.write('0')
self.index
command.exposed=True
_thread = threading.Thread(target=constant)
_thread.setDaemon(True)
_thread.start()
cherrypy.quickstart(website(), config='config.conf')