Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: bin2carray
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
prottoss
Всем доброго времени суток.
Выложил свою версию консольной утилиты преобразующий любой файл в текстовый файл с объявленным массивом на языке Си. Есть исходники и скомпилированная версия под Windows (VC 2015).
Так же, надеюсь, сможет собраться на Linux - к сожалению, нет опыта программирования под эту ОС.

Страница программы - http://prottoss.com/projects/bin2carray/bin2carray.htm
ViKo
А я в Matlab сделал m-файл, который вычисляет мне массивы оконных функций для БПФ и записывает их в виде h-файла, который копирую и добавляю в проект Keil. Еще и комментариев напихал в шапку и не только.
Kabdim
пользовался https://github.com/tristan2468/Hexy
но прочитал что можно линкер заставить просто включить бинарный файл в образ. В след. раз пожалуй воспользуюсь им.
prottoss
Цитата(Kabdim @ Jun 28 2016, 15:10) *
пользовался https://github.com/tristan2468/Hexy
но прочитал что можно линкер заставить просто включить бинарный файл в образ. В след. раз пожалуй воспользуюсь им.

Не всегда удобно пользоваться таким методом. Допустим, я создал пиктограммы и мне нужно их объявить в проекте. На мой взгляд, удобно объявить несколько массивов данных. Это одно из применений утилиты. Другое, чем я пользовался - создание загрузчика на РС для обновления прошивки МК. В проекте программы обновления можно объявить массив новой прошивки, созданный моей утилитой.

Цитата(ViKo @ Jun 25 2016, 22:58) *
А я в Matlab сделал m-файл, который вычисляет мне массивы оконных функций для БПФ и записывает их в виде h-файла, который копирую и добавляю в проект Keil. Еще и комментариев напихал в шапку и не только.
Я Вас глубоко поздравляю - но как Ваше "А я" относится к моей теме?
ViKo
Цитата(prottoss @ Jun 28 2016, 16:19) *
Я Вас глубоко поздравляю - но как Ваше "А я" относится к моей теме?

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

Я показал альтернативный вариант. А вы чего ждали, создавая тему? "Ух, ты, молоток!"?
prottoss
Цитата(ViKo @ Jun 28 2016, 19:40) *
А вы чего ждали, создавая тему? "Ух, ты, молоток!"?
Ну это Вы чего то ждете - я просто выложил свой проект (как в общем и другие) тем, кому он будет полезен.


Цитата(ViKo @ Jun 28 2016, 19:40) *
Наверное, при желании, я смог бы...
Ну и - перестаньте флудить. Для "Я смог бы" откройте тему с таким заголовком.
ViKo
Цитата(prottoss @ Jun 28 2016, 16:53) *
Ну это Вы чего то ждете - я просто выложил свой проект (как в общем и другие) тем, кому он будет полезен.
Ну и - перестаньте флудить. Для "Я смог бы" откройте тему с таким заголовком.

Я не жду. Пишу, что считаю нужным. Можете стукануть на меня модераторам. Они почистят.

Я сделал так:
CODE

%{
*******************************************************************************
@file FFT_Windows.m
@author ViKo
@brief Calculate and write to file Windows Coefficients
@note Delete a comma at end of each array
*/
%}

clear;
FFT_P = 10; % степень размера БПФ
FFT_N = 2 ^ FFT_P; % размер БПФ

for (i = 1 : FFT_P)
angle = pi / (2 ^ (FFT_P - i));
AC(i) = round(cos(angle) * 100000000) / 100000000;
AS(i) = round(-sin(angle) * 100000000) / 100000000;
end

WindHann = hann(FFT_N);
WindHamm = hamming(FFT_N);
WindBart = bartlett(FFT_N);
WindFlat = flattopwin(FFT_N);

fid = fopen('FFT_Windows.h', 'w');

fprintf(fid, '\n');
fprintf(fid, ...
'/*!****************************************************************************
*\n');
fprintf(fid, ...
' @file\t\tFFT_Windows.h\n');
fprintf(fid, ...
' @author\t\n');
fprintf(fid, ...
' @brief\t\t%d dots Windows for Fast Fourier Transform\n', FFT_N);
fprintf(fid, ...
' @note\t\tGenerated with MATLAB, delete commas at ends of arrays manually!\n');
fprintf(fid, ...
' *******************************************************************************/\n\n');

fprintf(fid, '/* Cosinus angle step */\n');
fprintf(fid, 'static const float AC[] = {\n');
fprintf(fid, ' %.7E, %.7E, %.7E, %.7E,\n', AC);
fprintf(fid, '};\n\n');

fprintf(fid, '/* Sinus angle step */\n');
fprintf(fid, 'static const float AS[] = {\n');
fprintf(fid, ' %.7E, %.7E, %.7E, %.7E,\n', AS);
fprintf(fid, '};\n\n');

fprintf(fid, '/* Hann Window */\n');
fprintf(fid, 'static const float WindHann[] = {\n');
fprintf(fid, ' %.7E, %.7E, %.7E, %.7E,\n', WindHann);
fprintf(fid, '};\n\n');

fprintf(fid, '/* Hamming Window */\n');
fprintf(fid, 'static const float WindHamm[] = {\n');
fprintf(fid, ' %.7E, %.7E, %.7E, %.7E,\n', WindHamm);
fprintf(fid, '};\n\n');

fprintf(fid, '/* Bartlett Window */\n');
fprintf(fid, 'static const float WindBart[] = {\n');
fprintf(fid, ' %.7E, %.7E, %.7E, %.7E,\n', WindBart);
fprintf(fid, '};\n\n');

fprintf(fid, '/* Flattop Window */\n');
fprintf(fid, 'static const float WindFlat[] = {\n');
fprintf(fid, ' %.7E, %.7E, %.7E, %.7E,\n', WindFlat);
fprintf(fid, '};\n\n');

fclose(fid);

zltigo
QUOTE (prottoss @ Jun 25 2016, 18:50) *
Выложил свою....

Не смотрел. Если скажете, чем привлекательнее, например, этой: http://osdk.defence-force.org/index?page=d...subpage=bin2txt
обещаю посмотреть.
prottoss
Цитата(ViKo @ Jun 28 2016, 20:02) *
Пишу, что считаю нужным.
... только писать. В многоточии имя нарицательное.

Цитата(zltigo @ Jun 28 2016, 20:07) *
Не смотрел.
И не смотрите, если Вас это не интересует sm.gif

Вообще топик был создан для тех, кому это нужно и кому это интересно. Всего лишь...
zltigo
QUOTE (prottoss @ Jun 28 2016, 17:19) *
И не смотрите, если Вас это не интересует sm.gif

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

Прочитайте написанное выше. Мне нужно и интересно. Интересно зачем была создана Ваша.
prottoss
Цитата(zltigo @ Jun 28 2016, 20:29) *
Интересно зачем была создана Ваша.
Была создана мною давным давно. Пользовался. Решил выложить вот этот свой вариант. Цимуса нет. Просто это моя программа.


ViKi & zltigo
Хочу выложить еще несколько проектов. Готовлю бочки для слюней и яда. Жду Вас с нетерпением.
ViKo
Я не ViKi. rolleyes.gif И я писал первое сообщение без яда. Мне думается, чем больше человек знает, тем лучше. Хорошо, когда есть программы хорошие и разные. Пишите, себе, выкладывайте, имеете право.
prottoss
Цитата(ViKo @ Jun 28 2016, 21:06) *
Пишите, себе, выкладывайте, имеете право.
Ладно. Вас прощаю biggrin.gif
k155la3
Господа, Вы господа или где ? sm.gif
Немного не так названа тема у TS. Назвал бы Автоматизация кодопостроения
Сам сейчас отлаживаю свой меню-построитель.
Да и раздел для начинающих - интересно посмотреть.


prottoss
Цитата(k155la3 @ Jun 28 2016, 21:19) *
...Назвал бы Автоматизация кодопостроения

А где тут автоматизация? sm.gif Написание кучи printf и fprintf???
zltigo
QUOTE (prottoss @ Jun 28 2016, 18:01) *
Хочу выложить еще несколько проектов. Готовлю бочки для слюней и яда.

Эко какой нервный sad.gif. Просто спросил о цели с какой писалась эта утилита и вообще слова плохого не сказал. Я, как автор, всегда знаю зачем я что то пишу собственное вместо использования сущестующего. Полагал, что и Вы знаете.
ViKo
Цитата(prottoss @ Jun 28 2016, 18:09) *
Ладно. Вас прощаю biggrin.gif

Благодарствую!
prottoss
Ну вот другое дело. Все помирились.
esaulenka
Цитата(zltigo @ Jun 28 2016, 17:07) *
Не смотрел. Если скажете, чем привлекательнее, например, этой: http://osdk.defence-force.org/index?page=d...subpage=bin2txt обещаю посмотреть.


Ну так даже смотреть необязательно, достаточно описание прочитать (ссылка - в первом же сообщении).
Оно умеет считать CRC (миллионом разных способов. не лень было.. sm.gif ) и добивать массив до нужного размера.

Наверное, у половины здесь присутствующих подобные утилиты есть. Я тоже делал, но строго заточенную под нужную задачу - что-то общее делать категорически лень.
Так что совершенно не понимаю, в чём prottoss виноват.

Есть, кстати, ещё более универсальная SRecord. Там, правда, ключи писать с непривычки мозг ломается...
zltigo
QUOTE (esaulenka @ Jun 28 2016, 18:28) *
Ну так даже смотреть необязательно, достаточно описание прочитать (ссылка - в первом же сообщении).
Оно умеет считать CRC (миллионом разных способов. не лень было.. sm.gif )

Уму нерастяжимо зачем бы это было нужно sad.gif. Ну и ОЧЕРЕДНОЙ раз повторю - я АВТОРА спрашивал о цели создания данного произведения, что хотел сказать, свет чего донести широким массам программистов. Рекламная акция, так сказать.
QUOTE
и добивать массив до нужного размера.

Тоже станновато, тем более, что можно просто поставить любое число размера в опеределении массива.
QUOTE
Наверное, у половины здесь присутствующих подобные утилиты есть.

Есть. Но самописные-то? Зачем?
QUOTE
Есть, кстати, ещё более универсальная SRecord. Там, правда, ключи писать с непривычки мозг ломается...

В свое время пользовал, но как ни странно ее автору удалось наделать ошибок. Полагаю исправили со временем, но пользоваться перестал.
prottoss
Цитата(AlexandrY @ Jun 28 2016, 22:18) *
- конвертирует сразу пачку файлов
- может начать конвертацию файла с любого смещения, конвертировать только часть файла,
- может конвертировать больше чем размер файла с произвольным заполнением
- данные в 8-и, 16-и, 32-х битном представлении
- формат представления десятичный или шестнадцатеричный
- можно добавлять коментарии
- произвольное имя для массивов
- автонумерация массивов при пакетной конвертации
- никакой командной строки, чисто GUI
- все настройки и таблица запоминаются и восстанавливаются при следующем запуске программы.

Давайте:
- конвертирует сразу пачку файлов - это в батнике можно сделать -фтопку.
- может начать конвертацию файла с любого смещения, конвертировать только часть файла, - да, это может пригодится, если нужно выкинуть хедер, например в BMP файле и оставить только тело с палитрой... Блин, но это уже другая утилита... А еще для чего?
- данные в 8-и, 16-и, 32-х битном представлении - в Big или Litte Endian?
- формат представления десятичный или шестнадцатеричный - Это зачем? Фтопку.
- можно добавлять коментарии - Возможно...
- произвольное имя для массивов - В моей утилите есть.
- автонумерация массивов при пакетной конвертации -Это че такое?
- никакой командной строки, чисто GUIТ.е. только Windows?
- все настройки и таблица запоминаются и восстанавливаются при следующем запуске программы. См. п.1.
Цитата(AlexandrY @ Jun 28 2016, 22:18) *
Пятьдесят мегабайт кода написали пока мы тут трепались??? Ну это...это... просто чудо!

Да. О моих бубенчиках читайте на странице программы
TSerg
Обычный треп ни о чем.
ИМХО.
sonycman
Цитата(ViKo @ Jun 28 2016, 18:02) *
Я сделал так:
Код
...
fprintf(fid, '  %.7E, %.7E, %.7E, %.7E,\n', AC);
...

Благодарствую!
Тоже думал над этой темой, но совершенно не владею Матлабом.


По поводу процитированного фрагмента кода - вижу запись только четырёх значений, а как же остальные?
Это такой своеобразный цикл?
ViKo
Цитата(sonycman @ Jun 28 2016, 21:04) *
По поводу процитированного фрагмента кода - вижу запись только четырёх значений, а как же остальные?
Это такой своеобразный цикл?

Да, это формат задан. Выводятся все элементы массива (в данном случае - AC), до последнего. По 4 в строке.
sonycman
Цитата(ViKo @ Jun 28 2016, 22:30) *
Да, это формат задан. Выводятся все элементы массива (в данном случае - AC), до последнего. По 4 в строке.

Так и думал sm.gif

Было бы здорово, если бы ещё можно было увидеть форму функции на графике, прямо там, в матлабе... rolleyes.gif

ЗЫ: извиняюсь за офтоп, больше не буду bb-offtopic.gif
ViKo
Цитата(sonycman @ Jun 29 2016, 00:05) *
Было бы здорово, если бы ещё можно было увидеть форму функции на графике, прямо там, в матлабе... rolleyes.gif

Я и так знаю. rolleyes.gif https://en.wikipedia.org/wiki/Window_function
Думаю, вывести массив в plot() не должно быть невыполнимой миссией. laughing.gif bb-offtopic.gif
prottoss
Выложил еще одну утилиту - crc2table. Она является следствием предыдущей утилиты. Генерирует CRC таблицу и функцию подсчета CRC по заданному алгоритму.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.