Заранее извините за то, что я чувствую, что это будет действительно простая проблема, но я застрял на ней в течение нескольких часов, и я не смог придумать, как это исправить, основываясь на материалах, которые я нашел здесь или в гугле
У меня есть arduino, подключенный к GPS и радио, и я пытаюсь передать сигнал GPS на свое радио. Сейчас я пытаюсь получить предложение NMEA из GPS в переменную ‘text’, но меня смущает эта ошибка, которая, я думаю, связана с массивами.
Моя ошибка происходит в этой строке:
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);
}
}
Вы можете прочитать ссылку на sprintf
. Тогда вы увидите, что второй аргумент строка.
Так что следующее будет хорошо:
sprintf(text, "%c", c);
Чтобы быть на безопасной стороне, вы можете использовать snprintf
вместо этого, чтобы уменьшить риск переполнения буфера.
Конечно, для одного персонажа вы могли бы сделать, например,
text[0] = c;
text[1] = '\0'; /* Terminate string */
sprintf(text, char*(c));
Если вы хотите напечатать символ
simply use printf("%c",c);
если вы хотите скопировать это в текст
sprintf(text,"%c", c);