gpt4 book ai didi

python - microcrontroller 输出到 python cgi 脚本

转载 作者:行者123 更新时间:2023-12-01 06:19:30 24 4
gpt4 key购买 nike

我买了这个温度传感器记录仪套件:http://quozl.netrek.org/ts/ 。它与提供的 C 代码配合得很好,我喜欢使用 python,因为它简单,所以我用 python 编写了一个脚本来显示微 Controller 的输出。我的套件上只连接了一个温度传感器。我希望温度显示在网页上,但似乎无法弄清楚,我很确定它与具有\r\n DOS EOL 字符和 linux web 的微 Controller 的输出有关服务器无法正确解释它。我的书上说“根据您使用的 Web 服务器,您可能需要进行配置更改以了解如何提供 CGI 文件”。我正在使用 debian 和 apache2,基本的 cgi 脚本工作正常。

这是我的代码,用于将传感器显示到控制台(效果很好):

import serial

ser = serial.Serial('/dev/ttyS0', 2400)

while 1:
result = ser.readline()
if result:
print result

这是我有效的 test.cgi 脚本:

#!/usr/bin/python
print "Content-type: text/html\n"
print "<title>CGI Text</title>\n"
print "<h1>cgi works!</h1>"

这是我开始显示温度的 cgi 脚本(不起作用 - 500 内部服务器错误):

#!/usr/bin/python
import sys, serial

sys.stderr = sys.stdout

ser = serial.Serial('/dev/ttyS0', 2400)

print "Content-type: text/html\n"

print """
<title>Real Time Temperature</title>

<h1>Real Time Temperature:</h1>
"""

#result = ser.readline()
#if result:
print ser.readline()

如果我在控制台中运行 python rtt.cgi,它会输出正确的 html 和温度,我知道这不是实时的,并且每次用户想要查看温度时都必须重新加载页面,但是这些东西将来会出现。从我的 apache2 错误日志中可以看出:脚本中的标题格式错误。错误 header =文件“/usr/lib/cgi-bin/rtt.c: rtt.cgi

最佳答案

我猜测您的 CGI 运行所在的执行上下文无法完成 read()从串行端口。

顺便说一句,Python 标准库有比您在这里所做的更好的方法来编写 CGI 脚本;甚至基本的字符串处理也提供了一种更好的方法将结果插入 HTML(假设您的代码具有 read() 它们的必要权限)。

至少我会推荐类似的东西:

#!/usr/bin/python
import sys, serial

sys.stderr = sys.stdout
ser = serial.Serial('/dev/ttyS0', 2400)

html = """Content-type: text/html

<html><head><title>Real Time Temperature</title></head><body>
<h1>Real Time Temperature:</h1>
<p>%s</p>
</body></html>
""" % ser.readline() # should be cgi.escape(ser.readline())!
ser.close()
sys.exit(0)

请注意,我们只是对 ser.readline() 的结果进行插值使用% 字符串运算符。 (顺便说一句,您的 HTML 缺少 <html>, <head><body><p> (段落)标签)。

这仍然存在问题。例如,我们至少应该导入 cgi将外部数据包装在其中,以确保 HTML 实体正确替换任何保留字符等)。

我建议进一步阅读:[Python 文档]:http://docs.python.org/library/cgi.html

关于python - microcrontroller 输出到 python cgi 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1291624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com