2013-05-22 216 views
0

我有一個arduino Uno通過USB連接到我的筆記本電腦。我在Windows 7上運行WAMP webserver。我安裝了python 2.7和py serial。我寫了一個HTML,其中點擊按鈕將調用led1.py(python腳本)。 python腳本會和arduino進行通信,然後用戶按下另一個按鈕來放下Led。 按鈕按下調用的python腳本時,LED是越來越上,但隨後的HTML頁面給了一個錯誤:Python和arduino串行通信

Internal Server Error;
The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log.

我要去哪裏錯了?該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的小程序。

+0

「我可以有一個完整的小程序...」你的意思是,你想讓別人爲你寫這個嗎?請求時是否免費編寫軟件?我會指出一些問題。 'form'是未定義的。 'elif break'應該是'else break'。就服務器而言,三個「」中的兩個是相同的。 –

+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腳本的頭。

+0

單擊提交按鈕後,python腳本正在工作,但控件不會回到HTML。 –

+0

所以python腳本的內容是'cgi-bin/led.py'的內容嗎? – User