Как сделать Глобальной переменную

9ser
Offline
Зарегистрирован: 18.11.2012

Добрый день

Подскажите как сделать чтобы из цикла после обработки получались глобальные переменные.

Есть цикл в программе

while (id=1; id>20; id++)
{
if (payload.from_node == id)
      {
      int Client(id);
      Serial.print("Client_");
      Serial.print(id);
};

смысл прост. получая пакет данных я сравниваю его с числами от1 до 20, если значение совпало нужно сделать переменную.

Можно сделать так, чтобы полученные данные я мог использовать вне цикла While ?

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

Такое вообще возможно???

olegab
Offline
Зарегистрирован: 09.04.2013

Определить ее вне функций

ites
Offline
Зарегистрирован: 26.12.2013

Достаточно объявить её в нужной области видимости. Вне вайла -- будет видна вне вайла. Вне функции -- будет видна вне функции.

9ser
Offline
Зарегистрирован: 18.11.2012

Это был бы самый простой вариант.

И он сейчас реализован.

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

Можно конечно перечислить все варианты. Тупо добавить  все возможные варианты Client1, Client2 ... Client20, но там этих перменных много :(

Там какой смысл:

Это сервер слушает клиентов.(ладно их номера)

У разных клиентов до 10-15 типов датчиков.

Так мне что надо. Сформировал клиент пакет и отправил серверу. в пакете (номер клиента, тип датчика, номер датчика, значение)

Сервер получил пакет прогнал его через цикл сравнения и сформировал переменную типа:

Client1_button_2 = 1;

Чтобы потом я прсто мог с этой переменной работать вне цикла сравнения

Как это реализовать???

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Ардуине без разницы как Вы назовете переменную, это только для Вашего удобства. Поэтому сохраняте например так

клиент = 1

батон = 2

значение = 3

и со всем этим уже и играетесь

olegab
Offline
Зарегистрирован: 09.04.2013

Вам нужно чтобы клиенты могли себя идентифицировать без прошивки идентификатора в скетч?

Делайте случайный выбор идентификатора и сохраняйте в еепром

9ser
Offline
Зарегистрирован: 18.11.2012

olegab пишет:

Вам нужно чтобы клиенты могли себя идентифицировать без прошивки идентификатора в скетч?

Делайте случайный выбор идентификатора и сохраняйте в еепром

кстати EEPROM это это вариант. Попробую.

sva1509
Offline
Зарегистрирован: 07.12.2012

А чем Вас массивы не устраивают: uint8_t clients[20];

пример:

uint8_t clients[20];

void setup()
{
        for (uint8_t id = 0;id < 20;id++) clients[id]=0;  // очистка массива
}

void myFunc()
{
        for(uint8_t id = 0;id < 20;id++) if (payload.from_node == id) clients[id]=payload.from_node;
}