motofan logo
16 страниц V « < 12 13 14 15 16 >        
> 

Учимся писать эльфов вместе, Обсуждение процесса кодинга

Andy51
сообщение 29.10.2007, 20:13 Закрепленное сообщение!


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255

Рейтинг: 1224



Вот и долгожданное обновление SDK до v0.2

Основные новшества с прошлой версии:
+ Добавлено множество функций в SDK
+ Добавлено два новых примера - на этот раз GUI

Что внутри:
Папка SDK - ну, и так ясно, заголовочные файлы. За описаниями функций заглядываем в эту папку.

helloworld_snd - первый пример эльфа. Несколько нестандартный HelloWorld, заменяет озвучку цифровой клавиатуры системными звуками. Предназначен в основном для изучения структуры приложения (Application), ну и как пример приложения, работающего в фоне.

helloworld_gui - классический HelloWorld эльф, на этот раз с использованием GUI. Выводит сообщение с помощью диалога Notice. Предназначен для изучения структуры простейшего GUI-приложения.

ListTest - пример использования диалога List. Значительно более сложный пример, предназначен для изучения возможностей и принципов управления диалогами.

make_*.bat - батники для сборки эльфов-примеров. Эльфы расчитаны на компиляцию с комплектом ADS. Из-за правил форума, я не могу включить его в SDK, однако оставляю ссылки
http://ifolder.ru/3937671
http://slil.ru/25060171
http://rapidshare.com/files/67580866/ads.7z.html

Lib.o - для функционирования эльфа под моим загрузчиком, необходимо подлинковать этот файл к проекту (в make.bat уже прописан).
Внимание! Этот файл не зависит от конкретной версии прошивки, под которую собирается эльф, но, тем не менее, зависит от версии библиотеки!
В этом SDK уже включен Lib.o для библиотеки v071218 (оч. старый - не забудьте обновить, если понадобятся новые функции)

Пара слов об т.н. Application.
В телефонах motorola есть система AFW, которая позволяет, не затрачивая лишних ресурсов процессора на обеспечение "полноценной" многозадачности, достаточно полноценно работать нескольким приложениям, ориентированным на диалог с пользователем. Как это работает: приложения представляют собой, фактически, набор обработчиков событий(ивентов, events) + структура данных приложения. Откликаясь на те или иные события, приложения поочерёдно обрабатывают списки накопившихся ивентов. Таким образом, мы фактически имеем невытесняющую многозадачность.
Есть теоретическая возможность писать и эльфы, выделенные в отдельный процесс(task), но эта часть всё ещё в разработке.

Книги по Си
  1. Руководство полного идиота по программированию (на языке Си) - Не смотря на такое название все азы разжёваны. Если вы вообще никогда не видели Си, начните с этой книги
  2. Герберт Шилдт, "Полный справочник по С (4-е издание)"
    Прикрепленный файл Spr_po_C.rar   ( 934.62 килобайт ) Кол-во скачиваний: 1153
  3. "Язык программирования C"
    Прикрепленный файл C_book.zip   ( 220.86 килобайт ) Кол-во скачиваний: 897
Исходники эльфов
  1. SRC by om2804
  2. SRC by G-XaD
SDK
  1. SDK by om2804
  2. SDK by G-XaD
Эльфостроение на motoWiki

Компилятор + исходники от om2804 для EP1 скачать

Сообщение отредактировал om2804 - 3.5.2011, 13:59
Прикрепленный файл SDKv02.rar   ( 24.88 килобайт ) Кол-во скачиваний: 2172
Прикрепленный файл C_book.zip   ( 220.86 килобайт ) Кол-во скачиваний: 897
Прикрепленный файл Spr_po_C.rar   ( 934.62 килобайт ) Кол-во скачиваний: 1153
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
tim apple
сообщение 21.2.2010, 15:59


Мастер
****

Группа: Разработчики
Сообщений: 260
Регистрация: 13.7.2007
Из: РФ, Башкирия, Стерлитамак
Пользователь №: 141 375
Модель телефона: ---
Прошивка: ---

Рейтинг: 435



Fenja,
Код
JavaStartMarquee(SplitPath(TunesTrackU, L"/"));
StartTimer(1000,13,0,app);


Как видно по коду тект должен убиваться по таймеру через 1 секунду. Вот кусок из обработчика таймера:
Код
case 13:
        JavaStopMarquee(jsapi_marquee_text);
        break;


У тебя же код не убирается сам, и более того, не убирается прямым вызовом JavaStopMarquee.
Смею предположить, что адрес ф-ции JavaStopMarquee или переменной jsapi_marquee_text в либе неверен.

Сообщение отредактировал tim apple - 21.2.2010, 16:01
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
zema00
сообщение 9.4.2010, 10:33


Опытный
***

Группа: Пользователи
Сообщений: 112
Регистрация: 19.6.2009
Пользователь №: 201 595
Модель телефона: v3r
Прошивка: d3r

Рейтинг: 35



Скажите, как выводить анимированый Гиф ? , т.е. чтобы показывались все кадры, а не только первый .
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Alesha_Pl
сообщение 9.4.2010, 10:45


Гуру
******

Группа: Почётные мотофаны
Сообщений: 986
Регистрация: 19.5.2005
Из: Россия, г.Петрозаводск
Пользователь №: 42 716
Модель телефона: e398
Прошивка: 49R+EP1+EP2

Рейтинг: 681



zema00, под какой эльaпак?
Если под первый, то вот можешь поковырять мой мод диктофона, там есть вывод анимации.
Прикрепленный файл Dictaphone_1.1_src.zip   ( 245.93 килобайт ) Кол-во скачиваний: 81
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
zema00
сообщение 9.4.2010, 11:01


Опытный
***

Группа: Пользователи
Сообщений: 112
Регистрация: 19.6.2009
Пользователь №: 201 595
Модель телефона: v3r
Прошивка: d3r

Рейтинг: 35



Цитата(Alesha_Pl @ 9.4.2010, 14:45) *

zema00, под какой эльaпак?
Если под первый, то вот можешь поковырять мой мод диктофона, там есть вывод анимации.


Да, под первый. Спасибо, посмотрю :)



Добавил. Посмотрите пожалуйста, где ошибка? Что-то не компилится.. :( Хотелось бы чтоб иконки погоды были анимированые..

Сообщение отредактировал zema00 - 9.4.2010, 15:54
Прикрепленный файл informer1.rar   ( 26.96 килобайт ) Кол-во скачиваний: 65
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
zema00
сообщение 9.4.2010, 13:45


Опытный
***

Группа: Пользователи
Сообщений: 112
Регистрация: 19.6.2009
Пользователь №: 201 595
Модель телефона: v3r
Прошивка: d3r

Рейтинг: 35



Цитата(tim apple @ 9.4.2010, 17:15) *

zema00,
напиши сюда сообщения компилятора


В буфер лог не копируется, поэтому прикрепляю скрин crazy.gif
Прикрепленное изображение
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
tim apple
сообщение 10.4.2010, 3:29


Мастер
****

Группа: Разработчики
Сообщений: 260
Регистрация: 13.7.2007
Из: РФ, Башкирия, Стерлитамак
Пользователь №: 141 375
Модель телефона: ---
Прошивка: ---

Рейтинг: 435



zema00,
понятно же написано..
строка 824: неверное кол-во параметров в вызове StartAutomationId.
сравни:
Код
UINT32 StartAnimationId( UINT8 *PIC, INT16 x, INT16 y, UINT16 anchor, UINT16 SIZE);
StartAnimationId( info_weather.Picture, info_weather.PicRes, info_weather.Picture_X, info_weather.Picture_Y);

строка 1396: по мнению компилятора ты что-то несуразное написал.
Код
if (info_weather.Show_Picture , )  {

no comments...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
llldimedrolll
сообщение 22.4.2010, 19:27


Мастер
****

Группа: Разработчики
Сообщений: 212
Регистрация: 30.3.2009
Из: Украина,Краснодон,Луг область
Пользователь №: 196 795
Модель телефона: ROKR E1, N73
Прошивка: DAR 2.16


Настроение:
Ура Весна!!!=)



Рейтинг: 200



Здрасте!Вот решил попробывать портануть эльф ToneDBKiller с еп1 на еп2 вроде сделал, но на телефоне незапускается(При компиляции ошибок невыдаёт прикрипляю исходник гляньте плиз!ткните носом что может быть неправильно
Прикрепленный файл ToneDBKiller.rar   ( 3.06 килобайт ) Кол-во скачиваний: 64
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
tim apple
сообщение 23.4.2010, 2:02


Мастер
****

Группа: Разработчики
Сообщений: 260
Регистрация: 13.7.2007
Из: РФ, Башкирия, Стерлитамак
Пользователь №: 141 375
Модель телефона: ---
Прошивка: ---

Рейтинг: 435



llldimedrolll,
забыл это
Код
evcode_base = ldrInitEventHandlersTbl( main_state_handlers, evcode_base );
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
llldimedrolll
сообщение 23.4.2010, 9:37


Мастер
****

Группа: Разработчики
Сообщений: 212
Регистрация: 30.3.2009
Из: Украина,Краснодон,Луг область
Пользователь №: 196 795
Модель телефона: ROKR E1, N73
Прошивка: DAR 2.16


Настроение:
Ура Весна!!!=)



Рейтинг: 200



tim apple, добавил всё равно нехочет((

Сообщение отредактировал llldimedrolll - 23.4.2010, 9:38
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
tim apple
сообщение 23.4.2010, 10:48


Мастер
****

Группа: Разработчики
Сообщений: 260
Регистрация: 13.7.2007
Из: РФ, Башкирия, Стерлитамак
Пользователь №: 141 375
Модель телефона: ---
Прошивка: ---

Рейтинг: 435



llldimedrolll,
тогда срочно заводи дружбу с мидвеем и dbg()

Сообщение отредактировал tim apple - 23.4.2010, 10:48
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
baat
сообщение 23.4.2010, 11:44


Самый Наглый
******

Группа: В отставке
Сообщений: 1 282
Регистрация: 18.5.2006
Из: Дом, милый дом...
Пользователь №: 83 674
Модель телефона: старая модель...
Прошивка: какая уж есть...
Победитель конкурса 2008


Настроение:
...



Рейтинг: 1535



tim apple, а консоль и запись в лог-файл на флешке, нынче не в почёте?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
tim apple
сообщение 23.4.2010, 12:08


Мастер
****

Группа: Разработчики
Сообщений: 260
Регистрация: 13.7.2007
Из: РФ, Башкирия, Стерлитамак
Пользователь №: 141 375
Модель телефона: ---
Прошивка: ---

Рейтинг: 435



baat,
про консоль промолчу, а лог-файл требуется крайне редко (главным образом для логирования на этапе загрузки телефона)

Сообщение отредактировал tim apple - 23.4.2010, 12:08
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
harchello
сообщение 24.4.2010, 9:27


Интересующийся
**

Группа: Пользователи
Сообщений: 34
Регистрация: 1.12.2008
Пользователь №: 187 435
Модель телефона: Motorola

Рейтинг: 4



Как можно выличить ошибку:
Код
BUILD DRMCHANGER DEBUG
LINK DRMChanger_dbg_tmp.elf
c:\devkitPro\devkitARM\bin\arm-eabi-ld.exe: cannot find std.sa
make: *** [DRMChanger_dbg_tmp.elf] Error 1

Исходники скачал с svn. Сам файл std.sa находится в папке "libgen", там же постлинкер.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DarkCoder
сообщение 24.4.2010, 11:20


Интересующийся
**

Группа: Пользователи
Сообщений: 70
Регистрация: 26.9.2009
Пользователь №: 206 965
Модель телефона: Motorola V3i

Рейтинг: 34.5



У меня файл std.sa находится в папке elfs2 и всё нормально собирается. Короче должен быть в путях он.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
harchello
сообщение 24.4.2010, 13:17


Интересующийся
**

Группа: Пользователи
Сообщений: 34
Регистрация: 1.12.2008
Пользователь №: 187 435
Модель телефона: Motorola

Рейтинг: 4



DarkCoder, спасибо! Разобрался, но сталкнулся с другой:
Код
BUILD DRMCHANGER DEBUG
PL DRMChanger_dbg.elf
PostLinker utility v1.2.31
by Andy51 2009-2010
make: *** [DRMChanger_dbg.elf] Error 127

Как ее можно побороть?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
tim apple
сообщение 26.4.2010, 2:02


Мастер
****

Группа: Разработчики
Сообщений: 260
Регистрация: 13.7.2007
Из: РФ, Башкирия, Стерлитамак
Пользователь №: 141 375
Модель телефона: ---
Прошивка: ---

Рейтинг: 435



harchello,
make.exe должен быть от Mingw, а не msys.
чтобы узнать набери в консоли: make -v

Сообщение отредактировал tim apple - 26.4.2010, 2:02
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
harchello
сообщение 27.4.2010, 13:28


Интересующийся
**

Группа: Пользователи
Сообщений: 34
Регистрация: 1.12.2008
Пользователь №: 187 435
Модель телефона: Motorola

Рейтинг: 4



tim apple, спасибо! Проблема была в make.exe
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
llldimedrolll
сообщение 30.5.2010, 9:23


Мастер
****

Группа: Разработчики
Сообщений: 212
Регистрация: 30.3.2009
Из: Украина,Краснодон,Луг область
Пользователь №: 196 795
Модель телефона: ROKR E1, N73
Прошивка: DAR 2.16


Настроение:
Ура Весна!!!=)



Рейтинг: 200



в чём у мя ошибка

obj\Release\helloworld_snd.o||In function `Timer':|
helloworld_snd.c:(.text+0xf8)||undefined reference to `EV_UNLOC_KPAD'|
||=== Сборка закончена: 1 ошибок, 0 предупреждений ===|




Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
baat
сообщение 30.5.2010, 9:31


Самый Наглый
******

Группа: В отставке
Сообщений: 1 282
Регистрация: 18.5.2006
Из: Дом, милый дом...
Пользователь №: 83 674
Модель телефона: старая модель...
Прошивка: какая уж есть...
Победитель конкурса 2008


Настроение:
...



Рейтинг: 1535



llldimedrolll, в функции Timer...

там ты ссылаешься на некое "EV_UNLOC_KPAD", оно такое не знает...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
llldimedrolll
сообщение 30.5.2010, 9:33


Мастер
****

Группа: Разработчики
Сообщений: 212
Регистрация: 30.3.2009
Из: Украина,Краснодон,Луг область
Пользователь №: 196 795
Модель телефона: ROKR E1, N73
Прошивка: DAR 2.16


Настроение:
Ура Весна!!!=)



Рейтинг: 200



ну я понял а конкретней
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
baat
сообщение 30.5.2010, 9:37


Самый Наглый
******

Группа: В отставке
Сообщений: 1 282
Регистрация: 18.5.2006
Из: Дом, милый дом...
Пользователь №: 83 674
Модель телефона: старая модель...
Прошивка: какая уж есть...
Победитель конкурса 2008


Настроение:
...



Рейтинг: 1535



llldimedrolll, конкретнее код дай, скажу где ошибка...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
llldimedrolll
сообщение 30.5.2010, 9:42


Мастер
****

Группа: Разработчики
Сообщений: 212
Регистрация: 30.3.2009
Из: Украина,Краснодон,Луг область
Пользователь №: 196 795
Модель телефона: ROKR E1, N73
Прошивка: DAR 2.16


Настроение:
Ура Весна!!!=)



