Не могу заполнить первые 2 ячейки массива
- Войдите на сайт для отправки комментариев
Сб, 10/02/2018 - 15:19
В Массив типа INT, вношу значения переменных, так же типа INT. Массив из 11 значений.
int message_setting_int[10]; ..... int MIT = 11; int MIR = 55; int MF = 60; ..... message_setting_int[0]=MIntervalTown; message_setting_int[1]=MIntervalRoad; message_setting_int[2]=MCoefRain; ....
вместо первых 2-х значений в массиве появляется 0 и 40, не зависимо от значения внесеенных переменных.
В справке нашел, что при объявлении массива типа char, в нем необходимо место для хранения обязательного нулевого символа
может и для INT чтто-то подобное?
код не правильно записал, вот так у меня:
и не работает..
Массив из 11 значений.
Начнем с того, что массив не может быть из 11 значений, поскольку вы его объявляете размером в 10.
В справке нашел, что при объявлении массива типа char, в нем необходимо место для хранения обязательного нулевого символа
может и для INT чтто-то подобное?
Нет никакой необходимости для обязательного хранения нулевого символа ни в char массиве, ни в каком другом. Это ваше дело, что хранить в массиве. По нулевому символу в си принято определять конец строки, поэтому если вы намерены хранить строки разных размеров с массиве, то по нулевому символу просто удобно искать конец этих строк.
Но никто не заставляет вас этого делать, для длины строки можете завести отдельную переменную или даже выделить одну-две-...-n ячейки в самом массиве (по типу паскаля).
чудес не бывает, кто-то гадит в первые 4 байта массива извне. :)
Загрузите такой код и посмотрите результат
и не работает..
С чего Вы взяли, что не работает? Вы это печатали или хрустальный шар тёрли? Давайет полный скетч (только короткий - присвоил - напечатал - бред. Давайте, посмотрим.
Вроде все проверил, но ни как не получается....
В ячейки массива 0 и в 1 - вписываем те же данные что и в 2 и 3 : 800 и 600
но при выводе в serial (вывожу все ячейки через запятую), в 2 и 3 получаю 800 и 600, а вот в 0 и 1 получаю 40 и 0
Вот полученные данные:
вы что то нам не договариваете...
Сейчас уже не могу, завтра до обеда обязательно посмотрю.
Но первое ощущение - у Вас слишком маленькая скорость сериала для постоянной печати - Вы ловите переполнение буффера.
Проверьте это, чтобы мне завтра не проверять. Поставьте скорость скажем 115200, и, уж для верности, после строки 46 вставьте delay(5); или там delay(10);
Если поможет, то точно скорость-буффер. Если нет, выложите свежий скетч и я его завтра внимательно посмотрю.
тут не только первые два значение не те - тут еще и в конце три числа лишних - 120,60,40,
Вангую, что автор в форум выложил один скетч, а на ардуине у него другой.
Скетч не весь, но та часть что за передачу отвечает - скопирован из скетча.
Задержку пробовал ставить, но не в цикле, а между циклами в 500 мс.
- 120,60,40, - это в моем скетче за этим циклом передачи массива, стоит еще однин на передачу массива из 3-х значений. Там массив значений Long и значения long - с этим массивом все хорошо.
Вечером попробую скорость поменять, отпишусь. Спасибо за советы.
del
alexnf - если вы просите решить проблему - будьте до конца корректны. Скетч, который вы пробуете и скетч, который постите в форум - должны совпадать до байта.
Либо выложите тот код, что у вас в ардуине - либо запустите этот же тест для кода, что выложен в форум.
Скетч не весь, но та часть что за передачу отвечает - скопирован из скетча. ...... это в моем скетче за этим циклом передачи массива, стоит еще однин
Так не пойдёт! Вы просто издеваетесь и тратите наше время.
Будьте любезны выложить скетч из которого видно проблему и копипасту того, что именно этот (а не какой-то другой) скетч печатает.
Прошу прощения, просто хотел облегчить поиск ошибки, думал, что в какой то банальности ошибся, вот код который не работает:
выдает:
наверно нашел ошибку, не правильно объявил массив:
заменил на:
все заработало
не понятно только почему ошибка в этом массиве, влияла на другой
Я вам еще в субботу писал #2, что вы неправильно объявляете массив. Могли бы до этого времени уже проверить объявление всех своих массивов.
А по поводу, почему "ошибка в этом массиве, влияла на другой" то подумайте, если вам местная власть выделила 6 соток для огорода, а вы обрабатываете 8, то не кажется ли вам, что вы влезли на чей-то чужой огород?