DWIN DGUS дисплеи HMI

AlexZR
Offline
Зарегистрирован: 08.02.2016

теперь это видно уже однозначно..

AlexZR
Offline
Зарегистрирован: 08.02.2016

попытался изменить строку, ругается, что не так ?

byte Send_ar[10] = {5A, A5, 07, 82, 00, 82, 64, 32, 03, E8};
 

Casper17
Offline
Зарегистрирован: 21.06.2013

в HEX формате надо писать 0x5A 0xA5 и т.д.

AlexZR
Offline
Зарегистрирован: 08.02.2016

так сделал, не работает..

byte Send_ar[10] = {0x5A, 0xA5, 0x07, 0x82, 0x00, 0x82, 0x64, 0x32, 0x03, 0xE8};

void setup()
{
Serial.begin(115200);
}
void loop()
{
Serial.write(Send_ar,10);
delay(1000);
Send_ar[7] = 10;
Serial.write(Send_ar,10);
delay(1000);
Send_ar[7] = 64;
}

Nik_an
Nik_an аватар
Offline
Зарегистрирован: 20.11.2019

Casper17 пишет:

Быть может дисплеи разные? Одни по TA общаются, другие по DGUS, DGUSII

все они по ТА общаться могут

Casper17
Offline
Зарегистрирован: 21.06.2013

Значения в массиве начинают отчет с 0. Вам надо менять 6 элемент массива! И данные в HEX 0x10 и 0x64 если не хотите переводить в десятичные! В документации все данные и параметры в HEX

AlexZR
Offline
Зарегистрирован: 08.02.2016

т.е. так ?

byte Send_ar[10] = {0x5A, 0xA5, 0x07, 0x82, 0x00, 0x82, 0x64, 0x32, 0x03, 0xE8};

void setup()
{
Serial.begin(115200);
}
void loop()
{
Serial.write(Send_ar,10);
delay(1000);
Send_ar[6] = 0x10;
Serial.write(Send_ar,10);
delay(1000);
Send_ar[6] = 0x64;
}

Nik_an
Nik_an аватар
Offline
Зарегистрирован: 20.11.2019

сообщение 130 картинка, откуда ее взяли? файл ссылка?

 

 

AlexZR
Offline
Зарегистрирован: 08.02.2016

ссылка в сообщении 125

AlexZR
Offline
Зарегистрирован: 08.02.2016

сделал так, не работает !

byte Send_ar[10] = {0x5A, 0xA5, 0x07, 0x82, 0x00, 0x82, 0x64, 0x32, 0x03, 0xE8};void setup()
{
Serial.begin(115200);
}
void loop()
{
Serial.write(Send_ar,10);
delay(1000);
Send_ar[6] = 0x10;
Serial.write(Send_ar,10);
delay(1000);
Send_ar[6] = 0x64;
}

Nik_an
Nik_an аватар
Offline
Зарегистрирован: 20.11.2019

byte Send_ar[10] = {0x5A, 0xA5, 0x07, 0x82, 0x00, 0x82, 0x64, 0x32, 0x03, 0xE8};  // это массив который передается в уарт

                                                                                                                             / /byte Send_ar[10] это размер массива 10 бит

void setup()
{
Serial.begin(115200);
}
void loop()
{
Serial.write(Send_ar,10);  // это команда отправки массива в уарт
delay(1000);
Send_ar[7] = 10;        // это запись значения  10  в массив на 7 место 
Serial.write(Send_ar,10);  // это команда отправки массива в уарт
delay(1000);
Send_ar[7] = 64;            // это запись значения  64  в массив на 7 место
}

Casper17
Offline
Зарегистрирован: 21.06.2013

Надо изменять число 0x64 оно в массиве находится под индексом 6. Нумерация в массивах начинается с 0 а не с 1. Мы в определении массива указали размер 10 элементов, но счет идет от 0 до 9.

AlexZR
Offline
Зарегистрирован: 08.02.2016

Casper17 пишет:
Надо изменять число 0x64 оно в массиве находится под индексом 6. Нумерация в массивах начинается с 0 а не с 1. Мы в определении массива указали размер 10 элементов, но счет идет от 0 до 9.

Точно! теперь работает!

Casper17, сообщите мне ваши реквизиты на aae62@list.ru я вас отблагодарю за помощь!

Nik_an
Nik_an аватар
Offline
Зарегистрирован: 20.11.2019

Casper17 пишет:

Надо изменять число 0x64 оно в массиве находится под индексом 6. Нумерация в массивах начинается с 0 а не с 1. Мы в определении массива указали размер 10 элементов, но счет идет от 0 до 9.

да именно так

и еще посмотрел бегло описание похоже пока работает внутреннея OS не работает ТА

то есть комманды разные

AlexZR
Offline
Зарегистрирован: 08.02.2016

теперь хотелось бы понять, как с АЦП ардуино отправить данные на дисплей,

и вывести их там в цифровом и графическом виде ?

Casper17
Offline
Зарегистрирован: 21.06.2013

AlexZR пишет:

теперь хотелось бы понять, как с АЦП ардуино отправить данные на дисплей,

и вывести их там в цифровом и графическом виде ?

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

Casper17
Offline
Зарегистрирован: 21.06.2013

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

slider
Offline
Зарегистрирован: 17.06.2014

Casper17 пишет:

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

ну как ,  нашли что ?

дык для DGUS ( II ) можно же с винды загрузить же шрифты , посредством их программулинки. 

есть пример в http://www.ampdisplay.com/download1.php?cat=HMI%20UART(DWIN)&sub_cat=DGUS  
DGUS-Toolbox    ->  800480newDEMO , там крупный шрифт картинками в папке 90_grass 

AlexZR
Offline
Зарегистрирован: 08.02.2016

здесь подборка видео работы с дисплеем https://www.youtube.com/channel/UCLmhCvRy891zbIMWXu3Effg

slider
Offline
Зарегистрирован: 17.06.2014

