Донецкий техникум промышленной автоматики

Пишемо програму на Python під Symbian в Ubuntu

  1. Установка Python в телефон - PyS60
  2. документація
  3. Налаштування Python Bluetooth Console
  4. Редагування файлів на телефоні за допомогою obexfs
  5. Емулятор appuifw на wxWidgets
  6. щось працює
  7. Що ще?

November 6, 2009 revised November 9 2009 Bluetooth obexfs PyS60 Python Symbian Symbian S60v5

Якби я знав, що програми для Symbian можна писати на такому зручному API до такого простого мови, як Python, я б взагалі ніколи не замислювався про вибір телефону, а відразу брав Нокію (будь-яку Нокію на Symbian S60, а то і SE на UIQ ). Коротше, взявся пробувати.

Установка Python в телефон - PyS60

качаємо Python і PythonScriptShell . Другий пакет не підписаний, підписати можна на Symbian Signed , Після чого обидва пакети благополучно встановлюються в телефон. Перший ніяк себе не проявляє, зате другий додає консоль, що працює по блютус або прямо з телефону, а також інтерпретатор.

документація

Документація по пітонові , зокрема - документація по платформі S60 . Вона дуже докладна, практично як підручник.

Налаштування Python Bluetooth Console

Прокидаємо порт для Bluetooth (одноразово)

sudo apt-get install bluez-utils # якщо ще чогось треба, відписуйтеся sdptool add-channel = 2 SP

Відкриваємо порт на прослуховування (перед з'єднанням)

Тепер запускаємо на телефоні консоль, просимо підключитися до комп'ютера. rfcomm на це повинен заявити, що з'єднання встановлено. Залишилося відкрити консоль (rfcomm не вбивати):

Пишемо пітоновскій код, він виконується на телефоні. По-моєму, це зручно тільки для перевірки можливостей телефону на льоту, наприклад, спробуй:

import audio audio. say ( "This is the phone talking")

Редагування файлів на телефоні за допомогою obexfs

Навіщо взагалі копіювати скрипти на телефон? Давай писати їх прямо там.

Товариші пітоновци придумали ряд велосипедів для передачі файлів між телефоном і комп'ютером, і, так би мовити, полегшеної налагодження. Не розумію, навіщо, якщо є старий добрий протокол OBEX . Однак GVFS-модуль (той самий, який «Огляд файлів на пристрої» з gnome-bluetooth) не дозволив мені редагувати файли в vim. зате obexfs дозволив:

sudo apt-get install obexfs # дізнаємося MAC-адресу телефону hciconfig reset hcitool scan # монтуємо mkdir ~ / phone obexfs -b MA: CA: DD: RE: SS ~ / phone # готово! cd ~ / phone / E: / data / python vim helloworld.py

Нагадаю, що в пітоновской консолі є можливість запускати скрипти з папки E: \ data \ python. Неймовірно зручно, ніяких емуляторів не потрібно.

До речі, obexfs працює і без блютус, тобто по USB.

UPD 9.11.2009: на жаль, obexfs не хоче передавати дату зміни файлів. Тому я не рекомендую використовувати його ні для чого, крім налагодження скриптів. А ще пітон відмовляється підключати модулі без дати зміни, тому я написав скрипт, який її проставляє автоматично .

Емулятор appuifw на wxWidgets

А ще можна налагоджувати GUI на Linux. Для цього добрі люди написали бібліотечку PyS60-compat -
правда, вона не на 100% сумісна з телефонним API, так що використовувати її треба обережно. Може, справа в якихось тонкощах пітона, які я поки не знаю, але примітивна програма, запустити у мене на комп'ютері, відмовилася працювати на телефоні, поки я не поміняв лапки на подвійні.

щось працює

А ось і шматок працюючого коду. Це так, щоб скопіпастіть і перевірити, що все працює.

Так, російські символи, як і багато інших, цілком підтримуються, оскільки API використовує UTF-8.

# - * - coding: utf-8 - * - import appuifw, e32 # Подія на вибір елемента в списку def lbox_observe (): appuifw. note (items [lb. current ()]) # Подія на кнопку виходу def quit () app_lock. signal () # Налаштування програми appuifw. app .title = u "Listbox" appuifw. app .screen = 'normal' appuifw. app .exit_key_handler = quit # Елементи списку items = [u "1", u "2", u "перевірка", u "an item", u "foobar"] # Створюємо список і показуємо його lb = appuifw. Listbox (items, lbox_observe) appuifw. app .body = lb # Основний потік додатку закінчено, чекаємо сигналу про завершення роботи app_lock = e32. Ao_lock () app_lock. wait ()

Що ще?

Купа прикладів з книги Mobile Python Book .
Всякі корисності в Nokia Wiki .

Ще добре б розібратися зі створенням SIS-пакетів в Ubuntu, але мені це найближчим часом ні до чого.

Сподобався пост Сподобався пост? почастуєте кави

Сподобався пост?