motofan logo
46 страниц V « < 35 36 37 38 > »         
> 

Софт для ZN5 и прочих MotoMAGX: MGX и PEP, Разработка, портирование и обсуждение нативного софта

EXL
сообщение 26.8.2011, 12:34 Закрепленное сообщение!


Rock The Microphone
********

Группа: Администраторы
Сообщений: 3 140
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4654



Мануал: Компиляция приложений для MotoMAGX OS, создание пакетов

Прикрепленное изображение

Для портирования и сборки приложений для нашей платформы в первую очередь нам нужны:

1. Компьютер с Linux OS. Или Windows OS с установленным Virtual BOX/VMware Player, в крайнем случае под виндой можно воспользоваться AndLinux'ом или Cygwin'ом.
2. SDK & Toolchains для MotoMagX + Исходники программ/приложений.
3. Программист/Разработчик или начинающий программист (1 шт.).

Я рассмотрю наиболее приемлемый многим начинающим разработчикам способ, с использованием популярного дистрибутива Ubuntu 11 (Linux OS) в виртуальной машине VMware Player в Windows OS. Те пользователи, у которых стоит Linux OS на компе, могут скачать SDK & Toolchains | Зеркало | Зеркало | Зеркало и сразу перескочить на пункт #4.

Итак, начнём:

1. Загрузка необходимых для разработки инструментов и файлов:

1.1. Скачиваем ISO-образ диска Ubuntu 11. Я качал себе в городской сетке, пошарьтесь в своих тоже, может найдёте. На всякий случай, ссылка: [Download | Скачать] на скачивание с официального сайта: http://www.ubuntu.com Там вы можете выбрать любую конфигурацию под свой компьютер (amd/i386) и т.д.

1.2. Скачиваем VMware Player - Скачать можно с официального сайта: [Download | Скачать] или тут: [Mirror | Зеркало]

1.3. Скачиваем SDK & Toolchains для MotoMagX. [Download | Скачать] - полная версия, включающая в себя 2 тулчейна SDL (От испанцев) + QT (От Ant-On'a) а также python, bennugd, boost и множество различных библиотек. Инструкция по установке есть внутри или ниже можно прочитать подробно.
Тем, кто хочет разрабатывать приложения на SDL, можно скачать небольшой тулчейн для сборки приложений: [Download | Скачать] [Mirror | Зеркало]

2. Мануалы по установке VMware, Ubuntu и SDK & Toolchains в картинках:*
* - картинки открывать лучше всего в новом окне, нажав колёсико мышки. После открытия воспользуйтесь масштабированием, например, в стандартном просмоторщике картинок.

2.1. Установка программы VMware для самых маленьких.
2.2. Установка Linux OS в программу VMware, на примере Ubuntu 11.
2.3. Установка дополнительных инструментов (VMware-tools) в Ubuntu 11. Необходимо для перемещения файлов между Ubuntu в виртуальной машине и виндой.

2.1.:    2.2.:    2.3.:

Прикрепленное изображение Прикрепленное изображение Прикрепленное изображение

3. Мануалы по установке, текстом.

3.1. Установка VMware-tools для Ubuntu 11.
3.1.1. Стартуем Ubuntu 11, вверху нажимаем "Virtual Machine", затем "Install VMware Tools...
3.1.2. Ждём загрузки инструментов (нужно подключение к интернету!), затем снова вверху нажимаем "Virtual Machine" -> "Install VMware Tools...
3.1.3. С открывшегося диска копируем архив в формате *.tar.gz например в /home/user (user - ваше имя при установке Ubuntu), распаковываем его.
3.1.4. Запускаем терминал и выполняем в нём следующее:
Код

cd /home/user/vmware-tools-distrib
sudo ./vmware-install.pl

После команды sudo надо ввести пароль, который мы указывали при установке Ubuntu.
3.1.5. Умный скрипт сам предложит вам вводить нужные значения (в квадратных скобках), вводите их.
3.1.6. После успешной установки инструментов, перезагрузите компьютер.
3.1.7. Данные инструменты помогут с лёгкостью переносить файлы из Windows в Linux Ubuntu, просто копируя их или перенося из окна в окно, как вы это делали в Windows. Кроме того, появится множество разрешений для экрана системы.

3.2. Общие папки между системами для обмена файлами.
3.2.1. Стартуем Ubuntu 11, вверху нажимаем "Virtual Machine", затем "Virtual Machine Settings"
3.2.2. Переходим на вкладку "Options", выбираем "Shared Folders"
3.2.3. Переключатель "Folder sharing" ставим в положение "Always enabled", нажимаем кнопку "Add".
3.2.4. На компьютере выбираем любую папку, добавляем её, жмём ОК.
3.2.5. Теперь в Ubunte, в папке /mnt/hgfs видим добавленную нами папку из Windows.

4. Установка SDK & Toolchains.

4.1. Скачиваем архив тулчейна (*.tar.gz), перемещаем его в папку /home/user (user - ник при установке Ubuntu).
4.2. Выполняем команды, новая строка - Enter, вместо user естественно пишем своё имя, после команды sudo потребуется ввести пароль, который мы указывали при установке Ubuntu.
Код

sudo mkdir /mmc
sudo chown user -R /opt
sudo chown user -R /home
sudo chown user -R /mmc
sudo ln -s -d /opt/toolchains/motomagx/arm-eabi -t /
mkdir /opt/toolchains
mkdir /home/z6
mkdir /mmc/mmca1
tar -C /opt/toolchains -xzvf /home/user/motomagx-toolchains_12_08_2011.tar.gz
cp /opt/toolchains/motomagx/setenv-z6.sh /home/z6
cp /opt/toolchains/motomagx/setenv-z6-2.sh /home/z6

4.3. Обратите внимание на имя скаченного вами архива с тулчейном! Именно его нужно вводить в восьмой строке кода, приведённого выше!
4.4. Установленный тулчейн:
Прикрепленное изображение

5. Запуск окружения, компиляция программ и helloworld'a.

5.1. Чтобы запустить окружение для компиляции под MotoMagx, достаточно выполнить в терминале следующее:
Код

cd /home/z6
. setenv-z6.sh

После этого, компиляторы, библиотеки и хэдеры будут браться из нашего тулчейна, а не с компьютера.

5.2. HelloWorld.
5.2.1. Создаём пустой файл с именем hello.c в папке /home/z6 (Правой клавишей по пустому месту, "Create Document" -> "Empty File")
5.2.2. Редактируем его содержимое следующим образом, сохраняем:
Код

// Hello World for Motorola Magx!

#include <stdio.h>

int main(void)
{
    printf ("Hello Moto!!!\n");
    return 0;
}

5.2.3. Компилируем:
Код

cd /home/z6
arm-linux-gnueabi-gcc hello.c -o hello

5.2.4. Полученный исполнительный файл "hello" кидаем на телефон и запускаем через телнет!
Код

Mobilinux(TM) 4.1
Welcome 2 Motorola ZN5!
[root@Symbiosis ~]
#> /mmc/mmca1/hello
Hello Moto!!!


5.3. Работа с утилитой Make* и SDL библиотекой.
* - Утилита Make позволяет компилировать достаточно сложные проекты. Подробнее тут: http://ru.wikipedia.org/wiki/Make
5.3.1. Скачиваем следующие исходники, распаковываем в папку /home/z6:
Прикрепленный файл ballgame_src.tar.gz   ( 34 килобайт ) Кол-во скачиваний: 21668

5.3.2. Запускаем терминал и окружение для компиляции, переходим в папку с проектом, выполняем команду make:
Код

cd /home/z6/ballgame_src
make

После выполнения команды будет выполнена компиляция проекта и создан mgx пакет. Для очистки проекта от объектного кода и бинарников, следует выполнить make clean. Для создание mgx пакета - команду make mgx.
5.3.3. Теперь можно кинуть пакет на карту памяти и попробовать запустить. (Для SDL приложений вам потребуется установленные SDL-библиотеки!)
5.3.4. Структура простейшего Makefile для компиляции HelloWorld'a:
Код

# MakeFile for HelloWorld
# Motorola MotoMAGX

CC = arm-linux-gnueabi-gcc  
STRIP = arm-linux-gnueabi-strip
  
CFLAGS = # Необходимые флаги
LDFLAGS = # Необходимые флаги
OPTIMIZATION = -march=armv6j -mtune=arm1136jf-s -mfpu=vfp -O2 # Оптимизация под процессор

INCLUDE = $(CFLAGS) $(OPTIMIZATION) -I/dir # Путь к нужным хэдэрам.
LIBS = $(LDFLAGS) -L/dir # Путь к нужным либам

BIN = hello # Бинарник

all:
    $(CC) -c hello.c -o hello.o $(INCLUDE)
    $(CC) -o $(BIN) hello.o $(LIBS)
    $(STRIP) $(BIN)
clean:
    rm -f ./*.o $(BIN)

Если положить данный Makefile рядом с hello.c, и выполнить make, получим исполнительный файл.
5.3.5. Замена строк, для портирования SDL проектов:
Код

CC:=gcc ---> CC:=arm-linux-gnueabi-gcc
cc=gcc ---> CC=arm-linux-gnueabi-gcc
cxx=g++ ---> CXX=arm-linux-gnueabi-g++
ld=ld ---> LD=arm-linux-gnueabi-ld
ar=ar ---> AR=arm-linux-gnueabi-ar
as=as---> AS=arm-linux-gnueabi-as
oc=oc ---> OC=arm-linux-gnueabi-objcopy
ranlib=ranlib ---> RANLIB=arm-linux-gnueabi-ranlib
strip=strip ---> STRIP=arm-linux-gnueabi-strip
В INCLUDE или CFLAGS добавляем `sdl-config --cflags`
В LIBS или LDFLAGS добавляем `sdl-config --libs` -lнеобходимая_библиотека


5.4. Работа с утилитой configure* и SDL библиотекой.
* - Скрипт configure создаёт Makefile и позволяет компилировать сложные проекты, состоящие из множества файлов. Подробнее тут: http://en.wikipedia.org/wiki/Configure_script
5.4.1. Пример работы. Скачиваем исходники, распаковываем в папку /home/z6:
Прикрепленный файл PTC-demos.tar.gz   ( 33.29 килобайт ) Кол-во скачиваний: 21781

5.4.2. Выполняем следующее:
Код

cd /home/z6/PTC-demos
./configure --host=arm-linux-gnueabi
make

После этих команд у нас появятся исполнительные файлы Fire и Tunnel. Копируем их в корень карточки телефона.
5.4.3. Запускаем через телнет следующим образом:
Код

export LD_LIBRARY_PATH=/mmc/mmca1/games/lib:$LD_LIBRARY_PATH
chmod +x /mmc/mmca1/Fire
/mmc/mmca1/Fire

5.4.4. Для установки файлов в нужную директорию используется prefix и команда make install:
Код

mkdir /home/z6/test
cd /home/z6/PTC-demos
./configure --host=arm-linux-gnueabi --prefix=/home/z6/test
make
make install

После этого нужные нам файлы будут в папке /home/z6/test.
5.4.5. Для чистки объектного кода и бинарников используется команда make clean, для удаления сконфигурированных Makefile'ов используется команда make distclean (полная очистка).

5.5. Деббагер "Segmentation fault"
5.5.1. Качаем gdb и распаковываем архив на карту памяти, в папку /mmc/mmca1/games
Исполнительные файлы должны быть собраны с префиксом '-g' и не должны быть пострипаные
5.5.2. Выполняем (gdb):
Код

ulimit -c unlimited
./<bin_app>
Segmentation fault (core dumped)
файл <core> будет создан
../bin/gdb ./<bin_app> <core>

5.5.3 Выполняем (strace):
Код

../bin/strace ./<bin_app>


5.6. Скрипт запуска для SDL приложений:
Код

#!/bin/sh
mypath=${0%/*}
LIBDIR1=/ezxlocal/download/mystuff/games/lib
LIBDIR2=/mmc/mmca1/games/lib
LIBDIR3=$mypath/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$LIBDIR1:$LIBDIR2:$LIBDIR3
export HOME=$mypath
export SDL_QT_INVERT_ROTATION=1
cd $mypath
sleep 1

exec $mypath/<bin_app>

5.6.1. Если нужен вывод лога в файл, заменяем последнюю строку в скрипте на
Код
exec $mypath/bin_app >$mypath/stdout.txt 2>$mypath/stderr.txt


5.7. HelloWorld с использованием GUI и функций телефона.
5.7.1. Скачиваем архив, распаковываем в /home/z6:
Прикрепленный файл Helloworld_GUI.tar.gz   ( 80.01 килобайт ) Кол-во скачиваний: 21972

5.7.2. Выполняем:
Код

cd /home/z6/папка с нужным проектом
make PLATFORM=EZX-ZN5

или просто make
5.7.3. Кидаем исполнительные файлы на телефон и пробуем запустить, должно получиться что-то типа этого:
Прикрепленное изображение

5.8. Собираем MgxBox.
5.8.1. Скачиваем архив, распаковываем в /home/z6:
Прикрепленный файл MgxBox.tar.gz   ( 5.23 мегабайт ) Кол-во скачиваний: 23231

5.8.2. Выполняем:
Код

cd /home/z6/MgxBox/MgxBox_GUI_ru
make PLATFORM=EZX-ZN5
cd /home/z6/MgxBox/p7zip_9.20.1
make all2
make install
cp -r /mmc/mmca1/p7zip/lib/p7zip /home/z6/MgxBox/Release/app/p7zip

5.8.3. Кидаем папку /home/z6/MgxBox/Release на телефон и пробуем запустить бинарник в папке Release/app, если всё нормально, должно получиться что-то типа этого:
Прикрепленное изображение

6. Создание пакетов вручную.

6.1. Создание MGX пакета:
6.1.1. Создаём папку, помещаем в нее необходимые файлы (дата файлы приложения, исполнительные файлы, скрипт запуска, иконку).
6.1.2. Создаём в папке файл "Имя папки".cfg, редактируем его содержимое следующим образом:
Код

Name = Test
Exec = run.sh
Icon = icon.png
Author = Ant-ON
Version = 1.0
Comment = Port for ZN5 by EXL

Где, Name - имя программы, Exec - запускаемый файл, Icon - иконка, Author - Автор программы, Version - Версия программы, Comment - Комментарий.
6.1.3. Запаковываем папку в любой удобный вам архив (RAR, TAR, GZ, 7Z, ZIP), и переименовываем в "имя программы".mgx

6.2. Создание PEP пакета:
6.2.1. Создаём папку с именем "app", помещаем в нее необходимые файлы (дата файлы приложения, исполнительные файлы, скрипт запуска).
6.2.2. Создаём рядом с папкой файл "description.ini", редактируем его содержимое следующим образом:
Код

[Actions]
Silent=0
InstallApp = 1  
AddAppToMenu = 1

[InstallApp]
Name = Jump n Blob
Exec = run.sh
InstallPath = ../../mmc/mmca1/.Programs/jump_n_blob/
AppLockable = 1
Author = http://www.2d-retroperspectives.org | Philipp. Port by -=Strelok=-, EXL (c) MotoFan.Ru 08.01.2010
Version = 0.1
Daemon = 1
BigIcon= icon.png
AniIcon= icon.png
Icon= icon.png

[AddAppToMenu]
ParentFolder= root

Где, Name - имя программы, Exec - запускаемый файл, Icon | AniIcon | BigIcon - иконка, Author - Автор программы, Version - Версия программы, InstallPath - Путь установки.
6.2.3. Создаём иконку, рядом с папкой "app" и "description.ini".
6.2.4. Запаковываем иконку, папку "app" и "description.ini" в архив формата TAR, затем сжимаем его в GZ переименовываем в "имя программы".pep

7. Полезные ссылки, документация, наши проекты.

7.1. Исходники, сайты с исходниками. Множество интересных проектов есть на code.google.com и sf.net
7.1.1. Исходники проектов, базирующихся на SDL:
libsdl.org/games
libsdl.org/demos
http://dl.openhandhelds.org/cgi-bin/gp2x.cgi?0,0,0,0,46
http://dl.openhandhelds.org/cgi-bin/dingoo.cgi?0,0,0,0,46
7.1.2. Исходники проектов, базирующихся на QT:
http://www.elsix.org/index.php?w=browse - В основном там под Sharp Zaurus, но идеи создания приложений и сорцы найти можно.

7.2. Документация, темы для прочтения:
Пробуем портировать игры и проги сами
Разработка софта под MOTOMAGX, начну небольшой HOWTO
Компиляция нативных приложений под E6/A1200, Создание окружения для компиляции
SDL библиотека
http://plg.lrn.ru/wiki/Заглавная_Страница
http://plg.lrn.ru/doc/sdl/index.html
http://doc.qt.nokia.com

7.3. Проекты:
http://code.google.com/p/open-mgx/ - исходники программ от Ant-On'a
http://code.google.com/p/sdl-magx/ - библиотека SDL HW для MotoMAgx от Ant-On'a
http://code.google.com/p/zmessanger/ - нативная аська, автор Ant-On
http://sourceforge.net/projects/qte2console/ - qte2console от DoomChisel
http://code.google.com/p/motocakerteam/ - исходники программ от испанцев MotoCakerTeam
http://code.google.com/p/zsoft/

8. Мануалы данной темы:

Если кто не может запустить ZN5Encoder в Magic box - пост #290
Нативные заставки на основе портированных мной и Neomoto демок! - пост #291
Мануал по установке Tmake в тулчейн, и правки созданного им MakeFile - пост #484
Изучение разделяемых библиотек (so) - пост #1440
Эмуляция нажатия клавиш на Motorola ZN5 - пост #1684


© EXL for MotoFan.Ru 27.08.2011
Прикрепленный файл ballgame_src.tar.gz   ( 34 килобайт ) Кол-во скачиваний: 21668
Прикрепленный файл PTC-demos.tar.gz   ( 33.29 килобайт ) Кол-во скачиваний: 21781
Прикрепленный файл Helloworld_GUI.tar.gz   ( 80.01 килобайт ) Кол-во скачиваний: 21972
Прикрепленный файл MgxBox.tar.gz   ( 5.23 мегабайт ) Кол-во скачиваний: 23231
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 14.12.2018, 19:07


Гуру
******

Группа: Разработчики
Сообщений: 1 240
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 400



Цитата(VINRARUS @ Вчера, 17:32)
* Есть в LSymbiosis, значит и в новом есть.

Ну т.е. ты все таки не смотрел все моды, более того посмотрел походу только самые древние моды. Ну-ну.
Готов посопорить ниодин из пользователей непоймет что это на хрень busybox_full. И ему даже поиск не поможет, т.к. есть только busybox. Продолжай в том же духе. Поэтому только один ты и пользуешься своими древними прогами.

Не хочешь слушать советов, как хочешь. Дальше даже читать не буду, как обычно бредни ни о чем. В твоих мыслях наверное даже самые продвинутые умы не разберуться.

Сообщение отредактировал fill.sa - 15.12.2018, 6:48
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 16.12.2018, 1:32


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Цитата(fill.sa @ 14.12.2018, 22:07)
* Ну т.е. ты все таки не смотрел все моды

Все популярные смотрел... кроме твоего последних версий, из за зеркального ответа на твоё наплевательство на всех.
Тем не менее в посте програмы я разместил решение шобы и на SAedition MOD юзеры смогли воспользоваться тем чем пользуются юзеры других модов.
Цитата(fill.sa @ 14.12.2018, 22:07)
* Ну т.е. ты все таки не смотрел все моды, более того посмотрел походу только самые древние моды. Ну-ну.

Походу токо ты решыл выпендриться и сделал велосипед с квадратным задним колесом. wink.gif Вот токо бить сидушкой по 5й точке будет не тебе (точнее тебе тоже, но тебе это в кайф), а пользователям твого мода.
Цитата(EXL @ 12.12.2018, 11:47)
* Да не к sed'у или Shell'у в общем, а к собственноручно написанным парсерам XML. Просто сам их писал и потом приходилось переходить на нормальные библиотеки.

Сегодня-завтра, к примеру, сервис прикрутит к XML-выхлопу форматирование аля xmllint --format или добавит к температуре какой-нибудь дополнительный параметр unit_2="fahrenheit" и нужно будет править самописный парсер, чтобы он отработал как нужно. Нет гарантии, что ничего не развалится.

А вот такой написанный на коленке за 5 минут пример из 25-строк должен будет отработать даже в случае изменения форматирования или добавления каких-либо атрибутов:

Шо ты понимаеш под другим форматированием XML?
Цитата(EXL @ 12.12.2018, 11:47)
* Просто потому, что использует библиотеку для правильного парсинга XML.

Ну вот дописал функцию правильного парсинга по названиям параметров (а не как раньше по положению), чем хуже? grin.gif
Spoiler:
Код
#!/bin/sh
#bu VINRARUS
H='"'
CLEAR(){
read DATA TIME POGODKA OPADN VITER VITERMS TEMPERATURA TNSK VOLOGIST HMARN TODI < /dev/null
}
PAR(){
eval "$1="
NAM="$TAM"
YIM=0
while [ "$NAM" != "$YIM" ]
do
    YIM="${NAM%%$H*}"
    NAM="${NAM#*$H}"
    if [ " $2=" = "$YIM" ]
    then
        YIM="${NAM%%$H*}"
        eval "$1=$H$YIM$H"
        break
    fi
done
}
FILTER(){
STOP="${IN##*<}"
OLD=888
while [ "$STOP" != "$IN" ]
do
    OUT="${IN%%<*}"
    TAM=" ${OUT#* }"
    IN="${IN#*<}"
    case  "${OUT%% *}" in
    time) #датаТчас
        PAR TIM from
        TIM="${TIM#*T0}"
        TIM="${TIM#*T}"
        TIM="${TIM%%:*}"
        TIME="$TIM"
        if [ "$TIME" -le "$OLD" ]
        then
            shift
            echo "----- $1 -----"
        fi
        OLD="$TIME"
        DATA="$1"
;;
    symbol) #погода в принципі
        PAR POGODKA name
;;
    precipitation=) #опади
        PAR OPADN type
        if [ -n "$OPADN" ]
        then
            OPADN=", опади"
        fi
;;
    windDirection) #напрямок вітру
        PAR VITER code
;;
    windSpeed) #швидкість вітру
        PAR VITERMS mps
        VITERMS="${VITERMS%.*} m/s"
;;
    temperature) #температура
        PAR TEMPERATURA value
        TEMPERATURA="${TEMPERATURA%.*}°C"
;;
    pressure) #тиск
        PAR TNSK value
        TNSK="${TNSK%.*} hPa"
;;
    humidity) #вологість
        PAR VOLOGIS value
        VOLOGIS="$VOLOGIS%"
;;
    clouds) #стан хмар
        PAR HMARN all
        HMARN="$HMARN%"
;;
    "/time>")
        TODI=$(($TIME+3))
        if [ "$TODI" -ge "24" ]
        then
            TODI=$(($TODI-24))
        fi
echo "$DATA $TIME: $POGODKA
$TEMPERATURA, $Lhumidity $VOLOGIST
$LwindSpeed $VITERMS ($VITER)
$Lclouds $HMARN$OPADN
"
        CLEAR
;;
    "name>"*)
        echo -n "${OUT#*>}"
;;
    "country>"*)
        echo ", ${OUT#*>}"
;;
    esac
done
}
TEXT=`wget "http://api.openweathermap.org/data/2.5/forecast?id=710403&appid=489b47aa8eb421644b28d137d94d7625&mode=xml&units=metric&lang=uk"  -O - `
echo "$TEXT" | while read IN
do
        FILTER сб нд пн вт ср чт пт сб нд
done
[close]


Сообщение отредактировал VINRARUS - 16.12.2018, 1:34
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 16.12.2018, 8:44


Rock The Microphone
********

Группа: Администраторы
Сообщений: 3 140
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4654



Цитата(VINRARUS @ Сегодня, 8:32)
* Шо ты понимаеш под другим форматированием XML?

То, что очень часто любят менять на этих сервисах погоды. Делаем:
[pre=diff]$ diff -Nuar test3.sh test4.sh
--- test3.sh 2018-12-16 15:42:45.651009103 +0700
+++ test4.sh 2018-12-16 15:42:07.833692795 +0700
@@ -98,7 +98,7 @@
esac
done
}
-TEXT=`wget "http://api.openweathermap.org/data/2.5/forecast?id=710403&appid=489b47aa8eb421644b28d137d94d7625&mode=xml&units=metric&lang=uk" -O - `
+TEXT=`wget "http://api.openweathermap.org/data/2.5/forecast?id=710403&appid=489b47aa8eb421644b28d137d94d7625&mode=xml&units=metric&lang=uk" -qO- - | xmllint --format -`
echo "$TEXT" | while read IN
do
FILTER сб нд пн вт ср чт пт сб нд
[/pre]


И твой парсер выше перестаёт работать.

Цитата(VINRARUS @ Сегодня, 8:32)
* Ну вот дописал функцию правильного парсинга по названиям параметров (а не как раньше по положению), чем хуже?

Как минимум тем, что там имеется серьёзная уязвимость. Злоумышленник может сделать в XML буквально следующее:

Код
<clouds value="broken clouds" all="`echo 'Eval is evil!'`" unit="%"></clouds>

И в итоге так можно сделать очень интересные вещи: удалить PDS в телефоне через специально подготовленный XML и твой парсер, украсть важную информацию (ssh-ключ, например) и т. д. Почитай инфу по запросу google://eval безопасность
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 16.12.2018, 18:54


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Цитата(EXL @ Сегодня, 11:44)
* И твой парсер выше перестаёт работать.

Он работает по сути, просто там проблема в 1 проверке условия.
Вот исправлено
Код
#!/bin/sh
#bu VINRARUS
H='"'
OLD=888
CLEAR(){
read DATA TIME POGODKA OPADN VITER VITERMS TEMPERATURA TNSK VOLOGIST HMARN TODI < /dev/null
}
PAR(){
NAM="$TAM"
YIM=0
VAL=
while [ "$NAM" != "$YIM" ]
do
    YIM="${NAM%%$H*}"
    NAM="${NAM#*$H}"
    if [ " $1=" = "$YIM" ]
    then
        YIM="${NAM%%$H*}"
        VAL="$YIM"
        break
    fi
done
}
FILTER(){
STOP="${IN##*<}"
while [ "$OUT" != "$IN" ]
do
    OUT="${IN%%<*}"
    TAM=" ${OUT#* }"
    IN="${IN#*<}"
    case  "${OUT%% *}" in
    time) #датаТчас
        PAR from
        TIM="${VAL#*T0}"
        TIM="${TIM#*T}"
        TIM="${TIM%%:*}"
        TIME="$TIM"
        if [ "$TIME" -le "$OLD" ]
        then
            DEN="${DNI%% *}"
            DNI="${DNI#* }"
            echo "----- $DEN -----"
        fi
        OLD="$TIME"
        DATA="$DEN"
   ;;
    symbol) #погода в принципі
        PAR name
        POGODKA="$VAL"
   ;;
    precipitation=) #опади
        PAR type
        if [ -n "$VAL" ]
        then
            OPADN=", опади"
        fi
   ;;
    windDirection) #напрямок вітру
        PAR code
        VITER="$VAL"
   ;;
    windSpeed) #швидкість вітру
        PAR mps
        VITERMS="${VAL%.*} m/s"
   ;;
    temperature) #температура
        PAR value
        TEMPERATURA="${VAL%.*}°C"
   ;;
    pressure) #тиск
        PAR value
        TNSK="${VAL%.*} hPa"
   ;;
    humidity) #вологість
        PAR value
        VOLOGIS="$VAL%"
   ;;
    clouds) #стан хмар
        PAR all
        HMARN="$VAL%"
   ;;
    "/time>")
        TODI=$(($TIME+3))
        if [ "$TODI" -ge "24" ]
        then
            TODI=$(($TODI-24))
        fi
echo "$DATA $TIME: $POGODKA
$TEMPERATURA, $Lhumidity $VOLOGIST
$LwindSpeed $VITERMS ($VITER)
$Lclouds $HMARN$OPADN
"
        CLEAR
   ;;
    "name>"*)
        echo -n "${OUT#*>}"
   ;;
    "country>"*)
        echo ", ${OUT#*>}"
   ;;
    esac
done
}
TEXT=`wget "http://api.openweathermap.org/data/2.5/forecast?id=710403&appid=489b47aa8eb421644b28d137d94d7625&mode=xml&units=metric&lang=uk"  -O -`
DNI="пн вт ср чт пт сб нд пн"
echo "$TEXT" | while read IN
do
        FILTER
done
[close]

Цитата(EXL @ Сегодня, 11:44)
* Как минимум тем, что там имеется серьёзная уязвимость.

Да, я забыл шо с вебом нада поосторожнее. crazy.gif Выше тоже это исправлено.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 16.12.2018, 21:31


Гуру
******

Группа: Разработчики
Сообщений: 1 240
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 400



Т.к. ссылка на отладчик gdb в шапке умерла, наш гуру ПО EXL собрал нам новую версию, заодно и еще несколько полезных инструментов по отладке.

З.Ы. все проги в архиве уже стрипнутые.

Сообщение отредактировал fill.sa - 16.12.2018, 21:31
Прикрепленный файл motomagx_debug_utils.tar   ( 18.76 мегабайт ) Кол-во скачиваний: 234
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 1.1.2019, 20:04


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Есть возможность для зины скомпилить распознаватель QR кодов по фотке?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 1.1.2019, 20:21


Гуру
******

Группа: Разработчики
Сообщений: 1 240
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 400



VINRARUS,
Ну если найдеш какие-то готовые проекты, желательно старый кют или что-то консольное. Можно будет попробовать собрать.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 2.1.2019, 10:06


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Цитата(fill.sa @ Вчера, 23:21)
* Ну если найдеш какие-то готовые проекты, желательно старый кют или что-то консольное. Можно будет попробовать собрать.

https://fukuchi.org/works/qrencode/
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 2.1.2019, 15:19


Гуру
******

Группа: Разработчики
Сообщений: 1 240
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 400



VINRARUS,
Во первых проблема кто будет писать ПО ? там же библиотека.

А второе, по зависимостям СДЛ 2 у нас нету, я начинал его какраз, но пока все стоит на месте.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 3.1.2019, 5:21


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Цитата(fill.sa @ Вчера, 18:19)
* Во первых проблема кто будет писать ПО ? там же библиотека.

Скормить JPG этой библиотеке правда проблема?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 3.1.2019, 11:30


Гуру
******

Группа: Разработчики
Сообщений: 1 240
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 400



Цитата(VINRARUS @ Сегодня, 6:21)
* а месте.

оно то не проблема, но нужно изучать как работает бибилтека, сишный код и тд.
Ты вроде как только по башу, сишку не знаешь.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 4.1.2019, 5:11


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Цитата(fill.sa @ Вчера, 14:30)
* Ты вроде как только по башу, сишку не знаешь.

Я по шелу, баш отстой.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 4.1.2019, 6:17


Гуру
******

Группа: Разработчики
Сообщений: 1 240
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 400



VINRARUS,
Ну баш тоже шел )
Да и помнится мне ты так классно нахваливал баш... чтоже случилось вдруг?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 4.1.2019, 15:52


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Цитата(fill.sa @ Сегодня, 9:17)
* Ну баш тоже шел )

Еее, С++ тоже С? :D
Цитата(fill.sa @ Сегодня, 9:17)
* Да и помнится мне ты так классно нахваливал баш... чтоже случилось вдруг?

Баш? nea.gif Да никогда! Это терминальный уродец, а не ЯП.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 4.1.2019, 16:15


Rock The Microphone
********

Группа: Администраторы
Сообщений: 3 140
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4654



Цитата(VINRARUS @ 2.1.2019, 3:04)
* Есть возможность для зины скомпилить распознаватель QR кодов по фотке?


В своё время можно было даже сделать так же, как и у Android сейчас в приложении Barcode Scanner реализовано. То есть включаешь камеру, наводишь на QR-code или штрих-код и он автоматически его дешифрует и выводит на экран информацию.

Например, для Motorola ROKR E6 было два приложения, первое официальное от Motorola -- Business Card Reader; второе -- BarcodeReader.

Может что на Java можно найти для ZN5, но я никогда не смотрел в эту сторону.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 4.1.2019, 19:10


Гуру
******

Группа: Разработчики
Сообщений: 1 240
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 400



Цитата(VINRARUS @ Сегодня, 16:52)
* Еее, С++ тоже С? :D

Неправильно вопрос ставишь, с++ тоже ЯП как и С.
Так же как и баш и асш - шел. Просто разные шелы, как и с++ и с просто разные языки.

Добавлено позже (4.1.2019, 20:12):
EXL,
ну я вроди как смог библиотеку qrencode собрать, в иделе можно написать приложение к ней, со всеми плюшами и все такое.
Но это нужно писать и вникать что там может и как реализовывыается в этой библиотеке.

Мне кстати попадался класс zcamera, возможно это как-раз как на ведре чтобы запускать камеру внутри приложения своего. Вот только в сдк нету класса, нужно разбирать библиотеки и искать.

Сообщение отредактировал fill.sa - 4.1.2019, 19:20
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 4.1.2019, 19:56


Rock The Microphone
********

Группа: Администраторы
Сообщений: 3 140
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4654



Цитата(fill.sa @ Сегодня, 2:10)
* Мне кстати попадался класс zcamera, возможно это как-раз как на ведре чтобы запускать камеру внутри приложения своего. Вот только в сдк нету класса, нужно разбирать библиотеки и искать.


В этом-то и самое сложное..., так как фиг его знает как к этим API подступиться. Даже из Java это сделать проще, потому что API в Java как минимум документированы. Если мне память не изменяет, доступ к камере из Java у ZN5 и прочих на MotoMAGX был.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 4.1.2019, 20:02


Гуру
******

Группа: Разработчики
Сообщений: 1 240
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 400



EXL,
а как разобрать библиотеки чтобы вытянуть заголовочный файл?
Ибо этот zcamera попадался какраз в прога, которые вызывают камеру для мгновенной фотки. Думаю это точно аналог ведроидного запуска камеры внутри приложения.
А уже потом по заголовочному файлу можно былобы попроовать все методы и понят как рабоатет.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 4.1.2019, 21:28


Rock The Microphone
********

Группа: Администраторы
Сообщений: 3 140
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4654



Цитата(fill.sa @ Сегодня, 3:02)
* EXL,
а как разобрать библиотеки чтобы вытянуть заголовочный файл?

Точно таким же способом, которым были получены заголовочные файлы для SDK. Это реверс-инжиниринг. Я нашёл недавно в своих старых e-mail'ах заметку на этот счёт, с почившего ныне ресурса ezx.darktech.com, где были разные репозитории и сам SDK. Тебе я вроде уже скидывал эту инфу, но выкладываю её на форуме, может когда-нибудь пригодится кому:

Изучение разделяемых библиотек (so)

Для того, чтобы выяснить какие функции экспортирует закрытая разделяемая библиотека (.so) и на основе этого написать свой C/C++ хидер (.h) воспользуемся двумя командами из пакета binutils. Поскольку формат ELF файлов не отличается для разных архитектур, то можно даже не устанавливать кросс-утилиты.

Первая необходимая нам команда - readelf - позволяет получить самую разнообразную информацию о исполняемом файле или разделяемой библиотеке. Подробности можно узнать man elf, нас же на данном этапе интересует только таблица символических имён (symbols). Извлечь её можно дав команду:


readelf -s -W libyourlibrary.so


Здесь ключ -s указывает, что нам нужна именно таблица имён (symbols), а ключ -W заставляет не обрезать выводимые данные под ширину терминала.

Таблицу с именами мы получаем в следующем виде:

Код
Num: Value    Size Type Bind   Vis     Ndx Name
42:  42c11768 24   FUNC GLOBAL DEFAULT 10  _ZNK10CAM_Engine15isCameraRunningEv
43:  00000000 152  FUNC GLOBAL DEFAULT UND _ZN5QFileD1Ev


Имена, у которых поле Value равно нулю или поле Ndx равно UND являются внешними по отношению к библиотеке, т.е. используются функциями библиотеки, но должны импортироваться из других библиотек. Их нам тоже необходимо будет отсечь.

Само имя функции переменной и т.п. содержится в последнем столбце. Имена используемые чистым C записываются как есть. Поскольку в C++ существуют пространства имён, классы, перегрузка функции и т. д., из имени в таблицы мы можем извлечь много полезной информации. В частности это список параметров.

Имена кодируются специальным образом (mangling) и имеют малочитаемый вид. Чтобы расшифровать имя, воспользуемся командой c++filt. Чтобы отсечь имена не экспортируемые библиотекой, отфильтруем вывод readelf с помощью скрипта awk. В итоге мы получаем цепочку команд:


readelf -s -W libezxcameraengine.so | awk '{ if($2) print $8 "\t\t // " $4 }' | c++filt | sort


На выходе мы получим отсортированный список всех функций и переменных в виде пригодном для копирования в заголовочный файл. К сожалению, не существует простого способа узнать тип возвращаемого значения. Тут поможет анализ бинарного кода, но в большинстве случаев нужный тип можно угадать ;-) И наконец для имён функций в формате чистого C необходимые параметры можно узнать только анализом бинарного кода.



Для обзора экспортируемых и используемых функций воспользуемся командой:


readelf -s -W libezxbluetooth.so | c++filt | sort -k 8


Список будет отсортирован по именам функций/переменных. И наконец команда:

objdump -dR libezxbluetooth.so | c++filt

Дизассемблирует бинарный код. Это конечно если у вас в системе установлен мультиархитектурный objdump. Иначе воспользуйтесь дампером из тулкита /arm-eabi/bin/arm-linux-gnueabi-objdump, который должен быть в MotoMAGX SDK.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 5.1.2019, 17:41


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Цитата(EXL @ Вчера, 19:15)
* Может что на Java можно найти для ZN5

Оно токо формально работает. В Java камера не может сфокусироваться и стреляет вспышкой на 100%.
Цитата(fill.sa @ Вчера, 22:10)
* со всеми плюшами и все такое.

Не нада никких плюшек, достаточно дать какому то бинарнику готовое фото в ключе запуска.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 5.1.2019, 18:21


Гуру
******

Группа: Разработчики
Сообщений: 1 240
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 400



Цитата(VINRARUS @ Сегодня, 18:41)
* Оно токо формально работает. В Java камера не может сфокусироваться и стреляет вспышкой на 100%.

Кажись это на зине только с этим беда, ибо тут камера через хитрую схему работает. Я когда-то давно видел яву которая делал фотки, на з6 помоему.

Цитата(VINRARUS @ Сегодня, 18:41)
* Не нада никких плюшек, достаточно дать какому то бинарнику готовое фото в ключе запуска.

Ну как минимум чтобы написать малую графическую прогу, нужно много строк кода. Описать кнопки, строки, фон, сигналы и тд. Базовый набор. Можно конечно упростить и сделать базовый класс для всех прог чтобы это не писать - но увы этого всеравно нету и нужно делать.
А потом еще отладка и прочие вещи - на которые обычно никого не уговорить. Сколько уже выкладывал прог с просьбой помочь.

Сообщение отредактировал fill.sa - 5.1.2019, 18:22
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 6.1.2019, 6:13


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Цитата(fill.sa @ Вчера, 21:21)
* Ну как минимум чтобы написать малую графическую прогу, нужно много строк кода.

С этим я сам справлюсь и сделаю это мультиплатформенно. Нужен токо софт без гуя для самого разбора jpg с QR кодом.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 6.1.2019, 8:17


Гуру
******

Группа: Разработчики
Сообщений: 1 240
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 400



Цитата(VINRARUS @ Сегодня, 7:13)
* С этим я сам

С чем?
Ну я как бы библиотеку собрал, справляйся если справишся дальше.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 6.1.2019, 18:54


Rock The Microphone
********

Группа: Администраторы
Сообщений: 3 140
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4654



Цитата(VINRARUS @ Вчера, 13:13)
*Не нада никких плюшек, достаточно дать какому то бинарнику готовое фото в ключе запуска. Нужен токо софт без гуя для самого разбора jpg с QR кодом.

Попробовал скомпилировать библиотеку ZBar для распознавания QR-кодов. Инструкции по компиляции:

Код
ImageMagick-6.2.6:
$ ac_cv_func_realloc_0_nonnull=yes ac_cv_func_malloc_0_nonnull=yes ./configure --host=arm-linux-gnueabi --prefix=/opt/toolchains/motomagx/arm-eabi2/ --without-x --disable-shared --enable-static --without-perl && make -j9 && make install

zbar-0.10:
$ PKG_CONFIG_PATH=/opt/toolchains/motomagx/arm-eabi2/lib/pkgconfig/ PKG_CONFIG=/opt/toolchains/motomagx/arm-eabi2/bin/pkg-config ./configure --host=arm-linux-gnueabi --prefix=/opt/toolchains/motomagx/arm-eabi2/ --with-x=no --disable-shared --enable-static --without-gtk --without-python --without-qt --disable-video --without-imagemagick --disable-pthread && make -j9 && make install

zbar-0.10/examples:
$ arm-linux-gnueabi-g++ -static scan_image.cpp -o scan_image -march=armv6j -mtune=arm1136jf-s -mfpu=vfp -Os -O2 -I/opt/toolchains/motomagx/arm-eabi2/include/ -I/opt/toolchains/motomagx/arm-eabi2/include/zbar -L/opt/toolchains/motomagx/arm-eabi2/lib -lzbar -lMagick++ -lWand -lMagick -lz -ltiff -lpng -lxml2 -lbz2 -ljpeg -lfreetype -lrt -pthread
$ arm-linux-gnueabi-strip -s scan_image


Вот результат и набор простеньких тестов:

http://esxi.z-lab.me:666/~exl_lab/magx/zbar_scan_image_motomagx_07-JAN-2019.tar.gz

За неимением мобильного телефона на MotoMAGX запускал через qemu-arm:

$ qemu-arm ./scan_image test_1.jpg

Без понятия, будет ли этот бинарник работать на телефоне. Если будет, можно отвинтить кавайный нативный GUI для выбора файлов от Flash Player для Zn5 и др. и привинтить сюда. В исходниках библиотеки ZBar имеется какой-то GUI на Qt 4, можно было бы адаптировать его и прикрутить к MotoMAGX API и сделать так же, как в современных Android'ах, если удастся прокинуть камеру. Но у меня нет времени/сил/девайса, чтобы заниматься подобным.

Добавлено позже (7.1.2019, 2:08):
Цитата(VINRARUS @ 2.1.2019, 17:06)

Насколько я понял, qrencode'у подавай чистый QR-Code в изображении, а не фотографию. Хотя я могу ошибаться. В любом случае я собрал ZBar, который работает. Есть ещё крутой ZXing, который юзается в современных Android'ах. Увы, свой порт библиотеки с Java на C++ они забросили, поэтому в его сторону я не смотрел.

!
EXL: ps.gif Что за флейм в теме? Как дети малые. Выясняйте отношения между своими модами в личке. Надоело чистить этот мусор nono.gif

Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 7.1.2019, 11:05


Гуру
******

Группа: Разработчики
Сообщений: 1 240
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 400



Добавлено позже (7.1.2019, 12:10):
Цитата(VINRARUS @ 11.12.2018, 17:46)
* Да в стандартном просто не работал шото этот механизм, шо я токо не пробовал:
Код
date -d "2012-12-12 18:00:00" +%s

Код
root# date -d "2012-12-12 18:00:00" +%s
1355335200
root# busybox
BusyBox v1.26.2 ( --- ) multi-call binary.

Как обычно все рабоатет. Опять таки я давно предлагал переход на норамльный бузи.



Цитата(EXL @ 10.12.2018, 2:35)
* Кстати, для корректного парсинга XML, можно использовать не собственноручно написанные велосипеды на sed/grep/awk и т. д., а специализированную утилиту xmllint, которая идёт вместе с библиотекой libxml2.

У магикса, кстати уже есть библиотека libxml2.so.2.6.16, так что думаю можно обойтись просто сборкой xmllint. Нужно будет занятся вопросом.

Добавлено позже (7.1.2019, 14:26):
Цитата(fill.sa @ Сегодня, 12:05)
* У магикса, кстати уже есть библиотека libxml2.so.2.6.16

Вскрытие показало что по сути монтависта использовала библиотеку в чистом виде. Только пара мелких отличий в мэйк файлах.
Так что думаю можно и эту библиотеку смело обновить из новой версии.

Сообщение отредактировал fill.sa - 7.1.2019, 11:12
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 7.1.2019, 13:58


Rock The Microphone
********

Группа: Администраторы
Сообщений: 3 140
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4654



Цитата(fill.sa @ Сегодня, 18:05)
* У магикса, кстати уже есть библиотека libxml2.so.2.6.16, так что думаю можно обойтись просто сборкой xmllint. Нужно будет занятся вопросом.

Не знал об этом. Это значит можно XML парсить вообще без проблем внутри нативных программ, даже тех, которые используют MotoMAGX API (Z-классы).

Цитата(fill.sa @ Сегодня, 18:05)
* Так что думаю можно и эту библиотеку смело обновить из новой версии.

Обновить-то можно. Но нужно ли? Спорный вопрос, учитывая то, что в новых версиях libxml2 мог измениться API/ABI и многие мотороловские системные компоненты, которые использовали эту библиотеку, могут отвалиться. Тут лучше не либы обновлять, а софт писать с той же самой системной XML.

Пример -- виджет погоды для рабочего стола, который использует плагины Ant-ON'а. Отвинтить cURL и прочие несуразные вещи и сделать красиво через сокеты и эту libxml2.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 7.1.2019, 14:35


Гуру
******

Группа: Разработчики
Сообщений: 1 240
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 400



Цитата(EXL @ Сегодня, 14:58)
* Спорный вопрос, учитывая то, что в новых версиях libxml2 мог измениться API/ABI

Ну для этого и нужно будет все отладить с ипользование новой библи и старых прог.
Вообще я просто собираю что у мня получается + некоторые библиотеки мне по зависимостям требуются для других вещей.
А вопрос использования в основном упирается в тщательно все опробовать и узнать что родное ПО без проблем дружит.

К слову я уже собрал поновее вариант, не самой последней, но почти, нужно только подмаунтить на место старой и так пользоваться телефоном
Консольные приложения

Сообщение отредактировал fill.sa - 7.1.2019, 16:19
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
igoripp2
сообщение 7.1.2019, 15:07


Новичок
*

Группа: Пользователи
Сообщений: 5
Регистрация: 21.8.2018
Пользователь №: 252 881
Модель телефона: Redmi 5
Прошивка: странная


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



Рейтинг: 0



EXL, а такой вопрос. Скорее музыкальный. Реально ли направить звук через omxplayer (такой на Raspberry идет по умолчанию). Или Alsa, но это уже ближе к линуксу.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 7.1.2019, 15:58


Гуру
******

Группа: Разработчики
Сообщений: 1 240
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 400



Цитата(igoripp2 @ Сегодня, 16:07)
* omxplayer

На магиксе нету ни того ни другого, и собрать их будет большой гемор. Тут нужно целый перенос делать.

Вопрос больше какая цель преследуется? Для чего они тебе?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
igoripp2
сообщение 7.1.2019, 16:31


Новичок
*

Группа: Пользователи
Сообщений: 5
Регистрация: 21.8.2018
Пользователь №: 252 881
Модель телефона: Redmi 5
Прошивка: странная


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



Рейтинг: 0



fill.sa, просто интерес. Гипотетически... На данный момент, mp3 можно воспроизвести через RockBox и стандартный плеер. Flac - только через RockBox.
В Raspberry - OmxPlayer консольное приложение, скриптом жевал все вплоть до видео.

Думал, мало ли можно такую штуковину скомпилировать, так же ей скриптами подкидывать мультимедию.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 7.1.2019, 17:00


Гуру
******

Группа: Разработчики
Сообщений: 1 240
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 400



igoripp2,
Вообще alsa это аудиовывод звуку, у магикса тут своя библиотека для вывода. А если вопрос в воспроизведении - то нужны проигрыватели. omxplayer это уже проигрыватель.

flac вроди как Mplayer берет. Через него можно. Он есть под магикс. Очень популярный в мире линукса проигрыватель.
И возможно скоро я даже более новую версию соберу.



Сообщение отредактировал fill.sa - 7.1.2019, 17:03
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 7.1.2019, 18:13


Rock The Microphone
********

Группа: Администраторы
Сообщений: 3 140
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4654



Цитата(igoripp2 @ Вчера, 22:07)
* Реально ли направить звук через omxplayer (такой на Raspberry идет по умолчанию). Или Alsa, но это уже ближе к линуксу.

Реально многое, вот только упирается всё это в наличие требуемых знаний и времени.
В MotoMAGX отсутствуют технологии, утвердившиеся в современном Linux'е, такие как PulseAudio, ALSA, OSS или JACK.
У нас юзается или EZX Audio или AAL Audio, которые проприетарные и никак не документированы.

Прочитал из описания Omxplayer'а:
Цитата
Omxplayer is a video player specifically made for the Raspberry Pi's GPU made by Edgar (gimli) Hucek from the XBMC/Kodi project. It relies on the OpenMAX hardware acceleration API, which is the Broadcom's VideoCore officially supported API for GPU video/audio processing.

У нас всем тем же занимался mplayer. В том числе наш порт mplayer'а аппаратно ускорен с помощью IPU (аналог GPU в MotoMAGX). Вряд ли такую специфичную вещь из мира Raspberry Pi, как Omxplayer можно вот так вот просто взять и перенести. В качестве консольного музыкального плеера в Linux'ах очень популярен в использовании mpd. Вот его было бы неплохо заиметь. К нему и GUI-клиенты можно написать хоть на Qt, хоть на Bash'е.

Затык только один -- разобраться с выводом звука в mpd и переделать всё под AAL или EZX Audio. А пример работы с "сырым потоком аудио" можно подсмотреть в том же порте SDL от Ant-ON'а.

Добавлено позже (8.1.2019, 1:15):
Цитата(fill.sa @ Сегодня, 0:00)
* Очень популярный в мире линукса проигрыватель.

Был. Давно уже MPlayer не является хоть сколько-нибудь популярным в мире Linux'а. Его лавры занял mpv.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 9.1.2019, 19:10


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Цитата(EXL @ 6.1.2019, 21:54)
* Попробовал скомпилировать библиотеку ZBar для распознавания QR-кодов.

А вот за это щиро дякую. happybirth.gif
Отлично работает, даже сразу 2 кода на фотке распознаёт. Уже накидал минимальную обёртку с анализом фоток в фоне и с собщениями поверх камеры.

Сообщение отредактировал VINRARUS - 9.1.2019, 19:18
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 10.1.2019, 19:43


Гуру
******

Группа: Разработчики
Сообщений: 1 240
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 400



Цитата(EXL @ 6.1.2019, 19:54)
* В исходниках библиотеки ZBar имеется какой-то GUI на Qt 4, можно было бы адаптировать его и прикрутить к MotoMAGX API и сделать так же, как в современных Android'ах,

Уже попробовал, в итоге линковщик ругается на библиотеку.
Видимо нужно без этого ключа собирать --without-qt. Но без этого ключа не собирается, видать из-за версий кюта проблемы.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 10.1.2019, 20:16


Rock The Microphone
********

Группа: Администраторы
Сообщений: 3 140
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4654



fill.sa,
Ну это естественно. Во-первых там Qt 4, во-вторых там завязка на иксы, в-третьих там приложение работает через Video4Linux, а драйвера v4l конечно же отсутствуют на MotoMAGX.

Наивно предполагать что оно просто скомпилируется и заработает. Там куча работы по адаптации нужна. Скорее даже не адаптации, а полного переписывания с оглядкой на код для Qt 4. В том числе потребуется работа и в реверс-инжиниринговом плане, чтобы понять как достучаться до видеопотока с нашей камеры. Это будет уже полдела, даже больше.

Цитата(VINRARUS @ Вчера, 2:10)
* А вот за это щиро дякую.
Отлично работает, даже сразу 2 кода на фотке распознаёт. Уже накидал минимальную обёртку с анализом фоток в фоне и с собщениями поверх камеры.

Можешь подстроить выхлоп под себя и Shell, чтобы без всяких там "decoded symbol" было а, например, просто расшифрованный выхлоп. См. файл zbar-0.10/examples/scan_image.cpp, строки 46-47, инструкции по компиляции я скинул выше.

ps.gif Посмотрел на музыкальный плеер-daemon, который называется mpd, там нужно писать с нуля вывод звука. Без устройства на руках это делать сложно, увы.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 13.1.2019, 17:34


Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
youtu.be/A_yQLYLiSGQ



Рейтинг: 1211



Блин, зинка упорно не хочет фоткать в 640х480 huh1.gif

Добавлено позже (13.1.2019, 20:52):
Цитата(EXL @ 10.1.2019, 23:16)
* Можешь подстроить выхлоп под себя и Shell, чтобы без всяких там "decoded symbol" было а, например, просто расшифрованный выхлоп. См. файл zbar-0.10/examples/scan_image.cpp, строки 46-47, инструкции по компиляции я скинул выше.

На даном этапе не требуется, достаточно выдать юзеру хоть какую то инфу (всё равно у нас браузер мёртв).
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 20.1.2019, 22:08


Гуру
******

Группа: Разработчики
Сообщений: 1 240
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 400



Решил выложить, вдруг пригодится кому.
Дорабатывал как-то Антоновский ztaskman для своего мода.
Из того что помню:
-языки переведены на системный. Т.е. теперь не используется отдельные файлы с языками, ,а перевод берется из системы.
-На вкладке с графиками, рядом еще показываются значения в цифровом виде.
-Файл настроек храниться по системному пути где все настройки.
-Вкладка с процессами обновляется каждый раз когда на нее перелистываешь(делалось для того, чтобы видеть новые процесса за время пока ты в тасмэне.)
-И так некоторые доработки по коду делал. По идее стал чуть быстрее и меньше весить.

Если кому нужно могу собрать для других платформ. А также если есть хотелки или найдете глюки - тоже пишите.

Сообщение отредактировал fill.sa - 22.1.2019, 15:29
Прикрепленный файл ztaskman_046.tar   ( 230 килобайт ) Кол-во скачиваний: 75
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 21.1.2019, 23:26


Гуру
******

Группа: Разработчики
Сообщений: 1 240
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 400



Цитата(EXL @ 7.1.2019, 14:58)
* Цитата(fill.sa @ Сегодня, 18:05)
У магикса, кстати уже есть библиотека libxml2.so.2.6.16, так что думаю можно обойтись просто сборкой xmllint. Нужно будет занятся вопросом.

Не знал об этом. Это значит можно XML парсить вообще без проблем внутри нативных программ, даже тех, которые используют MotoMAGX API (Z-классы).


К слову есть еще такая штука
libwbxmlparser.so
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 22.1.2019, 9:21


Rock The Microphone
********

Группа: Администраторы
Сообщений: 3 140
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652

Рейтинг: 4654



Цитата(fill.sa @ Сегодня, 6:26)
* libwbxmlparser.so


Цитата
The WBXML Library (aka libwbxml) contains a library and its associated tools to Parse,
Encode and Handle WBXML documents.

The WBXML format is a binary representation of XML, defined by the Wap Forum, and used
to reduce bandwidth in mobile communications.


https://github.com/libwbxml/libwbxml

Это вообще для парсинга WML-видимо.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 24.1.2019, 7:32


Гуру
******

Группа: Разработчики
Сообщений: 1 240
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 400



VINRARUS,
Тебе на заметку, ты такие штуки любишь
https://mnorin.com/parsim-danny-e-s-gismeteo-v-bash-e.html

Хотя как сказал EXL , лучше написать полноценную граф прогу или плагини и парсить все родными библиотеками.

Сообщение отредактировал fill.sa - 24.1.2019, 7:40
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Софт для ZN5 и прочих MotoMAGX: MGX и PEP, Разработка, портирование и обсуждение нативного софта · Motorola ZINE ZN5, ZN5 T-Mobile · Forum
 

46 страниц V « < 35 36 37 38 > » 
Ответ в темуСоздание новой темы
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 12.6.2025, 9:55

Форум живёт: