Python和arduino串行通信

时间:2013-05-22 06:35:11

标签: python html arduino serial-communication

我有一个arduino Uno通过USB连接到我的笔记本电脑。我在Windows 7上运行WAMP网络服务器。我安装了python 2.7和py串口。我写了一个HTML,单击按钮时会调用led1.py(python脚本)。 python脚本将与arduino通信以放置一个led,然后用户将按另一个按钮推出Led。 按下按钮时调用python脚本,led正在启动,但HTML页面出错:

  

内部服务器错误;
  服务器遇到内部错误或配置错误,无法完成您的请求。请联系服务器管理员admin @ localhost并告知他们错误发生的时间,以及可能导致错误的任何操作。服务器错误日志中可能提供了有关此错误的更多信息。

我哪里错了? HTML代码如下:

    <html>
    <head>
        <title>Sample Web Form</title>
    </head>
<body>

<h1>Fill Out This Form</h1>

<form action="/cgi-bin/led.py" method="POST">
    <input type="submit" name='action' value="LEFT">
    <input type="submit" style="background-color:yellow" name='action' value="LEFT"/><br><br><br>
    <input type="submit" style="background-color:yellow" name='action' value="BACK"/> 

</form>

</body>
</html>

Python代码如下:

#!python
import serial
import time
keyword =form.getvalue('action')
arduino = serial.Serial('COM4', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=1)
arduino.open()
arduino.isOpen()
time.sleep(5) # waiting the initialization...
print("initialising")
while True:
    if keyword == 'LEFT':
       arduino.write("H\n") # turns LED ON
       break
    elif keyword == 'BACK':
       arduino.write('L\n') # turns LED OFF
       break
    elif break
arduino.close() #say goodbye to Arduino

和Arduino代码非常简单:

int redpin =13;
int incomingbyte;

void setup()
{
  Serial.begin(115200);
  pinMode(redpin,OUTPUT);
  pinMode(greenpin,OUTPUT);
  pinMode(fanpin,OUTPUT);
  }

void loop()
{
  if(Serial.available()>0)
  {
    incomingbyte=Serial.read();
  }
  if(incomingbyte == 'H')
  {
    digitalWrite(redpin,HIGH);
  }
  if(incomingbyte == 'L')
  {
    digitalWrite(redpin,LOW);
  }
}

你能告诉我我哪里错了吗?我是python的新手。 另外,我想使用python在同一个HTML页面中显示来自arduino传感器的数据。怎么可能呢?我可以为此完成HTML和Python的完整小程序。

1 个答案:

答案 0 :(得分:1)

如果python脚本的内容是cgi-bin/led.py的内容,则必须如下所示:

   7 print "Content-type: text/html"
   8 print
   9 
  10 print """
  11 <html>
  12 
  13 <head><title>Sample CGI Script</title></head>
  14 
  15 <body>
  16 
  17   <h3> Sample CGI Script </h3>
  18 """

来自http://wiki.python.org/moin/CgiScripts

你缺少python脚本中的标题。