ARDUINO MSI Afterburner Data Server

MenY

✩✩✩✩✩✩✩
23 Май 2020
6
4
MADSIcon.png

Всем привет!
Решил поделиться своим не столько проектом, а скорее инструментом для его реализации. Это программа, которая позволяет отправлять через COM-порт данные из MSI Afterburner, предварительно отформатировав их.

MADS 0.4a.png

Редактор сообщений представляет из себя набор генераторов, которые берут данные из MSI Afterburner, модифицируют их нужным вам образом, после чего объединяются в одну строку. Сами сообщения могут отправляться с указанным интервалом, либо же по запросу от микроконтроллера.

Очень удобной функцией является возможность автоматического поиска подключенного устройства. Это происходит путем последовательной отправки запроса во все открытые порты. Если устройство присылает ответ, и он корректен, MADS начинает передачу данных. Также можно указать список портов, которые будут проигнорированы по время поиска.

Дополнительной функцией программы является Logger - инструмент для создания логов. Редактор логов аналогичен редактору последовательного порта, благодаря чему полученные данные могут быть сохранены нужным вам образом.

_____________________

Вместе с программой идет краткая документация и несколько демонстрационных проектов. Программа все еще в разработке, поэтому возможны незначительные баги и прочие прелести моей криворукости =)
Актуальная версия программы доступна на моем диске: Скачать MSI Afterburner Data Server

_____________________

Вот пара проектов с использованием данной программы:



20200523_194354.jpg

Демонстрационный проект дисплея, на котором отображается загрузка процессора и его температура. Исходники данного проекта можно найти в папке "Sample Projects". В этом проекте был использован lcd дисплей 2004a с i2c адаптером и Arduino UNO. Микроконтроллер просто выводит весь полученный через COM-порт текст. Все форматирование текста происходит со стороны программы, поэтому выводимый текст можно поменять в любой момент.



20200523_004050.jpg

Данный проект представляет из себя дисплей, на который выводится состояние ПК. Ради этого проекта и была создана программа. В будущем постараюсь поделиться данным проектом, сделав его универсальным. Сейчас же он заточен именно под мой компьютер, поэтому для других будет мало полезен. Тем более, память Arduino NANO уже забита на 99%, поэтому нужно будет переписать весь код, ответственный за рисование интерфейса.

To Be Continued ...
 

Вложения

kalobyte

★★★✩✩✩✩
1 Янв 2020
724
149
вчера только ковырял исходник хв монитора, куда допилили ком порт
причем на гитхабе нет этого пул реквеста
кто-то на форме п росил запилить ему такой индикатор и у гивера есть видос по этому делу
 

Nick

✩✩✩✩✩✩✩
1 Авг 2018
35
5
Вспомнил как в 2007 к компу жк дисплей подключал через lpt и программой LcdStudio всякую всячину выводил. Там и инфу можно было выводить и графику и анимацию. Кароче крутая штука была.
Вот такие данные она могла вывести
  • Free Disk space
  • Cpu Usage
  • System Uptime
  • Memory usage
  • Network Statistics
  • Display Information
  • Time & TimeZone Information
  • Rss Feeds
  • Battery Information
С такими программами работала
  • Winamp
  • Windows Media Player
  • MSN Messenger
  • Motherboard Monitor
  • ATITool
  • ATI Tray
  • Speedfan
  • RivaTuner
Интересна её можно под ардуину запилить на цветной дисплей.
 
Изменено:
  • Лойс +1
Реакции: Валерий_Б

MenY

✩✩✩✩✩✩✩
23 Май 2020
6
4
Вспомнил как в 2007 к компу жк дисплей подключал через lpt и программой LcdStudio всякую всячину выводил. Там и инфу можно было выводить и графику и анимацию. Кароче крутая штука была.
Вот такие данные она могла вывести
  • Free Disk space
  • Cpu Usage
  • System Uptime
  • Memory usage
  • Network Statistics
  • Display Information
  • Time & TimeZone Information
  • Rss Feeds
  • Battery Information
С такими программами работала
  • Winamp
  • Windows Media Player
  • MSN Messenger
  • Motherboard Monitor
  • ATITool
  • ATI Tray
  • Speedfan
  • RivaTuner
Интересна её можно под ардуину запилить на цветной дисплей.
Вряд ли, скорости COM-порта не хватит. Да и ардуину незачем для этого мучать - скорее всего достаточно будет любого USB - LTP адаптера. Правда встречаются переходники, которые поддерживают подключение исключительно принтеров.

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

Можно попробовать сделать LTP на ESP. В данном случае драйвера все равно придется писать, но хоть проблем в виде медленного канала связи не будет.
 

Nick

✩✩✩✩✩✩✩
1 Авг 2018
35
5
Загвоздка в том, что эта программа работает с некоторыми графическими дисплеями (монохромными) и программу, я так понимаю забросили, последняя версия была под Win XP.
К сожалению, у меня столько знаний нет в программировании, что бы прогу переписать.
Я думаю, там переходник не нужен и эмуляцию LPT порта не нужна, программа считывает данные с компа и шлёт в ардуину, та в свою очередь выводит на дисплей.
Эмуляция LPT, в современных условиях, это будет лишний костыль.
Дрова то уже есть ардуина айди, как-то же работает с ардуиной.
Я думаю, там вся проблема саму LcdStudio переписать, библиотеки для работы с дисплеями тоже есть.
Ну и Гайвер уже делал (проект PCdisplay), вывод данных на дисплей.

Я могу ошибаться, но я понимаю так:
мы рисуем что то или вставляем анимацию, статус бары, графики, картинки, задаём с каких источников считывать данные, программа всё это обрабатывает, компилирует и так же, как ардуино айди шьёт ардуину. Ардуина продолжает автономно работать, считывая данные с компа.
(это я представил, как могло бы быть)=)
То есть, мы рисуем красивости и выводим данные без знаний программирования, программа всё делает за нас=)
 
Изменено:

Nick

✩✩✩✩✩✩✩
1 Авг 2018
35
5
А почему на нано, а не на меге, тем более с цветным дисплеем, там же памяти маловато для таких целей.
С наной наверное OLED или St7920 подойдёт.
 
Изменено:

MenY

✩✩✩✩✩✩✩
23 Май 2020
6
4
Загвоздка в том, что эта программа работает с некоторыми графическими дисплеями (монохромными) и программу, я так понимаю забросили, последняя версия была под Win XP.
К сожалению, у меня столько знаний нет в программировании, что бы прогу переписать.
Я думаю, там переходник не нужен и эмуляцию LPT порта не нужна, программа считывает данные с компа и шлёт в ардуину, та в свою очередь выводит на дисплей.
Эмуляция LPT, в современных условиях, это будет лишний костыль.
Дрова то уже есть ардуина айди, как-то же работает с ардуиной.
Я думаю, там вся проблема саму LcdStudio переписать, библиотеки для работы с дисплеями тоже есть.
Ну и Гайвер уже делал (проект PCdisplay), вывод данных на дисплей.

Я могу ошибаться, но я понимаю так:
мы рисуем что то или вставляем анимацию, статус бары, графики, картинки, задаём с каких источников считывать данные, программа всё это обрабатывает, компилирует и так же, как ардуино айди шьёт ардуину. Ардуина продолжает автономно работать, считывая данные с компа.
(это я представил, как могло бы быть)=)
То есть, мы рисуем красивости и выводим данные без знаний программирования, программа всё делает за нас=)
На самом деле это работает иначе. Программа рендерит итоговый кадр силами компьютера, после чего, используя LTP, передает его непосредственно в буфер дисплея. LTP является очень гибким портом, что позволяет использовать его в качестве параллельного порта для связи с дисплеем, например.

Отсюда и возникает проблема - параллельный порт гораздо быстрее COM порта. Да и ардуине не потянуть такие объемы данных. Для примера - чтобы отобразить один кадр на цветном дисплее из моего проекта, нам нужно обработать 128px * 160px * 3c = 61440 байт данных, а это чуть более чем в 61 превышает объем RAM у Arduino Nano. Даже при использовании монохромного дисплея с таким разрешением, оперативка ардуины будет слабым местом.
 

kalobyte

★★★✩✩✩✩
1 Янв 2020
724
149
То есть, мы рисуем красивости и выводим данные без знаний программирования, программа всё делает за нас=)
это уже давно сделано https://nextion.tech/
а выводить данные в ком порт без всяких ардуин м ожно через повершел
а повершелл может получать всякие данные от самой системы через вми объекты
 

MenY

✩✩✩✩✩✩✩
23 Май 2020
6
4
А почему на нано, а не на меге, тем более с цветным дисплеем, там же памяти маловато для таких целей.
С наной наверное OLED или St7920 подойдёт.
Нана, без парсинга данных из COM-порта, способна обновлять весь интерфейс с частотой в 20FPS. С парсингом она выдает 5-6FPS.
На самом деле, не дисплей отъедает столько памяти, а код интерфейса. Весь интерфейс процедурный, что позволяет мгновенно поменять расположение элементов, отступы, цвета и т. д. Не мало места занимают методы интерполяции цвета, а также конвертации одного цветового пространства в другое. Многие "красивости" попросту излишни. Также, применено множество всевозможных оптимизаций, которые хоть и ускоряют работу, но сильно раздувают код. Можно освободить примерно треть памяти, избавившись от всего лишнего, но это может значительно повлиять на общую скорость работы.

Да и зачем брать мегу, если она даже на половину не будет использоваться?
 

MenY

✩✩✩✩✩✩✩
23 Май 2020
6
4
Да и не интересно это. Другое дело - поместить что-то сложное в скромные объемы памяти наны =)
 

kalobyte

★★★✩✩✩✩
1 Янв 2020
724
149
@Nick,
дорого - это платить разработчику, чтобы он писал много букв для того, чтобы тупо нарисовать интерфейс
поэтому покупается универсальная панелька (стоимостью в 1 час работы разработчика)
и для нее быстро рисуется морда, а данные передаются модбасом или еще как
 

MenY

✩✩✩✩✩✩✩
23 Май 2020
6
4
@Nick,
Нуу, от компьютера требуется лишь взять данные из Afterburner, обработать их и передать через COM-порт. Именно этим и занимается моя программа. Все остальное уже делает сама ардуина. Поэтому компьютер попросту нечем нагружать.
mads stat.png
Для примера - в режиме логирования каждого кадра игры, а это более ста FPS, программа загружает мой процессор от силы на 0,1-0,3%. И это с учетом параллельной записи файла на диск. Так что о нагрузке можно даже и не задумываться. Единственное, когда программа способна хоть немного нагружать ПК - это во время обновления интерфейса редактора. Но учитывая, что программа практически все время свернутой будет, это так себе проблема.
 

Nick

✩✩✩✩✩✩✩
1 Авг 2018
35
5
@Nick,
дорого - это платить разработчику, чтобы он писал много букв для того, чтобы тупо нарисовать интерфейс
поэтому покупается универсальная панелька (стоимостью в 1 час работы разработчика)
и для нее быстро рисуется морда, а данные передаются модбасом или еще как
Это да, но если делать простую самоделку, то такой дисплей уже жирновато выходит.
 

kalobyte

★★★✩✩✩✩
1 Янв 2020
724
149
@Nick,
ну экран такого рамзера сам по себе стоит половину стоимости + ардуина нужна, куча проводов
а тут все в одном с мощным контроллером и прогой для рисования гуя
 

Zuker

★✩✩✩✩✩✩
10 Янв 2024
66
14
Отличная прога! Спасибо автору! Такой скрупулезный мануал - редкий случай.
Похоже это единственная в рунете и легкая в работе с "MSI Afterburner" + "Arduino" софтина. Без гитхабов.

Немного адаптировал под парсинг оригинального скетча "PCdisplay.ino" (от AlexGyver), но взял только первые восемь нужных мне значений (массив int PCdata[20]). Собрал проект частично, только 1 датчик температуры и MADS.
//0-CPU temp, 1-GPU temp, 2-mother temp, 3-max HDD temp, 4-CPU load, 5-GPU load, 6-RAM use, 7-GPU memory use...

PS: значения HDD и матери - затычки
PSS: Работает на MSI Afterburner v4.6.5
PSSS:
Пару дней перебирал подобные проги.
С некоторыми знаниями в QT пробовал парсить веб на старенькой офф.утилитке "MSIAfterburnerRemoteServer" и отправлять в порт.
Пробовал компилить на "Visual Studio 2010" открытый проект "RTSSSharedMemorySample" (корень: RivaTuner Statistics Server\SDK\Samples\SharedMemory\RTSSSharedMemorySample\) - маловато знаний в VS для реализации задумок.
Зарубежные готовые варианты вообще не запускаются на Windows 10.

Ссылка на конфигу MADS (и картинка ниже) для скетча "PCdisplay.ino" (от AlexGyver): https://disk.yandex.ru/d/CwQObOVTUfNotw

Безымянный.png
 

Вложения

Изменено:

Alex_Pash

✩✩✩✩✩✩✩
29 Май 2024
1
0
Спасибище огромное!!!! Шикарная прога которая сделала мой проект именно таким как я хотел!!!! Единственный нормальный инструмент для передачи FPS (я даже пытался брать показания вклиниваясь шарпом в ditectX но там дичь полная выходит), А через эту прогу передаю фепсы, датчики и синхроню время. Hardware Monitor и рядом не стояла)))) Все ещё продолжаю допиливать...но благодаря этой программе реализую максимум возможностей!!! Процветания автору!!! :cool::cool::cool:Screenshot_20240529-095422.png
 

kotto

✩✩✩✩✩✩✩
22 Фев 2020
16
1
Всем добра ) Заметил нюанс, что если строка передачи слишком длинная, на просто уходит не вся, данные обрезаются. Можно это как то исправить? Не хочется переделывать код, где данные будут отправляться не в ASCII.
---
Исправил, километровое значение FPS надо было просто ужать в нужный формат.
 
Изменено:

kotto

✩✩✩✩✩✩✩
22 Фев 2020
16
1
Не знаю ошибка это в программе или у меня, но если отключить во время работы COM порт, а затем подключить заново, программа наглухо зависнет, даже задачу не снять.