Как массиву байтов присвоить массив байтов ???
- Войдите на сайт для отправки комментариев
Сб, 10/08/2019 - 22:09
В функции по i2c формируется массив байтов. Все полученное надо присвоить другому массиву байтов. Пробовал и глобально объявлять и локально. Пробовал по всякому см. в коде, закоментил в функции loop. Я понимаю, вопрос нубский, но ни в гугле, ни в справочных данных, ни в нагугленных примерах, второй день немогу найти. Хочется кричать :" ПАМАГИТЕ!!!!".
Спасибо за ответы.
byte a[4] = {1, 2, 3, 4}; byte b[4]; void setup() { Serial.begin(9600); } void loop() { //data_save; // КАК??? Массиву a присвоить b //byte &a = (byte&)b; //a = b; //byte &b = (byte&)data_save; //memcpy(a, b, sizeof(a)); for (int i=0; i<4;i++) { Serial.print(i); Serial.print(" "); Serial.println(a[i]); } delay(5000); } void data_save(){ // Формируется массивбайтов полученных по i2c byte b[4] = {5, 6, 7, 8}; return b; }
В 15 строке, после фигурной скобки добавьте a[i]=b[i];
В ответе нули. Код сейчас такой:
Так у Вас b[i] и так "0". Присвойте им в начале скетча во 2 строке, какие либо значения, как в 24 строке
Выдает, в массиве a: 11,12,13,14: Но никак не 5,6,7,8. Функция data_save не влияет на массив b,объявленный в начале. Код такой:
Так Вы ее и не вызываете. Вставьте в нее вывод чего нибудь в сериал, и увидите.
Так Вы ее и не вызываете. Вставьте в нее вывод чего нибудь в сериал, и увидите.
На повторное определение массива, компилятор не ругается? Попробуйте в 22 строке написать b[1]=5;b[2]=6 и т.д
У вас b объявляется в функции data_save и она не та, что во второй строке.
P.s. опередил меня svm :)
На повторное определение массива, компилятор не ругается?
Так это warning, у настоящих пацанов это не отображается.
Так точно!!! Теперь по всякому работает. Повторное определение в функции, вы правы !!!
Удачи! А 12 строку лучше вынести из цикла. Зачем ее 4 раза выполнять?
KindMan, спасибо. Повторное определение, именно оно. Пишу в Arduino ide, как я понял в другой среде разработки эту ошибку можно было бы заметить? В чем сейчас люди пишут?
Спасибо за ответы.
Удачи! А 12 строку лучше вынести из цикла. Зачем ее 4 раза выполнять?
Понимаю. Черновик :)
Пишу в Arduino ide, как я понял в другой среде разработки эту ошибку можно было бы заметить?
По умолчанию, в ардуино ide не отображаются так называемые предупреждения. В настройках включите - Отбражать все сообщения компилятора.
Пишу в Arduino ide, как я понял в другой среде разработки эту ошибку можно было бы заметить?
Включил, буду наблюдать. Спасибо, что отозвались, глупые ошибки делают нервы :)
На ютубе искал, на порнхабе искал, на блонди.ру тоже ничего нет :(
Да, читайте ж, наконец, Кернигана и Ритчи! Там всё это с примерами и разжёвыванием!
Интересно, как криво надо сформулировать запрос, чтоб на такую элементарщину не найти в гугле ответ?
На "как скопировать массив" в гугле сотни ответов
Можно я ещё по нубски спрошу? Решить данную задачу через указатели никак нельзя разве?
наверное я что то прогнал. При работе с указателями мы не получим копию массива пока не скопируем всемжлементы (или весь объём памяти массивом занятый).
Сделал ошибку в коде. вопрос исчерпан.
На ютубе искал, на порнхабе искал, на блонди.ру тоже ничего нет :(
Да, читайте ж, наконец, Кернигана и Ритчи! Там всё это с примерами и разжёвыванием!
Я не знал про "Кернигана и Ритчи". Не зря запостил. Спасибо за ответ.
Можно я ещё по нубски спрошу? Решить данную задачу через указатели никак нельзя разве?
наверное я что то прогнал. При работе с указателями мы не получим копию массива пока не скопируем всемжлементы (или весь объём памяти массивом занятый).
Так оно и получилось. Изминил элементы массива правильно и все ОК.
Я не знал про "Кернигана и Ритчи".
Значит, придя на форум, не ознакомился с разделом "Песочница". Там всё написано.