2013-05-22 4 views
0

У меня есть arduino Uno, подключенный к моему ноутбуку через USB. Я запускаю веб-сервер WAMP на Windows 7. У меня установлен python версии 2.7 и py. Я написал HTML-код, где кнопки при нажатии будут вызывать led1.py (скрипт python). Сценарий python свяжется с ардуином, чтобы надеть светодиод, а затем пользователь нажмет другую кнопку, чтобы отключить светодиод. кнопка при нажатии вызывают сценарий питона, индикатор становится, но тогда страница 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. Также я хочу отображать данные с датчиков arduino на одной и той же странице HTML с помощью python. Как это возможно. Могу ли я иметь для этого полную небольшую программу как HTML, так и python.

+0

«Могу ли я иметь полную небольшую программу ...» Вы имеете в виду, вы хотите, чтобы кто-то просто написал это для вас? Вы пишете программное обеспечение бесплатно по запросу? Я укажу на некоторые проблемы. 'form' не определен. 'elif break' должен быть' else break'. Два из трех '' s идентичны по отношению к серверу. –

+0

Как определить форму? Я уже удалил один оператор ввода. Все еще есть ошибка –

ответ

1

Если содержание сценария питона является содержание 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

Вы пропускаете заголовок в сценарии питона.

+0

После нажатия кнопки «Отправить» работает скрипт python, но затем элемент управления не возвращается к HTML. –

+0

Итак, содержимое скрипта python является содержимым 'cgi-bin/led.py'? – User