目前我有一个Arduino连接到Raspberry Pi。 Arduino控制一个水位检测电路,用于自动宠物水碗。 Arduino上的程序有几个“serial.println()”语句来更新用户关于水钵状态的填充或填满状态。我通过USB将Arduino连接到Raspberry Pi。从Arduino的捕获串行数据上的皮小Python程序如下:Arduino,树莓派和HTML页面
import serial
ser = serial.Serial('/dev/ttyUSB0',9600)
file = open('index.html', 'a+')
message1 = """<html>
<head><meta http-equiv="refresh" content="1"/></head>
<body><p>"""
message2 = """</p></body>
</html>"""
while 1:
line=ser.readline()
messagefinal1 = message1 + line + message2
print(line)
file.write(messagefinal1)
file.close()
正如你可以看到它抓住了串行数据过来USB,创建和html页面,并将数据插入到页。我正在使用名为“dataplicity”(https://www.dataplicity.com)的服务,更具体地说是他们的“虫洞”工具(https://docs.dataplicity.com/docs/host-a-website-from-your-pi),通过网络在虫孔工具生成的链接上查看该html文件。我遇到的问题是这样的:
Traceback (most recent call last):
File "commprog.py", line 15, in <module>
file.write(messagefinal1)
ValueError: I/O operation on closed file
我想持续更新HTML页面的水碗的状态(它不断地打印其状态)。但是,一旦我使用“file.close()”关闭了页面,我无法再访问它,这大概是因为虫洞服务正在访问它。如果我不包含.close()我必须使用ctrl c手动结束该过程。有没有一种方法可以不断更新html文件?
解决了这个问题。感谢您的帮助。 – OakRidgejet