Рейтинг: 200



baat, держи
Прикрепленный файл 1.rar   ( 2.36 килобайт ) Кол-во скачиваний: 71
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
baat
сообщение 30.5.2010, 9:49


Самый Наглый
******

Группа: В отставке
Сообщений: 1 282
Регистрация: 18.5.2006
Из: Дом, милый дом...
Пользователь №: 83 674
Модель телефона: старая модель...
Прошивка: какая уж есть...
Победитель конкурса 2008


Настроение:
...



Рейтинг: 1535



llldimedrolll, AFW_CreateInternalQueuedEvAux( *EV_UNLOC_KPAD-0xE , 0x65, 0, 0 ); // разблокируем клавиатуру
вот тут смотри

а если ldrGetConstVal(EV_UNLOC_KPAD)-0xE написать вместо *EV_UNLOC_KPAD-0xE или просто без '*'?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
llldimedrolll
сообщение 30.5.2010, 9:55


Мастер
****

Группа: Разработчики
Сообщений: 212
Регистрация: 30.3.2009
Из: Украина,Краснодон,Луг область
Пользователь №: 196 795
Модель телефона: ROKR E1, N73
Прошивка: DAR 2.16


Настроение:
Ура Весна!!!=)



Рейтинг: 200



всё равно чёт непойму(
можеш поподробней написать что куда если не трудно

тогда получается


-------------- Build: Release in HeadsetIV ---------------

Компиляция: helloworld_snd.c
C:\MotoEDK\Projects\HeadsetIV\helloworld_snd.c: In function '_start':
C:\MotoEDK\Projects\HeadsetIV\helloworld_snd.c:73: warning: unused variable 'IVFile'
C:\MotoEDK\Projects\HeadsetIV\helloworld_snd.c: In function 'Timer':
C:\MotoEDK\Projects\HeadsetIV\helloworld_snd.c:167: warning: passing argument 1 of 'ldrGetConstVal' makes integer from pointer without a cast
c:\MotoEDK\SDK/loader2.h:91: note: expected 'UINT16' but argument is of type 'const UINT32 *'
Компоновка консольная программа: bin\Release\HeadsetIV.exe
obj\Release\helloworld_snd.o: In function `Timer':
helloworld_snd.c:(.text+0xfc): undefined reference to `EV_UNLOC_KPAD'
Процесс завершился со статусом 0 (0 минут, 0 секунд)
1 ошибок, 2 предупреждений



Сообщение отредактировал llldimedrolll - 30.5.2010, 10:20
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 30.5.2010, 10:03


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255

Рейтинг: 1224



llldimedrolll, если для EP2, то нужно использовать EV_KEYPAD_UNLOCK, причём так использовать:
Код
UINT32 unlock_evt = ldrGetConstVal(EV_KEYPAD_UNLOCK); // В unlock_evt будет код нужного ивента
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
llldimedrolll
сообщение 30.5.2010, 10:21


Мастер
****

Группа: Разработчики
Сообщений: 212
Регистрация: 30.3.2009
Из: Украина,Краснодон,Луг область
Пользователь №: 196 795
Модель телефона: ROKR E1, N73
Прошивка: DAR 2.16


Настроение:
Ура Весна!!!=)



Рейтинг: 200



это вместо этого писать AFW_CreateInternalQueuedEvAux( *EV_UNLOC_KPAD-0xE , 0x65, 0, 0 ); // разблокируем клавиатуру???
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
baat
сообщение 30.5.2010, 10:34


Самый Наглый
******

Группа: В отставке
Сообщений: 1 282
Регистрация: 18.5.2006
Из: Дом, милый дом...
Пользователь №: 83 674
Модель телефона: старая модель...
Прошивка: какая уж есть...
Победитель конкурса 2008


Настроение:
...



Рейтинг: 1535



llldimedrolll, я ж тебе написал... и Andy51 повторил, что нужно использовать ldrGetConstVal...
в начале своей функции Timer (следующая строчка после
Код
UINT32 Timer( EVENT_STACK_T *ev_st,  APPLICATION_T *app )
{

) пишешь:
Код
UINT32 unlock_evt = ldrGetConstVal(EV_KEYPAD_UNLOCK); // В unlock_evt будет код нужного ивента

а потом вместо
Код
AFW_CreateInternalQueuedEvAux( *EV_UNLOC_KPAD-0xE , 0x65, 0, 0 ); // разблокируем клавиатуру

пишешь
Код
AFW_CreateInternalQueuedEvAux(unlock_evt , 0x65, 0, 0 ); // разблокируем клавиатуру


п.с. в асю можно ещё людям писать, включая меня, и они подскажут быстрее...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
G-XaD
сообщение 30.5.2010, 19:34


Мастер
****

Группа: Разработчики
Сообщений: 171
Регистрация: 6.11.2007
Из: Donetsk City / Ukraine
Пользователь №: 153 083
Модель телефона: E1, k810
Прошивка: r373_g_0e.30.79r

Рейтинг: 323



Цитата(Andy51 @ Сегодня, 13:03)
UINT32 unlock_evt = ldrGetConstVal(EV_KEYPAD_UNLOCK);
*

Зачем так извращаться? Можно и так:
Код
AFW_CreateInternalQueuedEvAux( ldrGetConstVal(EV_KEYPAD_UNLOCK) , 0x65, 0, 0 );
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
zeDDer
сообщение 30.5.2010, 21:00


mCore hacker
*****

Группа: Разработчики
Сообщений: 474
Регистрация: 27.6.2007
Из: Беларусь, Слуцк
Пользователь №: 139 587
Модель телефона: V3x
Прошивка: У вас такой нет)
Финалист Конкурса 2010

Рейтинг: 500



G-XaD, нам то это и понятно. На самом деле удобнее читать код который написал baat.
Мне, тебе и baat будет понятен твой вариант. Но человеку будет не понятно. ИМХО лучше занять две строки чтобы было понятно, чем одну но короче.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
baat
сообщение 30.5.2010, 21:00


Самый Наглый
******

Группа: В отставке
Сообщений: 1 282
Регистрация: 18.5.2006
Из: Дом, милый дом...
Пользователь №: 83 674
Модель телефона: старая модель...
Прошивка: какая уж есть...
Победитель конкурса 2008


Настроение:
...



Рейтинг: 1535



G-XaD, чтоб біло понятнее, что откуда...
и не возникало желание писать такое
Цитата
llldimedrolll (14:52:30 30/05/2010)
0xE = ldrGetConstVal(EV_KEYPAD_UNLOCK); //код нужного ивента
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
zema00
сообщение 2.6.2010, 11:46


Опытный
***

Группа: Пользователи
Сообщений: 112
Регистрация: 19.6.2009
Пользователь №: 201 595
Модель телефона: v3r
Прошивка: d3r

Рейтинг: 35



Скажите пожалуйста, как выводить на экран нужные координаты из изображения? т.е. к примеру нужно прикрепленный файл не весь отобразить, а только вырезку из него, скажем по штрине 32х32, по высоте 64х32.

Сообщение отредактировал zema00 - 2.6.2010, 11:47
Прикрепленное изображение
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 2.6.2010, 11:48


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255

Рейтинг: 1224



zema00, уточняй сразу - чем выводить? Канвасом, через драйвер, на десктопе?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
zema00
сообщение 2.6.2010, 12:10


Опытный
***

Группа: Пользователи
Сообщений: 112
Регистрация: 19.6.2009
Пользователь №: 201 595
Модель телефона: v3r
Прошивка: d3r

Рейтинг: 35



Andy51,
crazy.gif вот этим, под еп1:
Код
UINT32 DrawImage( BYTE *picture, RESOURCE_ID picture_res, INT16 x, INT16 y)
{
    GRAPHIC_REGION_T region;
    UINT16 height, width;

    utility_get_image_size(picture_res, &width, &height);

    region.ulc.x=x;
    region.ulc.y=y;
    region.lrc.x=x+width+1;
    region.lrc.y=y+height+1;
    // рисует картинку на рабочем столе. Gif или bitmap
    utility_draw_image( picture_res, region, NULL, NULL);

    return RESULT_OK;
}


Сообщение отредактировал zema00 - 2.6.2010, 12:11
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 2.6.2010, 17:29


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255

Рейтинг: 1224



zema00, не, с utility_draw_image не получится. Могу предложить две альтернативы:
1) Немного "сиплюсплюса" на асме - и у тебя свой вариант utility_draw_image с блекджеком и заданием области картинки для вывода. Я приблизительно так и делал в патче APSkins.
2) Использовать обычный анимированный gif, в конце концов.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
zema00
сообщение 3.6.2010, 13:42


Опытный
***

Группа: Пользователи
Сообщений: 112
Регистрация: 19.6.2009
Пользователь №: 201 595
Модель телефона: v3r
Прошивка: d3r

Рейтинг: 35



Цитата(Andy51 @ 2.6.2010, 21:29) *

2) Использовать обычный анимированный gif, в конце концов.


В каком файле SDK описано как выводить анимацию ? Мне тут прикладывали исходники какого-то эльфа, но от них толку мало..
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
G-XaD
сообщение 4.6.2010, 13:32


Мастер
****

Группа: Разработчики
Сообщений: 171
Регистрация: 6.11.2007
Из: Donetsk City / Ukraine
Пользователь №: 153 083
Модель телефона: E1, k810
Прошивка: r373_g_0e.30.79r

