Pull to refresh

Программирование под N900 на Python

Reading time 5 min
Views 4.1K
Среди топиков на Хабре я нашел лишь руководство по программированию на Python для платформы S60. Являясь счастливым обладателем N900 и фанатом Python я решил это исправить.

Вступление

В данной статье предполагается знание синтаксиса языка Python, а также основной семантики. Для написания приложения под Maemo 5 необходимы следующие инструменты:
  • OpenSSH server на N900
  • IDE PluThon
  • Пакеты PyQt4 и PyMaemo для N900
  • Wi-Fi точка доступа

OpenSSH

Устанавливаем OpenSSH-server из репозитория Extras-Devel. В процессе установки нужно будет ввести логин и пароль: логин должен быть root,
пароль устанавливаем по своему усмотрению (я бы не советовал использовать кирилицу в пароле).

PluThon

Всем известно, что Maemo содержит интерпретатор Python «из коробки». Простенький скрипт можно написать на самом устройстве. Но, согласитесь, гораздо удобнее программировать в IDE с подчеркиванием синтаксиса, отладкой и прочими плюшками. Одним из лучших вариантов является использование IDE PluThon: она основана на Eclipse и позволяет разрабатывать приложение на компьютере, а затем передает его по SSH на N900 и выполняет там. Для установки PluThon нужно скачать два архива с pluthon.garage.maemo.org/2nd_edition/installation.html для своей ОС.
После скачивания распаковываем оба архива в одну и ту же папку и запускаем:
  • ./pluthon.sh (Linux)
  • .\pluthon.exe (Windows)
  • ./pluthon.app/Contents/MacOS/esbox (MacOS X)

Примечание: если вы используете Ubuntu 9.10+, Fedora 11 или другую систему, основанную на GTK+ 2.18, то возможны проблемы с запуском PluThon: запустится только пустое окно, которое будет невозможно закрыть. Для устранения этого найдите файл pluthon.ini в каталоге pluton'a и добавьте в конец файла строку:

-Dorg.eclipse.swt.browser.XULRunnerPath=/dev/null

Теперь PluThon готов к работе!

PyMaemo + PyQt4

Из коробки Python поставляется только со стандартными модулями, поэтому необходимо установить дополнительные библиотеки. Также для создания графического интерфейса необходимо установить библиотеку Qt для Python. Для этого выполяем следующие операции в терминале N900 (rootsh должен быть установлен):

sudo gainroot
apt-get install python2.5-runtime
apt-get install python2.5-qt4-core python2.5-qt4-gui


Соглашаемся на предложение установить и ждем конца установки. Теперь все готово для разработки!

Разработка

Как и полагается по старой доброй традиции первое наше приложение будет называться Hello World. Для этого запускаем OpenSSH сервер на N900:

sudo gainroot
/etc/init.d/ssh start


Далее запускаем PluThon и создаем новый проект (меню File -> Pluthon Project -> Empty Python Project), далее жмем Next и выбираем способ удаленного подключения к N900. Способ подключения: WLAN ad-hoc, также не поленитесь зайти в настройки. Здесь необходимо правильно указать IP-адрес девайса (его можно узнать командой ifconfig из-под рута), а также имя пользователя(root) для работы в системе. Во избежание проблем с правами доступа я обычно отлаживаю программы под рутом, хотя это и может быть небезопасно. Далее нажимаем кнопку Next и в появившемся окне можно выбрать версию Python. Лучше всего оставить 2.5, для лучшей совместимости с N900 (интерпретатор Python там версии 2.5.4. Далее нажатием на кнопку Finish мы создаем проект. В папку src добавляем новый модуль: ПКМ -> New -> Pydev Module. Указываем любое имя и нажимаем Finish.

#Первым делом импортируем модули:
import sys                    #Модуль будет использоваться для получения аргументов командной строки, которые необходимы Qt-приложению
from PyQt4.QtCore import *    #Стандартные Qt-библиотеки ядра и графического интерфейса
from PyQt4.QtGui import *

#Далее необходимо инициализировать окно нашего приложения. Делается это способом создания дочернего класса к QMainWindow.

class MainWindow(QMainWindow):
    def __init__(self*args):      
        apply(QMainWindow.__init__, (self,) + args)  #Вызываем конструктор родительского класса с полученными аргументами
        self.setWindowTitle('N900 Buttons!')         #Заголовок приложения
        self.bn1=QPushButton("Hello World"self)    #Создаем кнопку с надписью 'Hello world' и в качестве 
                                                     #родительского виджета (окно в понятии Qt) указываем экземпляр класса (окно)
        self.bn1.setFlat(1)                          #Наша кнопка будет плоской
        self.setCentralWidget(self.bn1)              #Указываем что кнопка является центральным виджетом приложения, 
                                                     #то есть она растянется на все окно
        self.bn1.clicked.connect(exit)               #Указываем что должна делать при нажатии - 
                                                     #в данном случае выходить из приложения

#После того, как окно инициализированно, остается лишь создать экземпляр приложения и экземпляр окна

app=QApplication(sys.argv)   #Создаем экземпляр приложения
win=MainWindow()             #И окно
win.show()                   #Отображаем его на экране
sys.exit(app.exec_())        #И собственно запускаем приложение 


Теперь запускаем приложение Run -> Run As -> PluThon Application. Теперь глядим в наш N900 и там должно появиться чтото примерно такое:

image

На данную кнопку можно нажать, после чего приложение завершится. Не забудьте выключить SSH сервер после работы:

root
/etc/init.d/ssh stop
Tags:
Hubs:
+25
Comments 11
Comments Comments 11

Articles