копаю простецкий DWIN  HMI  дисп  DMT48270C043_04WN , который не относится к  TA / DGUS II  ( http://www.ampdisplay.com/download1.php?cat=HMI%20UART(DWIN)&sub_cat=TA ) , а к  TC .  платформа T5UIC1 (дисплеи с концовкой _04WN )

Собираю инфу . (есть свыше 10ка примеров с оф. сайта , 3D принтеров , .. но они DGUS , и на этом диспе не работают )

модель DMT48270C043_04WN принадлежит T5UIC1, простой экран инструкции последовательного порта. 
программой DGUS не поддерживается.

Просто говоря , минимум что нужно это создать на карте памяти папку  DWIN_SET , и накидать туда картинок JPEG 480*272 , с названием от 0.jpeg 1.jpeg .... 15.jpeg .  Если надо вывести на него  текст , грубо говоря так и выводим как в монитор порта Serial.println("Privet"); , только спереди надо добавить несколько байтов означающих цвета, размер шрифта, координаты , а после добавить оконцовку посылки. С выводом переменных похоже. Картинки jpeg с качеством 50-80% обычно вешают 10-20кбайт . (ограничение 16 полноразмерных картинок, но возможно это как-то обходится). Всего память этого диспа под картинки + иконки = 512 кбайт  . Надо вставить карту microSD, включить питание , подождать несколько секунд пока перепишутся файлы в память дисплея, синий экран сменится на красный. Выключить питание, вытащить карту. Всё.  При включении питания, файл 0.jpeg сам появится на экране. Другие файлы перебираются ардуинкой по uart 115200 командами.   Для пакетной конвертации картинок , использовал FastStone Image Viewer .  в форуме dwin рекомендуют JPEG-Imager , не китайскую версию нашел здесь https://soft.mydiv.net/win/dlfilee2f2c_239932/JPEG-Imager/ji252u.zip , но она обрабатывает файлы по одиночке, по умолчанию YCbCr 4:1:1 , если выставить 4:4:4 , то скорость вывода картинок замедляется, с ~0.3сек до ~0.5сек.  Дисп если не успевает выводить картинки по командам ардуинки , то складывает их в свой буфер, потом от туда последовательно берет и выполняет.  Помимо картинок , дисплей может рисовать по командам точки, линии , прямоугольники.  Имеет доступное ОЗУ , ПЗУ , куда можно с ардуинки подгружать новые иконки, шрифт во время работы, какие нибудь данные.  Дисп имеет свой шрифт, и крупные цифры. Умеет перемещать прямоугольные области на экране.  

Немного найденной  и переведеной гуглопереводчиком инфы  ( полный текст по всем платформам DWIN  https://blog.csdn.net/DWINdaisy_chen/article/details/82424360  ) :

Поскольку производство процессора T5 разработано и спроектировано самим Дивином, дизайн новых продуктов основан на процессоре T5. В прошлом продукты представляли собой один и тот же драйвер (например, DGUS - это все модули K600 + на базе процессора T02), но текущие продукты будут разрабатываться с соответствующими ядрами в соответствии с различными приложениями, так что у каждого продукта есть метод разработки, функция и эффективность затрат. Сформировал свои особенности. Разработчики также имеют больше возможностей при выборе продуктов. В то же время, благодаря высокой производительности самого процессора T5, если существующие продукты не могут соответствовать функциональным требованиям, вы также можете разрабатывать на основе T5, чтобы получить действительно мощный и дешевый «совершенный» продукт.
 
В настоящее время ядрами Divin являются T5UIC1, T5UIC2, T5UIC3, T5UIC4, T5UID1, T5UID2, T5UID3. Среди них T5UIC1, T5UIC2, T5UIC3 и T5UIC4 в основном предназначены для дорогостоящих приложений.С точки зрения методов разработки, кроме T5UIC3, все они являются методами разработки набора команд. T5UID1, T5UID2, T5UID3 - это методы разработки DGUS 2. Условно говоря, цена выше, но она намного дешевле, чем у традиционного последовательного экрана. Ключ в том, чтобы использовать эти продукты для создания красивого интерфейса очень просто.
 
 
T5UIC1
это диспы (различие только разрешением и размером):
DMT32240C024_04WN
DMT32240C028_04WN
DMT32240C035_04WN
DMT48320C035_04WN
DMT48270C043_04WN
DMT48270C050_04WN
04-версия диспов относящихся к T5UIC1 железу(платформе) , W - температурный диаппазон, N - без тача   (T - тач)
 
T5UIC1 в основном предназначен для приложений, которые не требуют сенсорного экрана, простых функций пользовательского интерфейса и высоких затрат.
Его основные функции включают в себя:
(1) 65K цветной TFT дисплей.
(2) Основные инструкции по рисованию, отображение текста на китайском и ASCII, поддержка значка JPEG, изображение JPEG, отображение двумерного кода.
(3) 384 Кбайт места для шрифта.
Сохраненная 6 * 12-32 * 64-точечная матрица ASCII и 12 * 12-64 * 64-точечная матрица GB2312 Библиотека китайских символов (китайские символы масштабируются на основе 16 * 16-точечной матрицы).
(4) 512 Кбайт места для хранения изображений и значков, разделенных на 16 областей памяти в соответствии с 32 КБ.
Может хранить до 16 полноэкранных изображений JPEG.
Или сохраните файлы библиотеки значков JPEG в 0-16 раз (размер файла библиотеки значков может превышать 32 КБ и занимать несколько областей памяти).
(5) Память данных SRAM 32 КБ, которая может считываться и записываться через последовательный порт. Данные теряются при отключении питания. Все питание инициализируется до 0x00.
Он в основном используется для оперативного обновления базы данных изображений и значков, а также для отображения в реальном времени значков и изображений JPEG.
(6) 16 Кбайт флэш-памяти данных, которая может считываться и записываться через последовательный порт, данные не теряются при отключении питания, а срок записи составляет 100 000 раз.
Он в основном используется в качестве хранилища данных для параметров конфигурации пользователя.
(7) Расширьте дополнительный полнодуплексный последовательный порт.
(8) CPU может быть настроен для работы на частоте 250 МГц или 400 МГц.
 
————————————————
版权声明:本文为CSDN博主「恐龙蛋壳」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

 

Команды инструкции T5UIC1 https://blog.csdn.net/DWINdaisy_chen/article/details/81868954   ) :

T5UIC1 - это упрощенная версия экрана последовательных команд, основанная на ЦП T5, разработанная для требований приложений, которые не требуют сенсорного экрана, простых функций пользовательского интерфейса и высоких затрат.
Его основные функции включают в себя:
(1) 65K цветной TFT дисплей.
(2) 384 Кбайт места для шрифта.
Сохраненная 6 * 12-32 * 64-точечная матрица ASCII и 12 * 12-64 * 64-точечная матрица GB2312 Библиотека китайских символов (китайские символы масштабируются на основе 16 * 16-точечной матрицы).
(3) Объем памяти изображений и значков 512 КБ разделен на 16 областей памяти в соответствии с 32 КБ.
Может хранить до 16 полноэкранных изображений JPEG.
Или сохраните файлы библиотеки значков JPEG в 0-16 раз (размер файла библиотеки значков может превышать 32 КБ и занимать несколько областей памяти).
(4) Память данных SRAM 32 КБ, которая может считываться и записываться через последовательный порт. Данные теряются при отключении питания. Вся мощность инициализируется до 0x00.
Он в основном используется для оперативного обновления базы данных изображений и значков, а также для отображения в реальном времени значков и изображений JPEG.
(5) 16 Кбайт флэш-памяти данных, которая может быть прочитана и записана через последовательный порт, данные не будут потеряны после отключения питания, а срок записи составляет 100 000 раз.
Он в основном используется в качестве хранилища данных для параметров конфигурации пользователя.
(6) Параметры конфигурации интерфейса SD / SDHC и обновленные шрифты и изображения.
(7) Процессор можно настроить для работы на частоте 250 МГц или 400 МГц.
 

2.3 Набор инструкций
(1) Инструкции по конфигурации и интерфейсу

  сначала обязательный байт  AA ,  функция(инструкция) , данные , обязательная оконцовка CC 33 C3 3C .

функция инструкция объяснение
Пожать друг другу руки 0x00 Пример:
послать дисплею:

Tx: AA 00 CC 33 C3 3C
дисплей должен ответить:

Rx: AA 00 4F 4B CC 33 C3 3C
Регулировка яркости подсветки 0x30 DIM_Set: значение яркости подсветки, 0x00-0xFF.
Задняя подсветка 0x00 выключена, самая яркая подсветка 0xFF, из которых задняя подсветка 0x01-0x1F
может мигать.
Значение по умолчанию при включении питания составляет 0xFF.
Пример: AA 30 80 CC 33 C3 3C Яркость установлена ​​на 50%.
Запишите данные в память 0x31 Время обработки незначительно для SRAM, Flash занимает до 1 секунды.
Тип: выбор памяти для записи, 0x5A = 32 КБ SRAM, 0xA5 = 16 КБ Flash.
Адрес: адрес памяти для записи данных, 0x0000-0x7FFF или 0x3FFF.
Данные: строки данных для записи.
Пример: AA 31 5A 00 00 31 32 33 34 CC 33 C3 3C Запись SRAM
Чтение данных памяти 0x32 Время обработки незначительно для SRAM, а задержка флэш-памяти составляет около 0,1 мс.
Тип: чтение выборки памяти, 0x5A = 32 КБ SRAM, 0xA5 = 16 КБ Flash.
Адрес: адрес памяти для записи данных, 0x0000-0x7FFF или 0x3FFF.
Длина: длина прочитанных байтов данных, 0x01-0xF0.
Данные: строка данных прочитана.
Пример:
Tx: AA 32 5A 00 00 04 CC 33 C3 3C Чтение SRAM
Rx: AA 32 5A 00 00 04 31 32 33 34 CC 33 C3 3C Ответ на данные
Напишите картинку памяти 0x33 Время обработки может занять до 2 секунд.
Запишите содержимое памяти данных SRAM 32 КБ в указанное пространство памяти изображений.
PIC_ID: расположение области памяти изображения, 0x00-0x0F, 32 Кбайт на место.
Пример: Tx: AA 33 5A A5 00 CC 33 C3 3C
Расширенная
конфигурация последовательного порта
0x38 Bode_Set: установите скорость передачи расширенного последовательного порта, 0x0001-0x03FF.
Bode_Set = 15667200 / скорость передачи, самая низкая скорость передачи - 15300.
Значение по умолчанию при включении питания составляет 0x0088, что соответствует скорости передачи 115200 бит / с.
Пример:
AA 38 03 30 CC 33 C3 3C
устанавливает скорость передачи расширенного последовательного порта на 19200 бит / с.
Расширенная последовательная
передача данных
0x39 Отправьте пакет данных Datas с последовательного порта расширения.
Пример:
AA 39 31 32 33 34 35 36 37 38 39 CC 33 C3 3C
отправляет строку «123456789» из расширенного последовательного порта.
Расширенный последовательный
прием данных
0x3a Экран активно загружает данные, полученные через расширенный последовательный порт.
Len_Data: длина данных, загруженных на этот раз.
Данные: данные, загруженные на этот раз.
Пример:
предположим, что расширенный последовательный порт получает байт данных 0x55, затем на экране будет активно загружаться
AA 3A 01 55 CC 33 C3 3C.

 (2) Инструкции по рисованию

инструкция объяснение
0x01 Чистый экран, время обработки 1,5 мс (соответствует основной частоте 400 МГц, то же самое ниже).
Цвет: чистый цвет экрана.
Пример: AA 01 00 1F CC 33 C3 3C     -  заливка синим
               AA 01 F8 00 CC 33 C3 3C     -  заливка красным
               AA 01 00 00 CC 33 C3 3C     
-  заливка черным
   ( 5бит Red + 6бит Green + 5бит Blue  )
0x02 Заданное значение; время обработки = 0,4 * Nx * Ny * номер заданного значения, сс.
Цвет: Задать цвет.
Nx: фактический размер пикселя в направлении X, 0x01-0x0F.
Ny: фактический размер пикселя в направлении Y, 0x01-0x0F.
(Xn, Yn): последовательность координат заданной точки.
Пример: AA 02 F8 00 04 04 00 08 00 08 01 00 01 00 CC 33 C3 3C
0x03 Конечная точка соединения; время обработки = 0,5 * Макс. (Длина отрезка в направлении X, длина отрезка в направлении Y), сСт.
Цвет: цвет соединения, 2Bytes.
(Xn, Yn): координаты конечной точки отрезка.
Пример: AA 03 FF FF 00 40 00 40 01 00 01 00 CC 33 C3 3C
0x05 Прямоугольная область отображения, время обработки = 0,14 * количество пикселей в США.
Режим:
0x00 = цвет. Прямоугольник отображается в цвете.
0x01 = Цвет Цвет заполняет прямоугольную область.
0x02 = Цвет XOR Данные прямоугольника, в основном используются для выбора меню / невыделения окраски.
Цвет: цвет.
(Xs, Ys), (Xe, Ye): координаты верхнего левого угла и нижнего правого угла прямоугольника.
Пример: AA 05 02 07 E0 00 40 00 40 01 00 01 00 CC 33 C3 3C
0x09 Область экрана перемещается, время обработки = 0,20 * количество пикселей в области перемещения США .
Режим: режим перемещения
7: режим перемещения, 0 = круговой сдвиг. 1 = Pan, пустая область заполнена цветом.
.6-.4: написать 0.
.3-.0: направление движения, 0x00 = влево. 0x01 = Верно. 0x02 = вверх. 0x03 = вниз.
DIS: расстояние перемещения, количество пикселей, 0x0000-горизонтальное разрешение / 2, 2Bytes.
Цвет: цвет заливки, действует только тогда, когда DIR.7 = 1.
(Xs, Ys): координаты верхнего левого угла выбранной области.
(Xe, Ye): координаты нижнего правого угла выделенной области.
Пример: AA 09 00 00 08 FF FF 00 40 00 40 01 00 01 00 CC 33 C3 3C

 

(3) текстовые инструкции

инструкция объяснение
0x11 Отображение строки символов: одна матрица 16 * 16 точек Время обработки китайских символов составляет 76 мкс, а остальные преобразуются в соответствии с соотношением точек .
Режим: режим отображения.
.7 Настройка регулировки ширины символа 1 = настройка 0 = не настраивать.
.6 Настройка отображения цвета фона 1 = отображать 0 = не отображать.
.5-.4 Написать 0.
.3-.0: размер шрифта 0x00-0x09, соответствующий размер шрифта следующий:
0x00 = 6 * 12 0x01 = 8 * 16 0x02 = 10 * 20 0x03 = 12 * 24 0x04 = 14 * 28
0x05 = 16 * 32 0x06 = 20 * 40 0x07 = 24 * 48 0x08 = 28 * 56 0x09 = 32 * 64
Цвет: Цвет отображения символов.
Bcolor: Цвет отображения фона персонажа.
(X, y): координаты верхнего левого угла отображения строки.
Строки: Строки, которые должны отображаться. Не-ASCII символы отображаются в соответствии с форматом кодировки GB2312 китайских символов.
Пример:
AA 11 41 FF FF 00 00 00 20 00 80 44 57 49 4E 20 B5 CF CE C4 CC 33 C3 3C
0x14 Отображение переменной данных, время обработки рассчитывается с помощью инструкции 0x11.
Режим: режим отображения.
.7 Настройка отображения цвета фона 1 = отображение 0 = не отображение.
.6 1 = номер со знаком 0 = номер без знака.
.5 1 = Отключено 0 отображается 0 = Отключено 0 Не отображается.
.4 1 = Неверный 0 отображается как 0 0 = Неверный 0 отображается как пробел.
.3-.0: размер шрифта, 0x00-0x09, такой же, как инструкция 0x11.
Цвет: цвет отображения символов.
Bcolor: Цвет отображения фона персонажа.
Num_I: количество отображаемых целых чисел, 0x01-0x14.
Num_F: количество отображаемых десятичных разрядов, 0x00-0x14, сумма Num_I + Num_F не может превышать 20.
(X, y): координаты верхнего левого угла отображения переменной.
Данные: переменные данных, до 8 байтов.
Пример: AA 14 85 FF FF 00 00 0A 02 00 00 00 00 49 96 02 D2 CC 33 C3 3C

 (4) Инструкции, связанные с изображениями и значками

инструкция объяснение
0x21 Отображение QR-кода; QR_Pixel = 4 Время обработки QR-кода составляет 7,5 мс.
(Х, у) координат положения отображается в виде двумерного кода;
QR_Pixel: двумерный код занимает каждый пиксель размер точек, 0x01-0x0F;
данных: данные отображения, вплоть до 154 байт.
Размер QR-кода составляет (46 * QR_Pixel) * (46 * QR_Pixle) точечная матрица.
Пример: AA 21 00 08 00 08 04 68 74 74 70 3A 2F 2F 77 77 77 2E 64 77 69
6E 2E 63 6F 6D 2E 63 6E CC 33 C3 3C
0x22 Отображение изображения в формате JPEG, разрешение 480 * 272, время сжатия формата 4: 1: 1 составляет 250 мс.
Отображение изображений JPEG, сохраненных в памяти изображений размером 512 КБ.
Изображения также кэшируются в виртуальной области отображения 0 # (доступно с помощью инструкции 0x27).
JPEG_ID: 0x00-0x0F, соответствующий начальному идентификатору картинки, сохраненной в JPEG.
Пример: AA 22 00 00 CC 33 C3 3C
0x23 Отображение значков библиотеки значков, один значок 28 * 45, режим фонового отображения, время обработки 3,2 мс .
(X, y): начальная позиция первого значка, соответствующая верхнему левому углу значка.
Режим: режим отображения значков.
.7 Настройка отображения фона значка: 0 = фильтрация фона не отображается, 1 = отображение фона.
Если фоновая фильтрация не отображается, фон должен быть чисто черным.
.6 Настройка восстановления фонового изображения (действует только при .7 = 0):
0 = фоновое изображение не восстанавливается, 1 = автоматически использовать 0 # изображение виртуальной области отображения для восстановления фона.
.5 Выбор интенсивности фоновой фильтрации (действителен только при .7 = 0) 0 = Нормальный, 1 = Улучшенный.
4 Не определено, запишите 0.
.3-.0 Место хранения библиотеки значков, 0x00-0x0F.
Icon_IDs: идентификаторы значков для отображения, каждый идентификатор представлен 1 байтом, 0x00-0xFF.
Пример: AA 23 00 10 00 10 08 00 01 02 03 CC 33 C3 3C
0x24 Отображение значка памяти SRAM, один значок 28 * 45, режим отображения фона, время обработки составляет 3,1 мс .
(X, y): положение отображения значка, соответствующее верхнему левому углу значка.
Режим: режим отображения значков.
.7 Настройка отображения фона значка: 0 = фильтрация фона не отображается, 1 = отображение фона.
Если фоновая фильтрация не отображается, фон должен быть чисто черным.
.6 Не определено, напишите 0.
.5 Выбор интенсивности фоновой фильтрации (действителен только при .7 = 0) 0 = нормальный, 1 = расширенный.
4-.0 Не определено, написать 0.
Адрес: начальный адрес памяти SRAM для хранения данных значков JPEG, 0x0000-0x7FFF.
Пример: AA 24 00 10 00 10 00 00 00 CC 33 C3 3C
0x25 JPEG изображение распаковывается в виртуальную область отображения 1 #.
Разрешение 480 * 272 Время сжатия формата 4: 1: 1 составляет 240 мс .
Распакуйте изображение JPEG, сохраненное в памяти изображений размером 512 КБ, в виртуальную область отображения 1 #, что удобно
для копирования и вставки значков.
JPEG_ID: 0x00-0x0F, соответствующий начальному идентификатору картинки, сохраненной в JPEG.
Пример: AA 25 01 01 CC 33 C3 3C
0x26 1 # Скопируйте и вставьте указанную область виртуальной области отображения в текущий интерфейс отображения.
Время обработки области пикселя матрицы 256 * 256 точек составляет 12,5 мс (0,2 мкс на пиксель).
(Xs, Ys): 1 # Координаты верхнего левого угла выбранной области значка виртуальной области отображения.
(Xe, Ye): 1 # Координаты нижнего правого угла фиксированной области значка виртуальной области отображения.
(X, y): координата верхнего левого угла при вставке в текущую область отображения.
Пример: AA 26 00 40 00 40 01 00 01 00 00 20 00 20 CC 33 C3 3C
0x27 Скопируйте и вставьте из указанной области виртуальной области отображения в текущий интерфейс отображения.
Время обработки области пикселя матрицы 256 * 256 точек составляет 12,5 мс (0,2 мкс на пиксель).
Режим: режим отображения.
.7 Настройка отображения фона 0 = Фоновая фильтрация не отображается, 1 = Отображение фона.
Если фоновая фильтрация не отображается, фон должен быть чисто черным.
.6 Настройки восстановления фонового изображения (доступно только когда .7 = 0 и .1 = 1):
0 = фоновые изображения не восстанавливаются, 1 = автоматически использовать 0 # изображения виртуальной области отображения для восстановления фона.
.5 Выбор интенсивности фоновой фильтрации (действителен только при .7 = 0) 0 = нормально, 1 = улучшено.
4-.1 Зарезервировано, запись 0.
.0 Выбор виртуальной области отображения 0 = 0 # виртуальная область отображения, 1 = 1 # виртуальная область отображения.
(Xs, Ys): координаты верхнего левого угла выбранной области значка виртуальной области отображения.
(Xe, Ye): координаты нижнего правого угла фиксированной области значка виртуальной области отображения.
(X, y): координата верхнего левого угла при вставке в текущую область отображения.
Пример: AA 27 01 00 40 00 40 01 00 01 00 00 40 00 40 CC 33 C3 3C
0x28 Значок анимации автоматически отображает настройки команды.
(X, y): начальная позиция значка анимации, соответствующая верхнему левому углу значка.
Режим: режим отображения иконки анимации.
.7 Переключение управления 1 = анимация этой группы включена 0 = анимация этой группы выключена, ею можно управлять с помощью инструкции 0x29.
.6 Режим запуска 1 = запуск с пиктограммы запуска 0 = запуск с последней позиции остановки.
.5-.4 Не определено, напишите 0.
.3-.0 Положение этой группы инструкций пиктограммы анимации, 0x00-0x0F, всего 16 групп инструкций анимации.
Icon_lib: место хранения библиотеки значков, 0x00-0x0F.
Icon_IDs: начальная позиция иконки анимации, 0x00-0xFF.
Icon_IDe: положение иконки завершения анимации, 0x00-0xFF.
Delay_time: временной интервал отображения иконки анимации, 0x00-0xFF, единица составляет 10 мс.
Пример: AA 28 00 10 00 10 80 09 00 09 0A CC 33 C3 3C Установите анимацию группы 0
0x29 Значок анимации автоматически отображает командное управление.
Cartoon_Set: управление переключением инструкций анимации ICON,
каждый бит соответствует группе инструкций, 1 = вкл , 0 = выкл;
.15 соответствует 15-й группе инструкций анимации и .0 соответствует 0-й группе инструкций анимации.
Пример: AA 29 00 05 CC 33 C3 3C Включите анимационные инструкции для групп 0 и 2.

PDF по инструкциям к нему (T5UIC1 Kernel Application Guid)  можно скачать  здесь http://www.dwin.com.cn/service/en/file/id/27  

 

Картинки как пользовать:

https://blog.csdn.net/DWINdaisy_chen/article/details/82911205 :

Как использовать значок JPEG для завершения интерфейса человек-машина на экране Diven (T5UIC1, T5UIC4)
 наконец , выпустила на 2018-09-30 16:55:14 чтения числа 913 Favorite 
расширение
Ди Вэньпин недавно запустил новый режим разработки - не прежнюю форму использования изображений BMP для обрезки по одному, а благодаря расположению и сочетанию значков JPEG. Я также почувствовал себя очень странно, когда впервые связался, в основном потому, что я привык к предыдущему методу разработки.После подробного изучения я обнаружил, что для требований, которые не так сложны, это на самом деле очень просто, то есть мое мышление необходимо изменить. В случае аналогового компьютера режим прошлой разработки эквивалентен замене всего рабочего стола одним касанием и завершению разработки интерфейса путем замены рабочего стола различными функциями. В этом режиме он имеет форму рабочего стола + значки N. Рабочим столом здесь является Di Полноэкранное фоновое изображение на текстовом экране. Раньше страница переключалась, но теперь фон не изменился, значок выше переключен. Итак, как сделать этот значок JPEG, так как его использовать?
 
Все мы знаем, что ни один последовательный экран не поддерживает все форматы изображений. Наиболее распространенными последовательными экранами являются изображения bmp, которые поддерживают 24-битный цвет RGB. Формат значков JPEG здесь также имеет соответствующие требования к формату. Независимо от формата иконки, которая была изначально создана, вам нужно всего лишь обработать ее в базовом режиме сжатия 444. Divin предоставляет инструмент для сжатия иконок. Просто спросите их. Хотя это небольшое программное обеспечение, его легко использовать. , Имеет функцию пакетной обработки изображений, сделать более 100 кадров иконки анимации можно конвертировать за один раз. Следует отметить, что значки должны называться по номерам, чтобы их можно было упорядочивать и называть по порядку, что будет удобнее для дальнейшей разработки.
 
Следующим шагом является создание стандартного файла библиотеки. Библиотека значков представляет собой набор значков. Файлы значков можно упаковать в библиотеку значков с помощью специального инструмента создания ICON. Это упростит организацию и вызов производства. После создания библиотеки значков файлы в ней не могут быть изменены или удалены по желанию. , Следует отметить, что инструментальное программное обеспечение, используемое для создания библиотеки значков JPEG, отличается от обычных инструментов, разработанных DGUS, и не может использоваться универсально. Инструмент создания библиотеки значков JPEG распознает только изображения JPEG, обработанные после 444 режима сжатия базовой линии.
————————————————
版权声明:本文为CSDN博主「恐龙蛋壳」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

есть проблемка , что картинок можно вывести только 16 ( команда 0x22 , данные от 0000 по 000F  )
т.е. посылка   от   AA 22 00 00 CC 33 C3 3C   по    AA 22 00 0F CC 33 C3 3C  , 0010 - уже нифига не показывает 17ю  картинку 16.jpeg   . манагерский ход похоже , чтоб более дорогие версии диспов покупали с бо'льшими возможностями)

здесь http://programmersought.com/article/61771386309/ вроде описано как это можно обойти через создания файла иконок, но пока не догнал как это надо провернуть.

 

// для самого крайнего случая , прошивка дисплея (обновление ядра) http://www.dwin.com.cn/service/en/file/id/13  выбрать галочкой Kernel Upgrade , скачать T5 CPU kernel program20191221 -> T5UIC1_V21.BIN

slider
Offline
Зарегистрирован: 17.06.2014

попался китайский примерчик  T5UIC1  arduino ,  http://bbs.elecfans.com/jishu_1706628_1_1.html ,

[size=4]0)数据结构体与宏定义
// 指令数据发送宏操作
#define SEND_DATA(P)    Serial1.write(P)
#define TX_8(P1)        SEND_DATA((P1)&0xFF) // send one byte
#define TX_16(P1)       TX_8((P1)>>8);TX_8(P1) // send two byte
#define TX_32(P1)       TX_16((P1)>>16);TX_16((P1)&0xFFFF) // send four byte
#define BEGIN_CMD()     TX_8(FRAME_HRAD)
#define END_CMD()       TX_32(FRAME_TAIL)

// 文本属性结构体  
typedef struct{
    us08 mode;        //        显示模式
    us16 sx, sy;        //        字符串显示的左上角坐标
    us16 f_color, b_color;        //  字符显示颜色 && 字符背景显示颜色
    us08 num_i;        // 显示的整数位数,0x01-0x14
    us08 num_f;        //  显示的小数位数,0x00-0x14,Num_I+Num_F 之和不能超过20
    us08  p_len;            //  待发送的数据字节数
    us08 *p_data;           //  指向数据缓存区的指针
}DWIN_TEXT_STR;

// dwin操作类
class DWIN_LIB{
public:
/*  
*  配置与接口  
*******************************************************************************/
void dwin_shake(void);
void dwin_set_backlight(us08 level);
void dwin_write_storage(us08 type,us16 addr, us08 *data, us08 len);
void dwin_write_sram(us16 addr, us08 *data, us08 len);
void dwin_write_flash(us16 addr, us08 *data, us08 len);
void dwin_read_storage(us08 type,us16 addr, us08 len);
void dwin_read_sram(us16 addr, us08 len);
void dwin_read_flash(us16 addr, us08 len);
void dwin_pic_storage(us08 pic_id);

/*  
*  绘图相关  
*******************************************************************************/
void dwin_clear_screen(us16 color);
void dwin_set_point_color(us16 x, us16 y, us16 color);
void dwin_draw_line(us16 sx, us16 sy, us16 ex, us16 ey, us16 color);
void dwin_draw_rect(us16 sx, us16 sy, us16 ex, us16 ey, us16 color);
void dwin_fill_rect(us16 sx, us16 sy, us16 ex, us16 ey, us16 color);
void dwin_xor_rect(us16 sx, us16 sy, us16 ex, us16 ey, us16 color);
void dwin_move_rect(us16 sx, us16 sy, us16 ex, us16 ey, us16 color, us16 distance, us08 dir, us08 mode);

/*  
*  文本相关
*******************************************************************************/
void dwin_disp_string(DWIN_TEXT_STR *pstr);
void dwin_disp_num(DWIN_TEXT_STR *pstr);
/*  
*  图标、图片相关
*******************************************************************************/
void dwin_show_qr(us16 sx, us16 sy, us08 qr_pixel, us08 *data, us08 len);
void dwin_show_pic_from_storage(us08 jpg_id);
void dwin_show_ico_from_storage(us16 sx, us16 sy, us08 ico_addr, us08 ico_id, us08 mode);
void dwin_show_ico_from_sram(us16 sx, us16 sy, us16 sram_addr, us08 mode);
void dwin_show_pic_from_virtual1(us08 jpg_id);
void dwin_copy_pic_from_virtual1(us16 sx, us16 sy, us16 ex, us16 ey, us16 x, us16 y);
void dwin_copy_pic_from_virtual(us08 mode, us16 sx, us16 sy, us16 ex, us16 ey, us16 x, us16 y);
void dwin_draw_ico_animation(us08 mode, us16 sx, us16 sy, us08 ico_addr, us08 icos_id, us08 icoe_id, us08 timer);
void dwin_ico_animation(us08 ico_addr, us08 sw);
us08 dwin_frame_read(us08 indata, DWIN_DATA_STR *frameT);
private:
};

// 处理dwin 2d画图类
class DWIN_PROCESS{
public:
void init_dwin(void);
void dwin_handle_porcess(void);
void show_temperature(float data, us08 num_f);
void show_voltage(float data, us08 num_f);
void show_currents(float data, us08 num_f);
void show_gate_switch(us08 sw);
private:
DWIN_LIB dwin_lib;

void dwin_proc_shake(void);
void create_gui_A(void);
void create_gui_B(void);
};

1)loop ():程序主体运行程序
void loop() {
// put your main code here, to run repeatedly:
delay(1);
dwin_process.dwin_handle_porcess();
count++;
timeC++;
IF(count >= 200){
count = 0;
if(!record){
record = 1;
digitalWrite(LED_BUILTIN, LOW);
}
else{
record = 0;
digitalWrite(LED_BUILTIN, HIGH);
}
}
if(timeC >= 3000){
timeC = 0;
temp_v += 0.1f;
vol_v += 0.01f;
cur_v += 0.01f;
if(sw_v) sw_v = 0;
else sw_v = 1;
dwin_process.show_temperature(temp_v, 1);  
dwin_process.show_voltage(vol_v, 2);  
dwin_process.show_currents(cur_v, 2);  
dwin_process.show_gate_switch(sw_v);
}
}

2). setup ():接口和变量的初始化函数
void setup() {
// put your setup code here, to run once:
pinMode(LED_BUILTIN, OUTPUT);
Serial1.begin(115200);
Serial.begin(115200);
while (!Serial) {}
dwin_process.init_dwin();
Serial.println("OK");
}
3). create_gui_A ():界面1显示函数
void DWIN_PROCESS::create_gui_A(void){
    DWIN_TEXT_STR textStr;
    us08 text[14] = {0xCF,0xB5,0xCD,0xB3,0xB3,0xF5,0xCA,0xBC,0xBB,0xAF,0x2E,0x2E,0x2E,0x2E};
   
    // 显示二维码
    us08 qr_data[22] = {
        0x68,0x74,0x74,0x70,0x3A,0x2F,0x2F,0x77,0x77,0x77,0x2E,
        0x64,0x77,0x69,0x6E,0x2E,0x63,0x6F,0x6D,0x2E,0x63,0x6E
    };
    //dwin_show_qr(5,5,1,qr_data,22);
    //dwin_show_qr(5,220,1,qr_data,22);
    //dwin_show_qr(425,5,1,qr_data,22);
    dwin_lib.dwin_show_qr(425,220,1,qr_data,22);

    textStr.mode = 0;
    textStr.mode = DISABLE_TEXT_RESIZE|DISABLE_TEXT_BCOLOR|FONT1632;
    textStr.f_color = ASSEMBLE_RGB(0, 0, 255);
    textStr.p_len = 14;
    textStr.p_data = text;
    textStr.sx = 100; textStr.sy = 120;
    dwin_lib.dwin_disp_string(&textStr);

   

    text[0] = 0x05;
    while(1){
delay(1000);
        textStr.sx = 315; textStr.sy = 125;
        dwin_lib.dwin_fill_rect(textStr.sx, textStr.sy, textStr.sx+60, textStr.sy+50, ASSEMBLE_RGB(31, 33, 33));
   
        textStr.mode = 0;
        textStr.mode = FONT1224|DISABLE_NUM_BCOLOR|ENABLE_SIGNED_NUM|DISABLE_NUM_ZERO|DISABLE_NUM_ZERO_S;
        textStr.f_color = ASSEMBLE_RGB(0, 0, 255);
        textStr.p_len = 1;      
        textStr.p_data = text;
        textStr.num_i = 2;
        textStr.num_f = 0;
        
        dwin_lib.dwin_disp_num(&textStr);

        text[0] -= 1;
        if(text[0] == 0xFF){
            //dwin_fill_rect(textStr.sx, textStr.sy, textStr.sx+60, textStr.sy+50, ASSEMBLE_RGB(31, 33, 33));
            break;
        }
    }
    dwin_lib.dwin_clear_screen(ASSEMBLE_RGB(31,33,33));

}
4). create_gui_B ():界面2显示函数
void DWIN_PROCESS::create_gui_B(void){
    DWIN_TEXT_STR textStr;
    us08 text0[7] = {0x41,0x50,0x50,0xB2,0xD9,0xD7,0xF7};
    us08 text1[12] = {0x20,0xB5,0xE7,0xD1,0xB9,0xBC,0xEC,0xB2,0xE2,0xD2,0xC7,0x20};
    us08 text2[10] = {0xB5,0xB1,0xC7,0xB0,0xCE,0xC2,0xB6,0xC8,0xA3,0xBA};
    us08 text3[10] = {0xB5,0xB1,0xC7,0xB0,0xB5,0xE7,0xD1,0xB9,0xA3,0xBA};
    us08 text4[10] = {0xB5,0xB1,0xC7,0xB0,0xB5,0xE7,0xC1,0xF7,0xA3,0xBA};
    us08 text5[10] = {0xD5,0xA2,0xB5,0xB6,0xBF,0xAA,0xB9,0xD8,0xA3,0xBA};

    // 显示二维码
    us08 qr_data[22] = {
        0x68,0x74,0x74,0x70,0x3A,0x2F,0x2F,0x77,0x77,0x77,0x2E,
        0x64,0x77,0x69,0x6E,0x2E,0x63,0x6F,0x6D,0x2E,0x63,0x6E
    };
    dwin_lib.dwin_clear_screen(ASSEMBLE_RGB(31,33,33));
    dwin_lib.dwin_draw_line(0,18,479,18,ASSEMBLE_RGB(255,255,0));

    dwin_lib.dwin_draw_rect(337, 40, 449, 185, ASSEMBLE_RGB(255,255,0));
    dwin_lib.dwin_show_qr(347,80,2,qr_data,22);

    // APP
    textStr.mode = 0;
    textStr.mode = DISABLE_TEXT_RESIZE|ENABLE_TEXT_BCOLOR|FONT1224;
    textStr.f_color = ASSEMBLE_RGB(255, 255, 0);
    textStr.b_color = ASSEMBLE_RGB(31,33,33);
    textStr.p_len = 3;
    textStr.p_data = text0;
    textStr.sx = 375; textStr.sy = 48;
    dwin_lib.dwin_disp_string(&textStr);

    // 电压检测仪
    textStr.mode = 0;
    textStr.mode = DISABLE_TEXT_RESIZE|ENABLE_TEXT_BCOLOR|FONT1632;
    textStr.f_color = ASSEMBLE_RGB(0, 0, 255);
    textStr.b_color = ASSEMBLE_RGB(31,33,33);
    textStr.p_len = 12;
    textStr.p_data = text1;
    textStr.sx = 145; textStr.sy = 0;
    dwin_lib.dwin_disp_string(&textStr);

    // 当前温度
    textStr.mode = 0;
    textStr.mode = DISABLE_TEXT_RESIZE|DISABLE_TEXT_BCOLOR|FONT1428;
    textStr.f_color = ASSEMBLE_RGB(255, 255, 0);
    textStr.p_len = 10;
    textStr.p_data = text2;
    textStr.sx = 5; textStr.sy = 50;
    dwin_lib.dwin_disp_string(&textStr);

    // 当前电压
    textStr.mode = 0;
    textStr.mode = DISABLE_TEXT_RESIZE|DISABLE_TEXT_BCOLOR|FONT1428;
    textStr.f_color = ASSEMBLE_RGB(255, 255, 0);
    textStr.p_len = 10;
    textStr.p_data = text3;
    textStr.sx = 5; textStr.sy = 100;
    dwin_lib.dwin_disp_string(&textStr);

    // 当前电流
    textStr.mode = 0;
    textStr.mode = DISABLE_TEXT_RESIZE|DISABLE_TEXT_BCOLOR|FONT1428;
    textStr.f_color = ASSEMBLE_RGB(255, 255, 0);
    textStr.p_len = 10;
    textStr.p_data = text4;
    textStr.sx = 5; textStr.sy = 150;
    dwin_lib.dwin_disp_string(&textStr);

    // 刀闸开关
    textStr.mode = 0;
    textStr.mode = DISABLE_TEXT_RESIZE|DISABLE_TEXT_BCOLOR|FONT1428;
    textStr.f_color = ASSEMBLE_RGB(251, 146, 0);
    textStr.p_len = 10;
    textStr.p_data = text5;
    textStr.sx = 5; textStr.sy = 200;
    dwin_lib.dwin_disp_string(&textStr);

}


5). dwin_disp_string ():显示字符的函数
void DWIN_LIB::dwin_disp_string(DWIN_TEXT_STR *pstr){
    us08 i = 0;
    BEGIN_CMD();
    TX_8(0x11);
    TX_8(pstr->mode);
    TX_16(pstr->f_color);
    TX_16(pstr->b_color);
    TX_16(pstr->sx);
    TX_16(pstr->sy);
    //while(pstr->p_len--) TX_8(*(pstr->p_data++));
    while(pstr->p_len--) TX_8(pstr->p_data[i++]);
    END_CMD();   
}

6). dwin_disp_num ():显示数字的函数
void DWIN_LIB::dwin_disp_num(DWIN_TEXT_STR *pstr){
    us08 i = 0;
    BEGIN_CMD();
    TX_8(0x14);
    TX_8(pstr->mode);
    TX_16(pstr->f_color);
    TX_16(pstr->b_color);
    TX_8(pstr->num_i);
    TX_8(pstr->num_f);
    TX_16(pstr->sx);
    TX_16(pstr->sy);
    //while(pstr->p_len--) TX_8(*(pstr->p_data++));
    while(pstr->p_len--) TX_8(pstr->p_data[i++]);
    END_CMD();
}



7). show_temperature ():显示温度数据,文本显示
void DWIN_PROCESS::show_temperature(float data, us08 num_f){
    us32 value;
    us08 text[4];
    DWIN_TEXT_STR textStr;
   
    switch(num_f){
        case 1:
            value = data*10;
        break;
        
        case 2:
            value = data*100;
        break;
        
        case 3:
            value = data*1000;
        break;

        default: return;
    }
    text[0] = value>>24;
    text[1] = value>>16;;
    text[2] = value>>8;;
    text[3] = value;

    textStr.sx = 130; textStr.sy = 50;
    dwin_lib.dwin_fill_rect(textStr.sx, textStr.sy, textStr.sx+80, textStr.sy+50, ASSEMBLE_RGB(31, 33, 33));

    textStr.mode = 0;
    textStr.mode = FONT1632|DISABLE_NUM_BCOLOR|ENABLE_SIGNED_NUM|DISABLE_NUM_ZERO|DISABLE_NUM_ZERO_S;
    textStr.f_color = ASSEMBLE_RGB(0, 0, 255);
    textStr.p_len = 4;      
    textStr.p_data = text;
    textStr.num_i = 8;
    textStr.num_f = num_f;
   
    dwin_lib.dwin_disp_num(&textStr);

}
8). show_gate_switch ():显示闸刀状态量,2D画图形式
void DWIN_PROCESS::show_gate_switch(us08 sw)
{
    us08 text1[2] = {0xBF, 0xAA};
    us08 text0[2] = {0xB9, 0xD8};
    DWIN_TEXT_STR textStr;
   
    dwin_lib.dwin_fill_rect(150, 199, 250, 231, ASSEMBLE_RGB(251, 146, 0));
    dwin_lib.dwin_fill_rect(151, 200, 249, 230, ASSEMBLE_RGB(31, 33, 33));
    if(sw == 1){
        dwin_lib.dwin_fill_rect(199, 201, 248, 229, ASSEMBLE_RGB(0, 255, 0));
        
        textStr.mode = 0;
        textStr.mode = DISABLE_TEXT_RESIZE|DISABLE_TEXT_BCOLOR|FONT1224;
        textStr.f_color = ASSEMBLE_RGB(0, 0, 0);
        textStr.p_len = 2;
        textStr.p_data = text1;
        textStr.sx = 215; textStr.sy = 203;
        dwin_lib.dwin_disp_string(&textStr);
    }
    else{
        dwin_lib.dwin_fill_rect(152, 201, 200, 229, ASSEMBLE_RGB(255, 0, 0));

        textStr.mode = 0;
        textStr.mode = DISABLE_TEXT_RESIZE|DISABLE_TEXT_BCOLOR|FONT1224;
        textStr.f_color = ASSEMBLE_RGB(0, 0, 0);
        textStr.p_len = 2;
        textStr.p_data = text0;
        textStr.sx = 165; textStr.sy = 203;
        dwin_lib.dwin_disp_string(&textStr);
    }
   
}[/size]

но в исходниках не было файлов microsd для дисплея . да и скетч не компилится.
исходники пересохранил здесь https://yadi.sk/d/xECGjywCI_ZbIQ , там есть какая-то либа  DWIN  x_dwin_t5_lib.h    x_dwin_t5_lib.cpp  , в ней реализованы функции T5UIC1 .
Еще одну либу с примерами нашел здесь :  dwin.h    https://blog.csdn.net/ZXC_ABC/article/details/84871823 
 

#ifndef __DWIN_H
#define __DWIN_H
#include<stm32f10x.h>
#include "stm32f10x_conf.h"
void LCD_printf(u8 mode,u16 Color,u16 Bcolor,u16 x,u16 y,const char *format, ...);//显示字符串或者变量
void erweima(u16 x,u16 y,u8 QR_Pixel,const char *format, ...);//生成二维码
void clr(u16 Color);//清屏
void Linear_interpolation(u8 num,u16 Color,...);//绘制直线
void Place_point(u8 num,u16 Color,u16 nx,u16 ny,...);//绘制点
void DIM_Set(u8 Set);//调节背光
void Bode_Set(u16 Set);//调节扩展串口波特率
void disd_ico(u16 x,u16 y,u8 mode,u8 Icon_lib,u8 Icon_IDs,u8 Icon_0IDe,u8 Delay_time);//设置动态图标
void dis_ico(u16 x,u16 y,u8 mode,u8 ids);//显示ico图标
void pic(u8 id);//写数据存储器
#endif

#include<stm32f10x.h>
#include "stm32f10x_conf.h"
#include "dwin.h"
/****************显示字符串函数*****************/
/*参数:mode:D7********************************/
void LCD_printf(u8 mode,u16 Color,u16 Bcolor,u16 x,u16 y,const char *format, ...)
{
  char tmp[200];
  va_list arg; 
  va_start(arg, format); 
  vsprintf(tmp,format,arg);
  va_end(arg); 
	Usart_SendByte(USART1,0xaa);
	
	Usart_SendByte(USART1,0x11);
	Usart_SendByte(USART1,mode);//模式
	Usart_SendByte(USART1,Color/256);
	Usart_SendByte(USART1,Color%256);//前景颜色
	Usart_SendByte(USART1,Bcolor/256);
	Usart_SendByte(USART1,Bcolor%256);//背景颜色
	Usart_SendByte(USART1,x/256);
	Usart_SendByte(USART1,x%256);//横坐标
	Usart_SendByte(USART1,y/256);
	Usart_SendByte(USART1,y%256);//Y坐标
	
  Usart_SendString(USART1,tmp);	
	Usart_SendByte(USART1,0xcc);
	Usart_SendByte(USART1,0x33);
	Usart_SendByte(USART1,0xc3);
	Usart_SendByte(USART1,0x3c);
}
/****************显示二维码函数*****************/
/*参数:mode:D7********************************/
void erweima(u16 x,u16 y,u8 QR_Pixel,const char *format, ...)
{
  char tmp[200];
  va_list arg; 
  va_start(arg, format); 
  vsprintf(tmp,format,arg);
  va_end(arg); 
	
	Usart_SendByte(USART1,0xaa);
	
	Usart_SendByte(USART1,0x21);
 
	Usart_SendByte(USART1,x/256);
	Usart_SendByte(USART1,x%256);//横坐标
	Usart_SendByte(USART1,y/256);
	Usart_SendByte(USART1,y%256);//Y坐标
	Usart_SendByte(USART1,QR_Pixel);//二维码每个点的大小
	
  Usart_SendString(USART1,tmp);	
	Usart_SendByte(USART1,0xcc);
	Usart_SendByte(USART1,0x33);
	Usart_SendByte(USART1,0xc3);
	Usart_SendByte(USART1,0x3c);
}
/****************读存储器***********************/
/*参数:mode:D7********************************/
void read_sram_flsh(u16 Length,u8 Type,u16 Address)//写数据存储器
{
	  Usart_SendByte(USART1,0xaa);
		Usart_SendByte(USART1,0x32);
		Usart_SendByte(USART1,Type);
		Usart_SendByte(USART1,Address/256);
		Usart_SendByte(USART1,Address%256);
		Usart_SendByte(USART1,Length);
		Usart_SendByte(USART1,0xcc);
		Usart_SendByte(USART1,0x33);
		Usart_SendByte(USART1,0xc3);
		Usart_SendByte(USART1,0x3c);
}
 
/****************绘图清屏函数*****************/
/*参数:mode:D7********************************/
void clr(u16 Color)
{
 
	Usart_SendByte(USART1,0xaa);
	
	Usart_SendByte(USART1,0x01);
 
	Usart_SendByte(USART1,Color/256);
	Usart_SendByte(USART1,Color%256);//颜色
 
	
	Usart_SendByte(USART1,0xcc);
	Usart_SendByte(USART1,0x33);
	Usart_SendByte(USART1,0xc3);
	Usart_SendByte(USART1,0x3c);
}
/****************绘图直线插入函数*****************/
/*参数:mode:D7********************************/
void Linear_interpolation(u8 num,u16 Color,...)
{
    va_list arg_ptr;
    int tempValue;
		num*=2;
    Usart_SendByte(USART1,0xaa);
		Usart_SendByte(USART1,0x03);
		Usart_SendByte(USART1,Color/256);
		Usart_SendByte(USART1,Color%256);
    va_start(arg_ptr,Color);
    while(num--)
    {
          tempValue=va_arg(arg_ptr,int);
          Usart_SendByte(USART1,tempValue/256);
					Usart_SendByte(USART1,tempValue%256);
    }
 
    va_end(arg_ptr);
		Usart_SendByte(USART1,0xcc);
		Usart_SendByte(USART1,0x33);
		Usart_SendByte(USART1,0xc3);
		Usart_SendByte(USART1,0x3c);
}
/****************绘图打点插入函数*****************/
/*参数:mode:D7********************************/
void Place_point(u8 num,u16 Color,u16 nx,u16 ny,...)
{
    va_list arg_ptr;
    int tempValue;
		num*=2;
    Usart_SendByte(USART1,0xaa);
		Usart_SendByte(USART1,0x02);
		Usart_SendByte(USART1,Color/256);
		Usart_SendByte(USART1,Color%256);
		Usart_SendByte(USART1,nx%256);
		Usart_SendByte(USART1,ny%256);
    va_start(arg_ptr,ny);
    while(num--)
    {
          tempValue=va_arg(arg_ptr,int);
          Usart_SendByte(USART1,tempValue/256);
					Usart_SendByte(USART1,tempValue%256);
    }
 
    va_end(arg_ptr);
		Usart_SendByte(USART1,0xcc);
		Usart_SendByte(USART1,0x33);
		Usart_SendByte(USART1,0xc3);
		Usart_SendByte(USART1,0x3c);
}
/****************屏幕背光亮度设置*****************/
/*参数:mode:D7********************************/
void DIM_Set(u8 Set)
{
 
    Usart_SendByte(USART1,0xaa);
		Usart_SendByte(USART1,0x30);
		Usart_SendByte(USART1,Set);
		Usart_SendByte(USART1,0xcc);
		Usart_SendByte(USART1,0x33);
		Usart_SendByte(USART1,0xc3);
		Usart_SendByte(USART1,0x3c);
}
/****************设置扩展串口波特率**************/
/*参数:mode:D7********************************/
void Bode_Set(u16 Set)//调节扩展串口波特率
{
	  Usart_SendByte(USART1,0xaa);
		Usart_SendByte(USART1,0x38);
		Usart_SendByte(USART1,15667200/Set/256);
		Usart_SendByte(USART1,15667200/Set%256);
		Usart_SendByte(USART1,0xcc);
		Usart_SendByte(USART1,0x33);
		Usart_SendByte(USART1,0xc3);
		Usart_SendByte(USART1,0x3c);
}
/****************从扩展串口发送字符串**************/
/*参数:mode:D7********************************/
void UART_TX(const char *format, ...)//串口发送字符串
{
		char tmp[200];
		va_list arg; 
		va_start(arg, format); 
		vsprintf(tmp,format,arg);
		va_end(arg); 
	  Usart_SendByte(USART1,0xaa);
		Usart_SendByte(USART1,0x39);
		Usart_SendString(USART1,tmp);
		Usart_SendByte(USART1,0xcc);
		Usart_SendByte(USART1,0x33);
		Usart_SendByte(USART1,0xc3);
		Usart_SendByte(USART1,0x3c);
}
/****************显示ICO图标**************/
/*参数:mode:D7********************************/
void dis_ico(u16 x,u16 y,u8 mode,u8 ids)//显示ico图标
{
	  Usart_SendByte(USART1,0xaa);
		Usart_SendByte(USART1,0x23);
		Usart_SendByte(USART1,x/256);
		Usart_SendByte(USART1,x%256);
		Usart_SendByte(USART1,y/256);
		Usart_SendByte(USART1,y%256);	
	  Usart_SendByte(USART1,mode);	
		Usart_SendByte(USART1,ids);
		Usart_SendByte(USART1,0xcc);
		Usart_SendByte(USART1,0x33);
		Usart_SendByte(USART1,0xc3);
		Usart_SendByte(USART1,0x3c);
}
/****************设置动态图标*******************/
/*参数:mode:D7********************************/
void disd_ico(u16 x,u16 y,u8 mode,u8 Icon_lib,u8 Icon_IDs,u8 Icon_0IDe,u8 Delay_time)//显示ico图标
{
	  Usart_SendByte(USART1,0xaa);
		Usart_SendByte(USART1,0x28);
		Usart_SendByte(USART1,x/256);
		Usart_SendByte(USART1,x%256); 
		Usart_SendByte(USART1,y/256);
		Usart_SendByte(USART1,y%256);	
		Usart_SendByte(USART1,mode);
		Usart_SendByte(USART1,Icon_lib);
		Usart_SendByte(USART1,Icon_IDs);
		Usart_SendByte(USART1,Icon_0IDe);
		Usart_SendByte(USART1,Delay_time);
	
		Usart_SendByte(USART1,0xcc);
		Usart_SendByte(USART1,0x33);
		Usart_SendByte(USART1,0xc3);
		Usart_SendByte(USART1,0x3c);
}
/****************控制动态图标*******************/
/*参数:mode:D7********************************/
void disc_ico(u16 set)//控制ico动态图标
{
	  Usart_SendByte(USART1,0xaa);
		Usart_SendByte(USART1,0x29);
	
		Usart_SendByte(USART1,set/256);
		Usart_SendByte(USART1,set%256); 
 
		Usart_SendByte(USART1,0xcc);
		Usart_SendByte(USART1,0x33);
		Usart_SendByte(USART1,0xc3);
		Usart_SendByte(USART1,0x3c);
}
 
/****************写存储器***********************/
/*参数:mode:D7********************************/
void writ_sram_flsh(u16 Length,u8 Type,u16 Address)//写数据存储器
{
	  Usart_SendByte(USART1,0xaa);
		Usart_SendByte(USART1,0x31);
		Usart_SendByte(USART1,Type);
		Usart_SendByte(USART1,Address/256);
		Usart_SendByte(USART1,Address%256);
		while(Length--)
		{
			Usart_SendByte(USART1,Address++);
		}	
 
		Usart_SendByte(USART1,0xcc);
		Usart_SendByte(USART1,0x33);
		Usart_SendByte(USART1,0xc3);
		Usart_SendByte(USART1,0x3c);
}
 
/****************读存储器***********************/
/*参数:mode:D7********************************/
void pic(u8 id)
{
	  Usart_SendByte(USART1,0xaa);
		Usart_SendByte(USART1,0x22);
		Usart_SendByte(USART1,0x00);
		Usart_SendByte(USART1,id);
\
		Usart_SendByte(USART1,0xcc);
		Usart_SendByte(USART1,0x33);
		Usart_SendByte(USART1,0xc3);
		Usart_SendByte(USART1,0x3c);
}


примеры:

4. Общие функции функций

4.1 Отображение текста и данных

void LCD_printf(u8 mode,u16 Color,u16 Bcolor,u16 x,u16 y,const char *format, ...);//显示字符串或者变量   
参数mode:
.7 字符宽度调整设置 1=调整 0=不调整。
.6 背景色显示设置 1=显示 0=不显示。
.5-.4 写 0。 .3-.0:字号大小,0x00-0x09,对应字体大小于下: 0x00=6*12 0x01=8*16 0x02=10*20 0x03=12*24 0x04=14*28 0x05=16*32 0x06=20*40 0x07=24*48 0x08=28*56 0x09=32*64 
Color:字符显示颜色。
Bcolor:字符背景显示颜色。 
(x,y):字符串显示的左上角坐标。
Пример:

LCD_printf(0x42,0xffff,0xf00f,10,10,"迪文科技:%04d",x++);
Например, в форме вызова будет отображаться «Технология Divin: десятичное представление значения x»

4.2 Класс рисования

void clr(u16 Color);//清屏
color:颜色
void Linear_interpolation(u8 num,u16 Color,...);// 端点连线
num:点的个数
color:连线的颜色
…:各点坐标
void Place_point(u8 num,u16 Color,u16 nx,u16 ny,...);//绘制点
Пример:

Linear_interpolation(3,0xff00,0x0000,0x0000,0x0100,0x0100,0x0100,0x0000);
4.3 Отображение QR-кода

void erweima(u16 x,u16 y,u8 QR_Pixel,const char *format, ...);//生成二维码
x,y为二维码左上角坐标。QR_Pixel表示二维码每个点占用的像素点。
…:URL此函数的分钟同样类似printf
Пример:

erweima(148,50,0x04,"https://www.dwin.com.cn");
 

4.4 Регулировка яркости подсветки

void DIM_Set(u8 Set);//调节背光
set:0x00-0xff
Пример:

DIM_Set(0xff);//调节背光到最亮
 

4.5 Регулировка скорости последовательного бода

void Bode_Set(u16 Set);//调节扩展串口波特率
set:波特率
Пример:

Bode_Set(9600);//设置波特率为9600
————————————————
版权声明:本文为CSDN博主「ZXC_ABC」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ZXC_ABC/article/details/84871823

// еще немного кодинга 
http://bbs.elecfans.com/jishu_1706611_1_1.html , 
http://bbs.elecfans.com/jishu_1706584_1_1.html ,  исходники на GDF103RCT6  пересохранил здесь https://yadi.sk/d/oL1YpZB5JfrHMA , но там тож неоказалось обещанных файлов для диспа.

Написал простой скетч , он перебирает картинки 0.jpeg - 15.jpeg загруженные через microSD :

int i;

void setup() 
{
  Serial.begin(115200);
}

void loop() {
  // AA 22 00 00 CC 33 C3 3C - AA 22 00 0F CC 33 C3 3C 
  
// картинки с 0-15
for (i=0 ; i<16 ; i++)
{
 Serial.write(0xAA); 
 Serial.write(0x22); 
 Serial.write(0x00); 
 Serial.write(i); 
 Serial.write(0xCC); 
 Serial.write(0x33); 
 Serial.write(0xC3); 
 Serial.write(0x3C); 
 Serial.println(""); 
 delay(300);
}

// картинки с 15-0
for (i=0 ; i<16 ; i++)
{
 Serial.write(0xAA); 
 Serial.write(0x22); 
 Serial.write(0x00); 
 Serial.write(15-i); 
 Serial.write(0xCC); 
 Serial.write(0x33); 
 Serial.write(0xC3); 
 Serial.write(0x3C); 
 Serial.println(""); 
 delay(300);
}

delay(1000);

// напишем слово  Privet
//                        0b01000001 - лог1 в 6 бите - включить цвет знакоместа , иначе прозрачный  
byte Send2[11] = { 0xAA, 0x11, 0b00000001, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x20, 0x00, 0x80 };
Serial.write(Send2,11);
Serial.print("Privet"); 
byte Send3[4] = { 0xCC, 0x33, 0xC3, 0x3C };
Serial.write(Send3,4);
Serial.println(""); 
delay(2000);

}

и картинки ( анимация ) на microSD : https://yadi.sk/d/SJhJUJUTGq07rQ , карта должна быть 2-8гигов , отформатирована на FAT32 , сектора по 4096 байт ( 4К ) 
 

// Если есть у кого примерчики с большой анимацией + иконки для T5UIC1 , поделитесь пож.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Да это исследование прям на дисер тянет.  :)    Спасибо. 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Смех, смехом, а информация полезная...

Я вот старый, избалованный Некшном,  полез разбираться с таким дисплеем и всю башку сломал.... Где у него обработки ? Как их редактировать ? Кто нибудь может на пальцах объяснить ? Или с этим вопросом в песочницу ?

AlexZR
Offline
Зарегистрирован: 08.02.2016

только по видео примерам, тут https://www.youtube.com/channel/UCLmhCvRy891zbIMWXu3Effg

если получится разобраться, дайте знать, сделаю заказ...

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

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

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

DetSimen пишет:

Да это исследование прям на дисер тянет.  :)    Спасибо. 

Кстати, присоединяюсь. Спасибо !

Nik_an
Nik_an аватар
Offline
Зарегистрирован: 20.11.2019

так там и не надо ни каких итерпритаторов, вся работа с графикой сводиться к выводу картинок(аля рабочий стол) и иконок отображающих что либо. и данных.

очень просто и легко. основная работа по графике - в графическом редакторе:)

ссыль на 04WN

https://www.youtube.com/watch?v=2ElTg_K1QWc&feature=emb_logo

извиняйте за качество съемки - на телефон:(

сейчас докапываю дисплей под DGUS2 с  емкостным сенсором и IPS матрицей, очень нравиться.

 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Nik_an пишет:

так там и не надо ни каких итерпритаторов, вся работа с графикой сводиться к выводу картинок(аля рабочий стол) и иконок отображающих что либо. и данных.

А стрелочный дисплей при таком раскладе как сделать ? :)

Nik_an
Nik_an аватар
Offline
Зарегистрирован: 20.11.2019

последовательностью иконок - то есть на первой стрелка на нуле, на второй чуть отклонилась итд

как гифка это для ТА

в более продвинутых можно картинку со стрелкой крутить.

сегодня может засниму

 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Nik_an пишет:

сегодня может засниму

Да не обязательно. Понятно. Думаю рисовать будет быстрее.

И еще вопрос, если позволите. Я так понимаю, что изменения которые производит пользователь на экране(нажал кнопку, ввел какую то цифру и т.д.) нужно отслеживать, постоянно опрашивая монитор. Сам он что либо в сторону процессора не передает, нужно обязательно "спросить" (проверить значение в ячейке памяти) ?

Nik_an
Nik_an аватар
Offline
Зарегистрирован: 20.11.2019

рисовать однозчно быстрее

сам все в порт сыпет, если для переменной указанна галка  отправлять

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Nik_an пишет:

сам все в порт сыпет, если для переменной указанна галка  отправлять

Спасибо, полезно. Если не сложно, расскажите как сделать клавиатуру ? По примерам нихрена не понятно.

Nik_an
Nik_an аватар
Offline
Зарегистрирован: 20.11.2019

клавиатура -в тачконтроле выбираем  data input, там закладка клавиатура.

при нажатии  на тач выскочет клава, на ней должны быть кнопки   - Return Key Code,

каждой кнопке присваивается код соответствующий ее значению, при нажатии на нее она вернет значение в нужную переменную.

 

 

Nik_an
Nik_an аватар
Offline
Зарегистрирован: 20.11.2019
brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Nik_an пишет:

клавиатура -в тачконтроле выбираем  data input, там закладка клавиатура.

при нажатии  на тач выскочет клава, на ней должны быть кнопки   - Return Key Code,

каждой кнопке присваивается код соответствующий ее значению, при нажатии на нее она вернет значение в нужную переменную.

А гlе в настройках эта переменная устанавливается ? У data input не нашел настроек этой переменной :( Вообще этот компонент (data input) самый не дружественный. Где бы найти пример создания и использования клавиатуры.

Nik_an
Nik_an аватар
Offline
Зарегистрирован: 20.11.2019

[/quote]

А гlе в настройках эта переменная устанавливается ? У data input не нашел настроек этой переменной :( Вообще этот компонент (data input) самый не дружественный. Где бы найти пример создания и использования клавиатуры.

[/quote]

как  то так

Nik_an
Nik_an аватар
Offline
Зарегистрирован: 20.11.2019

какаято фигня тута с картинками:(

Nik_an
Nik_an аватар
Offline
Зарегистрирован: 20.11.2019

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Спасибо ! Я не корректно выразился. Как сделать кнопку, которая загонит данные в переменную я знаю. Как работать с клавиатурами которые основаны на Return Key Code. Все примеры больших клавиатур основаны именно на этих элементах. Я подозреваю, что variable input загоняет некое значение в ячейку, а клвиатуры на базе Return Key Code позволяют собрать и редактировать в буфере текстовую строку. Вот эта функция мне не понятна...

К сожалению пример, из которого я это дернул, в себе это содержит, но не использует при запуске. Пример кстати с сайта производителя.

Nik_an
Nik_an аватар
Offline
Зарегистрирован: 20.11.2019

>>Я подозреваю, что variable input загоняет некое значение в ячейку, а клвиатуры на базе Return Key Code позволяют собрать и редактировать в буфере текстовую строку. Вот эта функция мне не понятна...

вечером попробую снять как это работает

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Если не сложно. Буду благодарен. Только как работает я вижу на новом дисплее, там это загружено с завода. А вот как это выстроить - не понятно.

Nik_an
Nik_an аватар
Offline
Зарегистрирован: 20.11.2019
brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Большое спасибо. Очень помогли. Думаю полезно будет многим.

Откуда брать список команд (коды), у меня DGUS II , есть таблица, но как на основе этих данных сделать посылку - не понятно.

вот например яркость

0x5A, 0xA5, 0x05, 0x82, 0x00, 0x82, 0x64, 0x32

0x5A, 0xA5 - преамбула

0x05, - длина пакета

0x82 - команда

D2,    D1,    D4,    D3 (так обозначено 0

0x00, 0x82,  - ЧТО ВОТ ЭТО ТАКОЕ ?

0x64, 0x32 -  64-яркость в работе, 32-яркость в ожидании

Че то отвечает с десятого раза, похоже потому что хендшейк я ему никак подобрать не могу. 

Блин развели протоколов... дурдом, без китайского тяжело :(

Nik_an
Nik_an аватар
Offline
Зарегистрирован: 20.11.2019

Откуда брать список команд (коды), у меня DGUS II

125 сообщение этой темы, там ссылка и какой файл нужен. все на китайском, но гугл хорошо переводит

http://www.ampdisplay.com/download1.php тут видео с названием  Video: RTC Settings

там есть как клавиатуру создавать

хендшейк (рукопожатие) ему  не нужен

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Спасибо. Буду изучать китайский. 

Только не понятно, почему дисплей начинает отвечать на 10-20 посылку.

 

Nik_an
Nik_an аватар
Offline
Зарегистрирован: 20.11.2019

а на этот запрос 5A A5 04 83 00 0F 01

как и что отвечает?

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Сей час проверю. 

 

 

Nik_an
Nik_an аватар
Offline
Зарегистрирован: 20.11.2019

0x00, 0x82,  - ЧТО ВОТ ЭТО ТАКОЕ ?

регистр (номер) куда данные пишутся

в данном случае - LED_Config

5A A5 07 82 0082 64 32 03E8

5A A5  заголовок кадра

07 длина данных

82 команда записи

0082 регистр (его номер)

64  уровень нормальный  

32  уровень для снижения (если запрограммировано в конфигурации дисплея)

 03E8 какой то хвост  он есть в даташите, но нет описания с ним работает и без него тоже

Кстати а как считается эта контрольная сумма ? Чего то никак найти не могу.

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

 

 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Да, спасибо с этим разобрался. С контрольной сумой тоже (тривиальная CRC16).

Я кажется crc включил :) Надо выключить .

Где то видел какие то команды ресетов. Но пробовать пока боюсь.

 

Nik_an
Nik_an аватар
Offline
Зарегистрирован: 20.11.2019

Я кажется crc включил :) Надо выключить .

это можно сделать только в фале конфигурации железа, вы ее меняли?

картинка ниже