Как передать в функцию объект последовательного порта?
- Войдите на сайт для отправки комментариев
Пнд, 07/03/2016 - 13:25
Добрый день!
Из разрозненных функций собираю свою библиотеку для работы с GSM, ориентируясь прежде всего на Мегу. Соответственно, в конструктор класса нужно передать порт, с которым нужно будет работать. На такую конструкцию компилятор ругается
HardwareSerial _SerialPort = Serial;
void GSM_begin(HardwareSerial SerialPort) {
_SerialPort = SerialPort;
}
error: use of deleted function 'HardwareSerial& HardwareSerial::operator=(const HardwareSerial&)
Как правильно организовать выбор объекта (Serial...Serial3) ?
Передавайте Stream*
Stream* WorkStream = NULL; void GSM_Begin(Stream* s) { WorkStream = s; } GSM_Begin(&Serial2);Ну или, если прямо вот так надо HardwareSerial, то передавайте указатель на него:
HardwareSerial* _SerialPort = &Serial; void GSM_begin(HardwareSerial* SerialPort) { _SerialPort = SerialPort; } GSM_begin(&Serial2);Потому как оператор копирования по вполне разумным причинам в классе закрыт. А вообще - удобнее работать со Stream*, от которого много чего наследуется, в том числе и HardwareSerial. Писать, читать, не задумываясь, что там на самом деле за класс - это удобно. Вместо порта нужна будет запись в файл - передали Stream* файла - и айда, без малейшей переделки кода ;)
Спасибо!
Спасибо!
Да незчт, обращайтесь.