Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
2 / 2 / 1
Регистрация: 08.09.2013
Сообщений: 10

Приложение управление RGB лентой по wifi

09.09.2013, 00:13. Показов 3855. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Купил недавно один девайс - управление диодной лентой RGB по wifi (китай) c android/iOS (если надо могу ссылку скинуть). Исходников нигде нет...
Очень хочется научиться управлять этой штуковиной с компа (явой сладею слабо, больше как то c)
Пробовал получить исходники приложения через apktool, дело дошло до получения кода в .smali. dex2jar и дальнейшее открытие в jd-gui результата не дало (не открывается).
Изучение .smali дало результат что подключется по на ip 192.168.10.1 порт 5577 (проверено nmap и найдено в smali что именно этот порт \smali\com\Zengge\Sockets). Используются сокеты для соединения, формируется некое сообщение (массив byte) и записывается в поток метод send.
По smali: \smali\com\Zengge\Sockets
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
.method public sendRgbColor(III)V
    .locals 3
    .parameter "r"
    .parameter "g"
    .parameter "b"
 
    .prologue
    const/4 v2, 0x0
 
    .line 203
    iput p1, p0, Lcom/Zengge/Sockets;->r:I
 
    .line 204
    iput p2, p0, Lcom/Zengge/Sockets;->g:I
 
    .line 205
    iput p3, p0, Lcom/Zengge/Sockets;->b:I
 
    .line 206
    iput v2, p0, Lcom/Zengge/Sockets;->modes:I
 
    .line 207
    const/4 v1, 0x5
 
    new-array v0, v1, [B
 
    .line 208
    .local v0, arrayOfByte:[B
    const/16 v1, 0x56
 
    aput-byte v1, v0, v2
 
    .line 209
    const/4 v1, 0x1
 
    int-to-byte v2, p1
 
    aput-byte v2, v0, v1
 
    .line 210
    const/4 v1, 0x2
 
    int-to-byte v2, p2
 
    aput-byte v2, v0, v1
 
    .line 211
    const/4 v1, 0x3
 
    int-to-byte v2, p3
 
    aput-byte v2, v0, v1
 
    .line 212
    const/4 v1, 0x4
 
    const/16 v2, -0x56
 
    aput-byte v2, v0, v1
 
    .line 213
    invoke-direct {p0, v0}, Lcom/Zengge/Sockets;->send([B)V
 
    .line 214
    return-void
.end method
 
 
.method private send([B)V
    .locals 2
    .parameter "paramArrayOfByte"
 
    .prologue
    .line 83
    :try_start_0
    iget-object v1, p0, Lcom/Zengge/Sockets;->socket:Ljava/net/Socket;
 
    invoke-virtual {v1}, Ljava/net/Socket;->getOutputStream()Ljava/io/OutputStream;
 
    move-result-object v1
 
    invoke-virtual {v1, p1}, Ljava/io/OutputStream;->write([B)V
    :try_end_0
    .catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0
 
    .line 89
    :goto_0
    return-void
 
    .line 85
    :catch_0
    move-exception v0
 
    .line 87
    .local v0, e:Ljava/io/IOException;
    invoke-virtual {v0}, Ljava/io/IOException;->printStackTrace()V
 
    goto :goto_0
.end method
Перед методом установки цвета вроде никаких инициализаций не выполняется.
Пытаюсь сделать тоже на с# (Пример клиента первый же из гугла камнями не кидайтесь)

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
static void SendMessageFromSocket(int port)
        {
            byte[] bytes = new byte[1024];
            IPAddress ipAddr = IPAddress.Parse("192.168.10.1");
            IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, port);
 
            Socket sender = new Socket(ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
 
            sender.Connect(ipEndPoint);
 
            Console.Write("Соединено!!!\n");
            Console.WriteLine("Сокет соединяется с {0} ", sender.RemoteEndPoint.ToString());
            byte[] msg = new byte[5];
 
            int r = 255;
            int g = 255;
            int b = 255;
            msg[0] = 0x45;
            msg[1] = (byte)r;
            msg[2] = (byte)g;
            msg[3] = (byte)b;
            msg[4] = 0x56;
 
            int bytesSent = sender.Send(msg);
 
            sender.Shutdown(SocketShutdown.Both);
            sender.Close();
        }
Результата ни какого, плюс сразу вопрос в byte отриц. число нельзя записать msg[4] = -0x56 (в smali -0x56 написано).
Пробовал тоже самое на java (уже можно записать msg[4] = -0x56 )
Пример кода тоже на java первый же запрос у гугле
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public static void main(String[] args) {
         int serverPort =5577; // здесь обязательно нужно указать порт к которому привязывается сервер.
            String address = "192.168.10.1"; // это IP-адрес компьютера, где исполняется наша серверная программа. 
                                          // Здесь указан адрес того самого компьютера где будет исполняться и клиент.
 
            try {
                InetAddress ipAddress = InetAddress.getByName(address); // создаем объект который отображает вышеописанный IP-адрес.
 
                Socket socket = new Socket(ipAddress, serverPort); // создаем сокет используя IP-адрес и порт сервера.
 
                // Берем входной и выходной потоки сокета, теперь можем получать и отсылать данные клиентом. 
                InputStream sin = socket.getInputStream();
                OutputStream sout = socket.getOutputStream();
 
                // Конвертируем потоки в другой тип, чтоб легче обрабатывать текстовые сообщения.
                DataInputStream in = new DataInputStream(sin);
                DataOutputStream out = new DataOutputStream(sout);
 
                // Создаем поток для чтения с клавиатуры.
                BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
                String line = null;
                System.out.println("Type in something and press enter. Will send it to the server and tell ya what it thinks.");
                System.out.println();
 
                while (true) {
                    line = keyboard.readLine(); // ждем пока пользователь введет что-то и нажмет кнопку Enter.
                    byte mymsg[] = new byte[5];
                    int r = 255;
                    int g = 255;
                    int b = 255;
                    mymsg[0]=0x56;
                    mymsg[1]=(byte)r;
                    mymsg[2]=(byte)g;
                    mymsg[3]=(byte)b;
                    mymsg[4]=-0x56;
                    System.out.println("Sending this line to the server...");
                    out.write(mymsg); // отсылаем введенную строку текста серверу.
                    out.flush(); // заставляем поток закончить передачу данных.
                    line = in.readUTF(); // ждем неизвестно чего
                    System.out.println();
                }
            } catch (Exception x) {
                x.printStackTrace();
            }
    }
Оба примера подсоединяются, отсылается сообщение, только результата нет никакого.
Может есть знатоки чтения в smali. очень надо надо научиться управлять этой штуковиной, кто поможет даже могу даже скинуться на восстановление потраченного времени путем распития любимого алкогольного напитка (кефира например или др.). Все что есть прилагаю

О великие админы не серчайте если все же не в ту ветку написал)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.09.2013, 00:13
Ответы с готовыми решениями:

Управление светодиодной лентой с Android
Здравия желаю:senor:! Появилась надобность в управлении светодиодной лентой с телефона на android:declare:. Через какой тип сети - разницы...

Управление лентой RGB
нужна простейшая схема для управления RGB лентой, 4 дорожки R G B +12v ргб в каждом диоде, как реализовать простой контроллер для...

Управление RGB лентой
Здравствуйте, форумчане! Имеется светодиодная RGB лента - 5м, 7,2 Вт/метр, 12В. Хочу подключить ее к микроконтроллеру STM32F107 к...

3
2 / 2 / 1
Регистрация: 08.09.2013
Сообщений: 10
09.09.2013, 12:40  [ТС]
Короче еще раз проверил второй код на яве дает результат (цвет меняется)...
Вопрос остался только в том почему на C не работает тоже самое и вопрос про тип byte. Но это уже похоже не совсем сюда вопрос так то...
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
26.06.2014, 00:12
...есть такие http://ru.aliexpress.com/whole... 0625121325
0
6 / 6 / 1
Регистрация: 25.03.2014
Сообщений: 52
26.06.2014, 02:45
Результата ни какого, плюс сразу вопрос в byte отриц. число нельзя записать msg[4] = -0x56 (в smali -0x56 написано).
В sbyte можно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.06.2014, 02:45
Помогаю со студенческими работами здесь

Управление RGB лентой
Подскажите как можно управлять яркостью светодиодной ленты, но без МК. Желательно обойтись вообще без микросхем, а просто собрать на...

Управление rgb лентой на микроконтроллере
Доброго времени суток, уважаемые форумчане! Собрал схему для управления яркостью rgb ленты на мк attiny2313a-pu, аппаратный шим на...

Вопрос по питанию МК и управление RGB лентой
Доброго дня! Занимаюсь я фаер шоу и световым шоу. Реквизит для светового шоу производимый всякими буржуйскими фирмами достаточно...

Часы реального времени+термометр+ШИМ управление RGB-лентой
Вот накрутил-то: http://youtu.be/ZLkbqVgAqxw Описание проекта (всё, пока кроме ШИМ): http://www.shelezyakin.ru/?p=1010 ...

Управление RGB LED 12V лентой Arduino MEGA2560 транзистором TIP-120
Доброго времени суток. Сразу предупрежу, что с физикой дружу плохо и со схемотехникой дела до настоящего времени не имел, так что,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru