вы заговариваетесь? :) Вы в своем коде сообщения #43 сами подключили пространство имен std и соответвующие инклюды - а теперь спрашиваете есть ли там std::string? :)
int _i = 0;
for (int i = _resp_Index1 + 2; i <= _resp_Index2 - 2; i++) { mydata.NumberInSMS[_i] = char(_WholeSMS[i]); _i++; };
на:
for (int i = 0; 12; i++) { mydata.NumberInSMS[i] = char(_WholeSMS[i]); };
и Ардуина виснет молча...
голова уже не варит, что ей может не нравиться?
вот весь код:
#include <Wire.h>
#include <EasyTransferI2C.h>
//create object
EasyTransferI2C ET;
struct SEND_DATA_STRUCTURE{
char NumberInSMS[13];
int16_t blinks;
};
//give a name to the group of data
SEND_DATA_STRUCTURE mydata;
//define slave i2c address
#define I2C_SLAVE_ADDRESS 9
void setup(){
Wire.begin();
Serial.begin(115200);
//start the library, pass in the data details and the name of the serial port. Can be Serial, Serial1, Serial2, etc.
ET.begin(details(mydata), &Wire);
}
void loop(){
//this is how you access the variables. [name of the group].[variable name]
String _response = "+CMGR: \"REC READ\",\"+79134444444\",\"\",\"19/09/21,23:27:00+12\"abcdefOK";
String _WholeSMS = ""; String NumberInSMS =""; String TextInSMS =""; // очистка СМС от невидимых символов
for (int i = 0; i <= _response.length() + 1; i++){ if (_response[i] > 31 && _response[i] <127) {_WholeSMS = _WholeSMS + char(_response[i]);} ;
}
Serial.print("_WholeSMS=");Serial.println(_WholeSMS);
int _resp_Index1 = _WholeSMS.indexOf(","); // ищем перую запятую - чтобы дернуть номер СМС
Serial.print("_resp_Index1=");Serial.print(_resp_Index1);
int _resp_Index2 = _WholeSMS.indexOf(",", _resp_Index1 + 1); // ищем вторую запятую
Serial.print("; _resp_Index2=");Serial.println(_resp_Index2);
for (int i = 0; i= 12; i++) { mydata.NumberInSMS[i] = char(_WholeSMS[i]); };
// int _i = 0;
// for (int i = _resp_Index1 + 2; i <= _resp_Index2 - 2; i++) { mydata.NumberInSMS[_i] = char(_WholeSMS[i]); _i++; };
Serial.print("mydata.NumberInSMS=");Serial.println(mydata.NumberInSMS);
ET.sendData(I2C_SLAVE_ADDRESS);
delay(500);
}
причем от содержания _response поведение не зависит - даже содержимое типа "123456789012" приводит к зависаниям...
а в Ардуино есть std::string?
вы заговариваетесь? :) Вы в своем коде сообщения #43 сами подключили пространство имен std и соответвующие инклюды - а теперь спрашиваете есть ли там std::string? :)
Или вы этот код скачали в инете не читая?
это код я накидал в Eclipse лень было прошивать дуину ) тут все хорошо.
а когда перенес без std::string, а c ардуиновским String такое уже не прокатывает :(
а когда перенес без std::string, а c ардуиновским String такое уже не прокатывает :(
то есть вы нас тролите - выкладываете в форум один код, а обсуждаете другой? Берегитесь, за такое тут новичков канделябром по роже сразу :)
в соседней ветке уже было канделябром )))
не подумал просто что std::string и ардуино две разных вещи ))
коллеги, спасибо большое всем откликнувшимся!
сделал в итоге так:
коллеги, спасибо большое всем откликнувшимся!
сделал в итоге так:
Алекс, почему индексы в строке не с нуля. а от 31 до 127?
это я так убираю не-латинские символы, включая сразу и переводы строк.
это я так убираю не-латинские символы, включая сразу и переводы строк.
коллеги, опять ахтунг (
фактически меняю строку:
на:
и Ардуина виснет молча...
голова уже не варит, что ей может не нравиться?
вот весь код:
причем от содержания _response поведение не зависит - даже содержимое типа "123456789012" приводит к зависаниям...
на:
и Ардуина виснет молча...
А чего Вы ожидали? Это цикл работает до тех пор, пока 12 не равно нулю. Когда станет равно, тогда цикл и остановится. Ждите.
да, туплю )
благодарю! )