Цифровая электроника для начинающих (Елисеев) - страница 65


На этом клиентская часть закончена. Сохраним этот файл как index.html. Сам сервер тоже необходимо дописать, чтобы он корректно обрабатывал новые запросы. Код сервера показан ниже, как можно видеть, изменения в нем минимальны.


from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer


class Server(BaseHTTPRequestHandler):

def do_GET(self):

print self.path

if "?BtnLeftDown" in self.path:

self.send_response(200)

self.send_header('Content-type', 'text/plain')

self.end_headers()

self.wfile.write("ok left start")

return

if "?BtnLeftUp" in self.path:

self.send_response(200)

self.send_header('Content-type', 'text/plain')

self.end_headers()

self.wfile.write("ok left end")

return

if "?BtnRightDown" in self.path:

self.send_response(200)

self.send_header('Content-type', 'text/plain')

self.end_headers()

self.wfile.write("ok right start")

return

if "?BtnRightUp" in self.path:

self.send_response(200)

self.send_header('Content-type', 'text/plain')

self.end_headers()

self.wfile.write("ok right end")

return

with open('index.html', 'r') as htmlfile:

self.send_response(200)

self.send_header('Content-type', 'text/html')

self.end_headers()

data = htmlfile.read()

self.wfile.write(data)


if __name__ == "__main__":

# Start server

server_address = ('', 8000)

httpd = HTTPServer(server_address, Server)

print 'Starting httpd...'

try:

httpd.serve_forever()

except:

pass


Мы проверяем, есть ли в запросе нужная строка (например BtnLeftDown), и если есть, то выполняем соответствующее действие. В данном случае мы отправляем клиенту подтверждение вида “ok left start”, это удобно для отладки. В реальности нужно будет добавить дополнительный код, например для активации соответствующих портов ввода-вывода.


Теперь все готово, сохраняем наш файл и запускаем сервер. Кстати, для тестирования можно использовать тот же компьютер, используя ip-адрес http://127.0.0.1:8000. Запускаем браузер, нажимаем кнопки, и в окне отладки браузера видим ответы сервера.

Теперь мы можем управлять чем угодно с помощью длинных или коротких нажатий кнопок. Можно кстати, приобрести на ebay специальную платформу с гусеницами и моторами, и управлять ею удаленно.


Самостоятельная работа: добавить код еще для двух кнопок “вперед”, “назад”, это позволит сделать вполне полноценное управление.