Неверное преобразование из char в const char *

0

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

У меня есть arduino, подключенный к GPS и радио, и я пытаюсь транслировать сигнал GPS на свое радио. То, что я пытаюсь сделать сейчас, - это получить предложение NMEA от GPS в переменном "текст", но я запутался в этой ошибке, что, я думаю, связано с массивами.

Моя ошибка возникает в этой строке: sprintf(text, char(c));

Я пробовал несколько разных вещей, но сейчас я застрял. Любая помощь могла бы быть полезна.

#define RADIOPIN 13
#include <string.h>
#include <util/crc16.h>
#include <Adafruit_GPS.h>
#include <SoftwareSerial.h>

SoftwareSerial mySerial(3, 2);

#define GPSECHO  true

Adafruit_GPS GPS(&mySerial);

char datastring[80];
char text[80];

void setup() {
  Serial.begin(115200);
  GPS.begin(9600);
  GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);
  GPS.sendCommand(PMTK_SET_NMEA_UPDATE_5HZ);
  delay(3000);  
  pinMode(RADIOPIN,OUTPUT);
}

void loop(){
  gpscheck();
}

void gpscheck(){
    char c = GPS.read();
    if (c) {
//      Serial.print(c); 
    sprintf(text, char*(c));
    Serial.print(text);
    }
}
  • 0
    GPS.read() вернет только один символ или строку?
  • 1
    sprintf(text, char*(c)); неправильно! Читайте о его использовании здесь .
Теги:
arduino
arduino-ide

2 ответа

1
Лучший ответ

Вы можете прочитать ссылку sprintf. Затем вы увидите, что второй аргумент представляет собой строку.

Итак, было бы хорошо:

sprintf(text, "%c", c);

Чтобы быть в безопасности, вы можете использовать snprintf вместо этого, чтобы уменьшить риск переполнения буфера.

Конечно, для одного символа вы также можете сделать

text[0] = c;
text[1] = '\0';  /* Terminate string */
  • 0
    Спасибо! Я тоже играл с этим и пробовал: sprintf (текст, "% d", c); Что я и получил из документации по sprintf. Я знаю, понимаю, что это меняется с типом переменной.
1
sprintf(text, char*(c));

Если вы хотите напечатать символ

simply use printf("%c",c);

если вы хотите скопировать это в текст

sprintf(text,"%c", c);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню