Помогите со строковыми переменными

svdu
Offline
Зарегистрирован: 10.02.2015

Доброго времени всем!

прошу помощи...

Вот выдержки из кода:

char GPSDate[32];   //Задана переменная

void setup()
{
  Serial.begin(9600);
  ss.begin(GPSBaud);
}

void loop()
{
char GPSDate = printDate(gps.date);  //вызываем функцию 
 Serial.print ("GPSDate "); //выводим в терминал
  Serial.print (GPSDate); //выводим в терминал
}

char printDate(TinyGPSDate &d) //сама функция
{
  char GPSDate1[32];

  if (!d.isValid())
  {

    Serial.print(F("********** "));

  }
  else
  {
    sprintf(GPSDate1, "%02d/%02d/%02d ", d.month(), d.day(), d.year());
    
    Serial.print(GPSDate1);
    Serial.print("\n");
    Serial.print("\n");
    return (GPSDate1[32]);
  }
  smartDelay(0);

Из функции (строка кода 30) получаю в терминал строчку вида 02/10/2015, собственно то что нужно.

Но эта строка мне нужна для дальнейшей обработки в void loop.

По логике 33 строка возвращает значение в void loop.

Но 13 строка кода, в терминал уже ничего не шлет..

В чем проблема?

Люди добрые помогите....

Данные получаю из GPS через библиотеку... Аналогичным образом вывожу координаты, но они цифровые float типа...

Заранее благодарен...

 

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013
char GPSDate[32];   //Задана переменная

void setup()
{
  Serial.begin(9600);
  ss.begin(GPSBaud);
}

void loop()
{
 printDate(gps.date, GPSDate);  //вызываем функцию 
 Serial.print ("GPSDate "); //выводим в терминал
  Serial.print (GPSDate); //выводим в терминал
}

char printDate(TinyGPSDate &d, char* GPSDate1) //сама функция
{

  if (!d.isValid())
  {

    Serial.print(F("********** "));

  }
  else
  {
    sprintf(GPSDate1, "%02d/%02d/%02d ", d.month(), d.day(), d.year());
    
    Serial.print(GPSDate1);
    Serial.print("\n");
    Serial.print("\n");
    return (GPSDate1);
  }
  smartDelay(0);

 

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

Я извиняюсь, а у вас этот пассаж компилируется ? Как компилятор реагирует на строку 16, 20 ?

 

svdu
Offline
Зарегистрирован: 10.02.2015

NeiroN

СПАСИБО за столь оперативную помощь!!!

Код работает!!!

УРА!!!

sva1509 пишет:

Я извиняюсь, а у вас этот пассаж компилируется ? Как компилятор реагирует на строку 16, 20 ?

 

sva1509

Компилятор все пропускает...

Код грузиться...

16 и 20 строки взял из примера библиотеки...

Честно говоря, как работает 16 пока не совсем понимаю ;).

20 строка получает из библиотеки признак достоверности данных, выдаваемый gps...

И если данные достоверны, выводиться, если нет "******" печатает.....

 

Еще раз Спасибо!!!!!