【发布时间】:2009-08-18 03:22:26
【问题描述】:
我买了这个温度传感器记录器套件:http://quozl.netrek.org/ts/。它与提供的 C 代码配合得很好,我喜欢使用 python,因为它很简单,所以我用 python 编写了一个脚本来显示微控制器的输出。我只有一个连接到套件的温度传感器。我希望将温度显示在网页上,但似乎无法弄清楚,我很确定这与具有 \r\n DOS EOL 字符和 linux web 的微型计算机的输出有关服务器没有正确解释它。我的书说“根据您使用的 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>"
这是我开始显示 temp 的 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 错误日志中它说: 来自脚本的格式错误的标头。错误头=文件“/usr/lib/cgi-bin/rtt.c:rtt.cgi
【问题讨论】:
-
is "#!/usr/bin/pythonimport sys, serial" 是复制到 SO 时的拼写错误,还是在您的文件中?
-
当你在命令行运行 rtt.cgi 时,'print ser.readline()' 的输出是什么样的?
-
Neil:这是一个错字 ryan_s:当我从命令行运行 rtt.cgi 时,它会输出带有温度的 html,就像我希望它显示在网页上一样。它实际上读取串行端口并获取数据并将其打印在 html 中应该进入的位置。
标签: python serial-port cgi