Работа с разными SerialX одной функцией
- Войдите на сайт для отправки комментариев
Втр, 28/06/2016 - 22:13
Добрый вечер.
Имею Arduino Mega 2560, как все знают на борту есть у неё несколько Serial(0,1,2,3) портов.
Был написан вполне рабочий скетч работы Arduino с GSM модулем Neoway M590 и всё работало, но не без проблем, данный модуль не без проблем.
В связи с этим возникла необходимость добавить ещё один модуль SIM800C с SIM картой другого оператора.
Основные команды для работы с GSM модулями идентичны соответственно и функции.
И вот тут я столкнулся с проблемой, не могу понять как заставить работать одну и ту же функцию с разными Serial (Serial1, Serial2)
к примеру отправка SMS
void gsmSendSMS(String smsText, String phoneNum) {
Serial1.println(atpCmd + "CMGS=\"" + phoneNum + "\"");
delay(100);
Serial1.print(smsText);
delay(100);
Serial1.print((char)26);
delay(100);
}
Подскажите как можно передать номер Serial ?
Спасибо.
Вместо Serial передавать Stream*:
void gsmSendSMS(Stream* stream, String smsText, String phoneNum) { stream->println(atpCmd + "CMGS=\"" + phoneNum + "\""); delay(100); stream->print(smsText); delay(100); stream->print((char)26); delay(100); } gsmSendSMS(&Serial,"text","123456"); gsmSendSMS(&Serial1,"text","123456"); gsmSendSMS(&Serial2,"text","123456"); gsmSendSMS(&Serial3,"text","123456");Попробовал, копилится.
Завтра залью проверю.
Большое спасибо за помощь.
Добрый день.
Всё работает.
Но возник вопрос, возможно ли и как правильно объявить в массиве Stream * stream = &Serial1;, для того чтобы потом в цикле можно было их перебирать и подставлять в функции?
Спасибо.
Stream* streams[4] = { &Serial, &Seria1, &Serial2, &Serial3 }; for(byte i=0;i<4;i++) { Stream* s = streams[i]; s->println("Hello there!"); }Большое Спасибо, сейчас попробую.