WiseLord, насколько я понимаю то wav_header является сам по себе указателем на нулевой байт структуры ? как правильно понимать (uint8_t*)&wav_header) ?
wav_header - структура &wav_header - указатель на неё (uint8_t*)&wav_header - приводим указатель к типу (uint8_t*) *(uint8_t*)&wav_header - читаем по этому указателю число типа uint8_t *((uint8_t*)&wav_header + 5 ) - читаем по (этому указателю + 5 байтов смещение) число типа uint8_t
как обратится, считать данные, к примеру, с 0 или 5 или 30 байта данной структуры ?
нахрена иметь структуру, чтобы потом обращаться к ее данным мимо поименованных полей?! ну берите тогда сырой массив, и обращайтесь, если с указателями траблы или при помощи union совместите массив со структурой и ковыряйтесь там хоть так, хоть эдак
Код:
typedef struct{ char chunkId[4]; char format[4]; char subchunk1Id[4]; unsigned short audioFormat; unsigned short numChannels; unsigned long sampleRate; unsigned long byteRate; unsigned short blockAlign; unsigned short bitsPerSample; char subchunk2Id[4]; unsigned long subchunk2Size; }HEADER;
wav_hader.raw_bytes[15] = 0; // обнуляем 15-й байт в структуре, наплевав на ее поля wav_header.struc_data.audioFormat = 12; // а теперь делаем бяку через поле
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
нахрена иметь структуру, чтобы потом обращаться к ее данным мимо поименованных полей?!
требуется значение полей структуры вывести на LCD 16х2 как я понимаю надо последовательно байт за байтом превращать в строку и выводить на экран если знаете что-то попроще - поправте
компилятор начинает ругатся что тип массива str не соответствует выводимому полю структуры
str - это массив символов, т.е. строка. тип выводимого поля должен соответствовать формату вывода, но и только! компилятор не будет ругаться. главное - в str должно быть достаточно места, чтобы влезло полное представление соответствующего числа в виде символов, т.е. для unsigned long не менее 11 байтов.
FreshMan писал(а):
под кажое поле надо свою выводную строку создавать ?
я понятия не имею, как вы планируете выводить на ЖКИ 2х16 кучу полей из заголовка WAV-файла... и зачем это вообще делать... вы правы в одном: каждое поле придется выводить отдельным форматом, соответствующим этому полю, а вот строка-результат, которая будет хранить символьное представление полей, может быть одна и та же.
чтобы меньше ломать голову с выводом на ЖКИ, раз уж вы решили это делать при помощи стандартных функций вывода, я рекомендую воспользоваться моими рекомендациями и работать примерно так:
А какая разница? Какого бы типа ни было поле, приведя его к long, а потом отформатировав sprintf-ом, получите в любом случае строковое представление этого поля.
где-то читал что он в таком случае должен сам определить его размер
Если имелись ввиду конструкции типа:
Код:
char str[] = "фгчтрчгтр";
размер массива будет исчислен с учётом \0 терминатора. Если использовать его как целевой для sprintf, нужно быть уверенным, что его размера хватит, чтобы вместить результат с учётом терминатора. В противном случае переменные, имевшие несчастье быть объявленными за str будут перезаписаны "мусором" без их на то желания.
_________________ Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR!
Нужно загрузить картинку с флешки, преобразовать контур и сохранить обратно. Лабораторка такая у сестры. В визуал студии с помощью библиотеки CImg мы научились преобразовывать контур Подключаем флешку по этой инстструкции (используя модуль FatFs) https://nagits.wordpress.com/2010/10/18/avr_sd/ И вообщем такие вопросы: 1) Возможно ли подключить CImg к проекту Atmel Studio? 2) Как загрузить bmp картинку в микроконтроллер atmega32? 3) Если 1 или 2 никак не получится сделать (или не целесообразно), то как можно решить задачу по-другому?
1. При большом желании да. Надо учесть отличия компиляторов. При необходимости внести изменения в коды библиотеки. 2. Подключить к проекту для атмеги можно преобразованные файлы через bmp2c или bin2c. Если картинка на внешней флешке, то побайтовым считыванием картинки в ОЗУ контроллера. Затем делайте с картинкой что хотите если вообще памяти контроллера для хранения хватит. Но я бы взял для графики хотя бы атмега64 с внешней микросхемой ОЗУ. 3. CImg похоже для компьютеров без дефицита памяти и производительности. При необходимости можно подсмотреть реализацию нужного алгоритма и написать своё с учётом ресурсов системы.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения