Наконец то я добрался и до Symbian. Давно слышал о возможности использовать Python на платформе S60 операционной системы Symbian. Установить PythonScriptShell на смартфон оказалось довольно таки просто. Достаточно было определить версию платформы и скачать необходимый PythonScriptShell. Но после этого начались свои заморочки. Самая первая это то что на телефоне сценарии питона помещаются в его папку. И об отдельном запуске как более или менее самостоятельного приложения и речи быть не может. Для подобных целей необходимо собирать sis пакеты. И тут началось....
Дело обстоит так что для версий Symbian ниже 9 пакеты sis собирать на windows проще чем на linux. Для этого необходима утилита py2sis, которая хоть и написана на питоне но использует windows приложения для создания пакетов sis. Продолжительных скитаний по интернету нашел утилиту ensymble, которая есть в репозиториях Debian GNU/Linux но она создает sis файлы для версий Symbian выше 9.
Я уже потерял всякие надежды о комфортном запуске приложений, да и подработка параллельно работы меня вымотала. Но когда появилось немного свободного времени и вдохновения я приступил к чтению одного занятного чтива. В процессе прочтения я открыл для себя процедуру start_server() в составе модуля e32. Но эта процедура запускает приложение, которое в дальнейшем не может использовать модуль appuifw. Это ставит крест графическом интерфейсе и собственно эта процедура подходит для запуска сервисных приложений. Я стал искать замену этой процедуре и нашел решение. Сценарии питона можно запускать через execfile().
Рецепт запуск сценариев Python на Symbian на лету без установок и копирования в папку Python.
Я поступил так как мне советовали раньше но со своими дополнениями. Все файлы питона на телефоне ассоциируются с приложением appmrg. Это приложение написано на Python и запускаясь предлагает определить тип файла (приложение или модуль), после чего оно копирует сценарий питона в папку my рабочего каталога Python. Для запуска же неоходимо запустить интерпретатор Python и выбрать в меню Run script.
Появиться список всех доступных скриптов скопированы в рабочий каталога Python. Как я и писал раньше это неудобно. В сети мне посоветовали расскоментировать две строки в файле программы c:\system\Apps\appmgr\default.py(питон у меня стоит на диске с).
Как я писал выше я узнал о возможностях процедур start_server() и execfile(). И решил поэксперементировать. Я добавил эти пункты меню в файл c:\system\Apps\appmgr\default.py. И теперь запуская сценарий питона на своем телефоне я получаю вот такое окошко
У меня есть выбор между:
- Запуском приложения
- Запуск приложения в качестве сервиса
- Установкой приложения
- Копированием его в папку Python
Необходимо в процедуре run переписать несколько строк. Вот мой пример:
else:
actions = [lambda: execfile(filename), # запустить скрипт на выполнение
lambda: e32.start_server(filename), # запустить скрипт как сервис
lambda: script_install(filename), # стандартное. установить скрипт (скопировать)
lambda: standalone_install(filename), # установить как приложение (стандартное комментированное)
lambda: lib_install(filename)] # стандартное. установить модуль (скопировать)
menu = [u"Run",
u"Start_Server",
u"Python script",
u"Standalone app",
u"Python lib module"]
index = appuifw.popup_menu(menu, u"")
try:
if not index == None:
appuifw.app.exit_key_handler = exit_wait
e32.ao_yield()
actions[index]()
if index > 1: #что бы сообщение об установке не выводилось если я запускаю программу
appuifw.note(u"Installation complete", "info")
finally:
appuifw.app.exit_key_handler = None
if should_exit:
appuifw.app.set_exit()
Теперь я получи то что хотел. Запускать мои программы написанные на Python на смартфоне стало не только быстро но и практично. При этом отсутствует процедура сборки sis пакета. Все в духе питона. Быстрая и гибкая разработка.
Работа с Bluetooth console
Набирать приложения на телефоне очень неудобно и долго. Да и интерактивный режим тоже не слишком удобен при вводе с клавиатуры телефона. Для более или менее удобного ознакомления с возможностями Python на Symbian и пробного программирования может пригодиться такая функция интерпретатора Python как Bluetooth console. Она позволяет подключаться к последовательному порту через Bluetooth соединение. В операционных системах GNU/Linux при наличии пакета bluez необходимо сделать следующее (оригинал):
добавляем к вашему устройству bluetooth сервис последовательный порт (Serial Port):
# sdptool add-channel=2 SP
Одноразово. Питон по умолчанию ищет последовательный порт именно на втором канале(каждый сервис имеет свой канал). Перед соединение открываем порт на прослушку:
# rfcomm listen rfcomm2 2
Что бы открыть порт в фоновом режиме используйте:
# rfcomm listen rfcomm2 2 &
В любом случае это необходимо делать каждый раз перед ем как вы собираетесь соединяться по последовательному порту. После отключения эту команду необходимо прописывать снова. Теперь на телефоне запускаем Python и выбираем пункт Bluetooth console. После подтверждения питона об удачном подключении на компьютере в терминате прописываем:
На этом все. Скажу еще что для работы с Bluetooth console на Windows можно воспользоваться стандартной программой HyperTerminal.
На последок: Я только начинаю разбираться с программированием на платформе Symbian с помощью языка программирования Python. В дальнейшем буду выкладывать статьи с описанием некоторых полезных программ и возможностей самого языка на этой платформе и вообще. Долго думал выкладывать ли здесь перечень полезных ссылок, но это было бы глупо потому что даже просто введя слова Python, Symbian в поисковик вы получите массу информации. Желаю удачи. Будут вопросы пишите в комментарий.
0 коммент. on "Python на Symbian"
Отправить комментарий