Рейтинг: 323



zema00,
Исходники Tunes (svn://svn.vilko.ru/elfs2/Tunes/libs/canvas/canvas.c). Функции StartAnimationId и StopAnimationId.


Выяснил, как правильно работать с таймерами. В SDK в структуре EVENT_T добавил поле seqnum, это уникальный номер, который генерируется на запрос, вызываемый с использованием структуры IFACE_DATA_T.
Через IFACE_DATA_T::handle возвращается seqnum, который будет таким же в ивенте. Это каксается всех функций а не только таймеров.

В функциях
UINT32 DL_ClkStartTimer( IFACE_DATA_T* iface, UINT32 period, UINT32 id );
UINT32 DL_ClkStartCyclicalTimer( IFACE_DATA_T* iface, UINT32 period, UINT32 id );
id на самом деле доп. данные, которые будут в аттаче к ивенту срабатывания таймера. Например если приложение должно генерировать повторы кнопки при зажатии сюда удобнее будет поставить код кнопки, чем запоминать в глоб. переменной.

Добавлено позже (4.6.2010, 16:37):
Например:
Код
// сюда запоминаем таймеры
UINT32 uTimers[1];

    IFACE_DATA_T    iface;
    iface.port = port;
    iface.handle = 0;
    // создаем таймер
    if ( DL_ClkStartTimer( &iface, 1000, 0 ) == 1 ) {
        uTimers[0] = iface.handle;
    }


UINT32 HandleTimerExpired( EVENT_STACK_T * ev_st, APPLICATION_T * app ) {
    EVENT_T * pEvent = AFW_GetEv(ev_st);
    if ( pEvent->seqnum == uTimers[0] ) {
        // сработал наш таймер
        // ...
    }
}
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
baat
сообщение 6.6.2010, 20:52


Самый Наглый
******

Группа: В отставке
Сообщений: 1 282
Регистрация: 18.5.2006
Из: Дом, милый дом...
Пользователь №: 83 674
Модель телефона: старая модель...
Прошивка: какая уж есть...
Победитель конкурса 2008


Настроение:
...



Рейтинг: 1535



как использовать HAPI_KEYPAD_get_keycode() на l7e? в сум и либу адрес добавил, на таймер повесил код выводить в консоль, значение всегда 0... ничего не выходит... или опять только для е398?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
tim apple
сообщение 7.6.2010, 2:39


Мастер
****

Группа: Разработчики
Сообщений: 260
Регистрация: 13.7.2007
Из: РФ, Башкирия, Стерлитамак
Пользователь №: 141 375
Модель телефона: ---
Прошивка: ---

Рейтинг: 435



baat,
на L7e и других телефонах с TWOPOLE-клавой эта ф-ция возвращает состояние одного столбца клавиатурной матрицы. без селектирования столбцов она бесполезна.
пример реализации можно увидеть в дуалбуте для V3i с паролем.
у меня не получилось реализовать это в эльфе - сразу рибутило телефон.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
baat
сообщение 7.6.2010, 7:08


Самый Наглый
******

Группа: В отставке
Сообщений: 1 282
Регистрация: 18.5.2006
Из: Дом, милый дом...
Пользователь №: 83 674
Модель телефона: старая модель...
Прошивка: какая уж есть...
Победитель конкурса 2008


Настроение:
...



Рейтинг: 1535



tim apple, ладно, спасибо
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
zeDDer
сообщение 12.6.2010, 14:49


mCore hacker
*****

Группа: Разработчики
Сообщений: 474
Регистрация: 27.6.2007
Из: Беларусь, Слуцк
Пользователь №: 139 587
Модель телефона: V3x
Прошивка: У вас такой нет)
Финалист Конкурса 2010

Рейтинг: 500



Опять извиняюсь за отклонение от темы. Возник вопрос: что есть EV_PM_API_EXIT?
Это какой-то ID по которому из cstLibrary достаётся значение ивента для ProcessManager, который потом используется для завершения эльфа?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Учимся писать эльфов вместе, Обсуждение процесса кодинга · Эльфы, их разработка и портирование · Forum
 

16 страниц V « < 12 13 14 15 16 >
Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 18.7.2025, 5:31

Форум живёт: