powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Считывание данных в глобальный массив.
7 сообщений из 7, страница 1 из 1
Считывание данных в глобальный массив.
    #39130570
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Язык С.Пишу под камень.
У меня есть внешняя память куда я логирую данные.
Данные с памяти я считываю функцией
Код: c#
1.
uint32_t LOGGER_Read(uint32_t address, uint32_t lenght, uint8_t *buffer)


то есть передаю начальный адрес, размер и массив куда читать.
тестирую так
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
void Test_SetLog(void)
{
	for (int i=0; i<180; i++)
	{
		LOGGER_WriteDayDelta(i);
	}
}

void Test_GetLog(void)
{
	uint32_t packet_size = 180;
	uint8_t deltas[packet_size];
	LOGGER_Read(START_LOG_ADRESS,packet_size,deltas);
}


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

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

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
uint8_t *deltas_log;
GetLog(deltas_log);

Где

void GetLog(uint8_t *deltas)
 {
	uint32_t packet_size = 180; //for debug
	LOGGER_Read(START_LOG_ADRESS,packet_size,deltas);
 }



указатель понятно дело не инициализируется и я получаю массив заполненный мусором.
как мне правильно передать массив (указатель) в функцию?
...
Рейтинг: 0 / 0
Считывание данных в глобальный массив.
    #39130594
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выделяй память динамически.
malloc() realloc()
...
Рейтинг: 0 / 0
Считывание данных в глобальный массив.
    #39130602
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TВыделяй память динамически.
malloc() realloc()

в ембедед это не есть хорошо.
...
Рейтинг: 0 / 0
Считывание данных в глобальный массив.
    #39130610
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда
Код: plaintext
1.
2.
#define MAX_LOG_LEN 100500 // Максимально необходимый размер
uint8_t deltas_log[MAX_LOG_LEN];


Целиком наполнять не обязательно, пользуй сколько надо, не забывай проверять превышение MAX_LOG_LEN
...
Рейтинг: 0 / 0
Считывание данных в глобальный массив.
    #39130617
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima Tтогда
Код: plaintext
1.
2.
#define MAX_LOG_LEN 100500 // Максимально необходимый размер
uint8_t deltas_log[MAX_LOG_LEN];


Целиком наполнять не обязательно, пользуй сколько надо, не забывай проверять превышение MAX_LOG_LEN
тогда мне нужна какя то заглушка в массиве, типа EOF? чтоб знать до куда читать.
...
Рейтинг: 0 / 0
Считывание данных в глобальный массив.
    #39130621
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EOF это из другой оперы.

Добавь переменную
Код: plaintext
1.
int deltas_log_size = 0;


Запись в конец так
Код: sql
1.
2.
deltas_log[deltas_log_size] = ...
deltas_log_size++;
...
Рейтинг: 0 / 0
Считывание данных в глобальный массив.
    #39130629
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TEOF это из другой оперы.

Добавь переменную
Код: plaintext
1.
int deltas_log_size = 0;


Запись в конец так
Код: sql
1.
2.
deltas_log[deltas_log_size] = ...
deltas_log_size++;


да. точно. у меня же есть текущий номер записи. я всегда могу высчитать размер. спасибо.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Считывание данных в глобальный массив.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]