Проблема с кодировкой
- Войдите на сайт для отправки комментариев
Вс, 27/05/2018 - 12:30
Добрый день!
проблема следующая.
есть код
#include <SoftwareSerial.h>
SoftwareSerial mySerial(4, 5);
SoftwareSerial BTSerial(10, 11);
char s;
#define GPS_SERIAL mySerial
void setup()
{
Serial.begin(9600);
BTSerial.begin(38400);
delay(500);
Serial.print("Serial init OK\r\n");
// открываем Serial-соединение с GPS-модулем на скорости 115200 бод
GPS_SERIAL.begin(115200);
// изменяем скорость обещение GPS-модуля с управляющей платой на 9600 бод
// используем NMEA-команду «$PMTK251,9600*17\r\n»
GPS_SERIAL.write("$PMTK251,9600*17\r\n");
// закрываем Serial-соединение с GPS-модулем
GPS_SERIAL.end();
// открываем Serial-соединение с GPS-модулем на скорости 9600 бод
GPS_SERIAL.begin(9600);
}
void loop()
{
// если приходят данные из GPS-модуля - отправим их в порт BT
if (GPS_SERIAL.available()) {
s=GPS_SERIAL.read();
//BTSerial.write(s);
Serial.write(s);
}
}
На мониторе результат

если урать коментарии в предпосленей строке (BTSerial.write(s);) то уже так
Так же на BT такие данные отправляеться. В чем ошибка?
Я думаю у Вас со скоростями непорядок. мне кажется , что что Ваш
Serial.write(s);еле успевает печатать данные, и как только вы подключаете еще и BTSerial.write(s);, то получаете overflow BTSerial. Попробуйте для начала установить скорость хардверного сериала 115200.И лучше сигнал от ЖПС заводить на хардовый RX, и не надо будет скорость на меньшую менять.
Перед строчкой 19 вставьте GPS_SERIAL.flush(); - чтобы до вызова end() данные отослались. Вы не забыли, что UART по прерываниям работает, и на момент, когда вы вызываете end (строка 19) - данные ещё не ушли, собственно?