Почему не печатается в монитор порта последний элемент массива?

avtodor
Offline
Зарегистрирован: 04.02.2019
#define PORT_MONITOR_VELOCITY 9600
#define INP_0 0
#define BATTARY_AMOUNT 5

enum BattaryCurrConditionType{Charge, Discharge};

struct BattaryInfoType
{
  int Days;
  int Hours;
  int Minutes;
  int Seconds;
  int Milliseconds;
  BattaryCurrConditionType BattaryCurrCondition;    
};

void setup();
void initBattariesArray(BattaryInfoType*);
void printBattariesArray(BattaryInfoType*);

int main()
{
  setup();
  BattaryInfoType BattariesArray[BATTARY_AMOUNT];
  initBattariesArray(BattariesArray);
  printBattariesArray(BattariesArray);
}

void setup() {
  // put your setup code here, to run once:
  Serial.begin(PORT_MONITOR_VELOCITY);
}

void initBattariesArray(BattaryInfoType* BattariesArray)
{
  for(int currBattary = INP_0; currBattary <= BATTARY_AMOUNT - 1; currBattary++)
  {
    BattariesArray[currBattary].Days = 0;
    BattariesArray[currBattary].Hours = 0;
    BattariesArray[currBattary].Minutes = 0;
    BattariesArray[currBattary].Seconds = 0;
    BattariesArray[currBattary].Milliseconds = 0;
    BattariesArray[currBattary].BattaryCurrCondition = Charge;
  }
}

void printBattariesArray(BattaryInfoType* BattariesArray)
{
  for(int currBattary = INP_0; currBattary <= BATTARY_AMOUNT - 1; currBattary++)
  {
    Serial.print("Time of discharging of battary number ");
    Serial.print(currBattary);
    Serial.print(" is ");
    Serial.print(BattariesArray[currBattary].Days);
    Serial.print(":");
    Serial.print(BattariesArray[currBattary].Hours);
    Serial.print(":");
    Serial.print(BattariesArray[currBattary].Minutes);
    Serial.print(":");
    Serial.print(BattariesArray[currBattary].Seconds);
    Serial.print(":");
    Serial.println(BattariesArray[currBattary].Milliseconds);
  }
}

avtodor
Offline
Зарегистрирован: 04.02.2019

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Не успевает. Поставьте задержку - будет печататься.

avtodor
Offline
Зарегистрирован: 04.02.2019
#define PORT_MONITOR_VELOCITY 9600
#define INP_0 0
#define BATTARY_AMOUNT 5

enum BattaryCurrConditionType{Charge, Discharge};

struct BattaryInfoType
{
  int Days;
  int Hours;
  int Minutes;
  int Seconds;
  int Milliseconds;
  BattaryCurrConditionType BattaryCurrCondition;    
};

void setup();
void initBattariesArray(BattaryInfoType*);
void printBattariesArray(BattaryInfoType*);

int main()
{
  setup();
  BattaryInfoType BattariesArray[BATTARY_AMOUNT];
  initBattariesArray(BattariesArray);
  printBattariesArray(BattariesArray);
}

void setup() {
  // put your setup code here, to run once:
  Serial.begin(PORT_MONITOR_VELOCITY);
}

void initBattariesArray(BattaryInfoType* BattariesArray)
{
  for(int currBattary = INP_0; currBattary <= BATTARY_AMOUNT - 1; currBattary++)
  {
    BattariesArray[currBattary].Days = 0;
    BattariesArray[currBattary].Hours = 0;
    BattariesArray[currBattary].Minutes = 0;
    BattariesArray[currBattary].Seconds = 0;
    BattariesArray[currBattary].Milliseconds = 0;
    BattariesArray[currBattary].BattaryCurrCondition = Charge;
  }
}

void printBattariesArray(BattaryInfoType* BattariesArray)
{
  for(int currBattary = INP_0; currBattary <= BATTARY_AMOUNT - 1; currBattary++)
  {
    Serial.print("Time of discharging of battary number ");
    Serial.print(currBattary);
    Serial.print(" is ");
    Serial.print(BattariesArray[currBattary].Days);
    Serial.print(":");
    Serial.print(BattariesArray[currBattary].Hours);
    Serial.print(":");
    Serial.print(BattariesArray[currBattary].Minutes);
    Serial.print(":");
    Serial.print(BattariesArray[currBattary].Seconds);
    Serial.print(":");
    Serial.println(BattariesArray[currBattary].Milliseconds);
    delay(1000);
  }
}

Поставил delay, все равно не печатает. Это может быть из-за того что arduino китайский?

sadman41
Offline
Зарегистрирован: 19.10.2016

В китайских ардуинах лимит на печать - 3,8 строки?

avtodor
Offline
Зарегистрирован: 04.02.2019

по-делу ответ кто-нибудь может дать?

sadman41
Offline
Зарегистрирован: 19.10.2016

Сразу после того, как голову включать кто-нибудь станет перед тем, как ляпать чушь про китайские ардуины.

avtodor
Offline
Зарегистрирован: 04.02.2019

Я смотрю ваша так на износ работает, что кроме флуда в защиту китайской электроники ничем не увлечена

sadman41
Offline
Зарегистрирован: 19.10.2016

Каэш. Я же на зарплате у Си Цзиньпина сижу.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

нинаю, почему не печатает, но вот так в 2019м уже не пишуть

for(int currBattary = INP_0; currBattary <= BATTARY_AMOUNT - 1; currBattary++)

пишуть так

for(int currBattary = INP_0; currBattary < BATTARY_AMOUNT; currBattary++)

b707
Онлайн
Зарегистрирован: 26.05.2017

avtodor пишет:

по-делу ответ кто-нибудь может дать?

а вы не отпускайте идиотских замечаний - и тогда над Вами не станут глумится

avtodor пишет:

почему не печатает?

не надо смешивать в одном скетче традиционный подход с main() и подход ардуино с ее setup() и lopp()

Вот так все отлично печатает:

#define PORT_MONITOR_VELOCITY 9600
#define INP_0 0
#define BATTARY_AMOUNT 5

enum BattaryCurrConditionType{Charge, Discharge};

struct BattaryInfoType
{
  int Days;
  int Hours;
  int Minutes;
  int Seconds;
  int Milliseconds;
  BattaryCurrConditionType BattaryCurrCondition;    
};

void setup();
void initBattariesArray(BattaryInfoType*);
void printBattariesArray(BattaryInfoType*);

void setup() {
  // put your setup code here, to run once:
  Serial.begin(PORT_MONITOR_VELOCITY);
  BattaryInfoType BattariesArray[BATTARY_AMOUNT];
  initBattariesArray(BattariesArray);
  printBattariesArray(BattariesArray);

}
void loop() {}

void initBattariesArray(BattaryInfoType* BattariesArray)
{
  for(int currBattary = 0; currBattary < BATTARY_AMOUNT; currBattary++)
  {
    BattariesArray[currBattary].Days = 0;
    BattariesArray[currBattary].Hours = 0;
    BattariesArray[currBattary].Minutes = 0;
    BattariesArray[currBattary].Seconds = 0;
    BattariesArray[currBattary].Milliseconds = 0;
    BattariesArray[currBattary].BattaryCurrCondition = Charge;
  }
}

void printBattariesArray(BattaryInfoType* BattariesArray)
{
  for(int currBattary = 0; currBattary < BATTARY_AMOUNT; currBattary++)
  {
    Serial.print("Time of discharging of battary number ");
    Serial.print(currBattary);
    Serial.print(" is ");
    Serial.print(BattariesArray[currBattary].Days);
    Serial.print(":");
    Serial.print(BattariesArray[currBattary].Hours);
    Serial.print(":");
    Serial.print(BattariesArray[currBattary].Minutes);
    Serial.print(":");
    Serial.print(BattariesArray[currBattary].Seconds);
    Serial.print(":");
    Serial.println(BattariesArray[currBattary].Milliseconds);
    delay(100);
  }
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Перед задержкой flush поставьте.

И прекратите нести бред про китайскость.

b707
Онлайн
Зарегистрирован: 26.05.2017

ЕвгенийП пишет:

Перед задержкой flush поставьте.

нет Евгений, это тут не при чем, я попробовал

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, я сейчас пробовать не могу, к сожалению.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

ЕвгенийП пишет:

И прекратите нести бред про китайскость.

Ты не прав! Некитайские - они без ГМО и халистирина, во!