Чтение данных из Serial
- Войдите на сайт для отправки комментариев
Ср, 18/01/2017 - 19:10
Приветствую всех.
Проблема актуальна очень многим и заключается в следующем: есть GSM модуль SIM800L, подключен к ардуинке.
if (mySerial.available()) { //если GSM модуль что-то послал нам, то while (mySerial.available()) { //сохраняем входную строку в переменную val ch = mySerial.read(); val += char(ch); delay(10); } if (val.indexOf("RING") > -1) { //если звонок обнаружен, то проверяем номер delay(300); Serial.println("--- MASTER RING DETECTED ---"); delay(300); lcd.clear(); Serial.println(val); delay(100); mySerial.println("ATH0"); //разрываем связь delay(500); val.toCharArray(number, 50); //конвентируем Строка-массив int i; char myPins[50]; //размерность массива случайна (от фонаря), имхо номер должен быть из 12 символов for (i = 1; i < 51; i = i + 1) { delay(100); Serial.println(myPins[i]); } String str(myPins); //массив-строка (не работает преобразование, точнее шляпа) Serial.println(myPins); } else Serial.println(val); //печатаем в монитор порта пришедшую строку val = ""; }
Как итог, бред из массива. А тут
String str(myPins); //массив-строка (не работает преобразование, точнее шляпа)
Serial.println(myPins);
вообще выводит только один элемент массива.
Задача получить из порта модема (переменная val вданном случае), номер звонящего в формате +79.....
Использование поиска val.indexOf не проходит, ибо не знаю как задать маску и по символьное копирование.
+CLIP: "NUMBER " пишет номер, но как выдернуть его оттуда?
Возможные варианты: искать по маске, наткнувшись на +7 копировать известное число символов.
startsWitch находит символы с +, но как их потом считать все до конца и главное скопировать???
Прошу за бред с массивами сильно не критиковать=)))
1. что выводит
дайте строку из монитора порта.
2.
не кажется странным ?
3. индексы масива в с начинаются с 0
Что с 0 индексы, в курсе.
Монитор вот что выводит
Что массив разрядностью 50 оч странно конечно, но максимум что добивался, это вывод столбцом номера. Но это не то,что нужно.Еще вот тут
val.toCharArray(number, 50);
Какую размерность указать??? Размерность массива???
как пример..
Проблема актуальна очень многим
Вы уверены, что проблема Ваших кривых рук и Вашего неумения программировать "актуальна очень многим"? :)))
Как итог, бред из массива.
А Вы чего ожидали? Вы в этот массив что-нибудь записывали?
Так ни фига ж! Вы объявили массив. Ничего туда не записали и кинулись печатать. Что было в памяти, то и напечаталось. А уж бред это или не бред... Кстати, < 51 - вот это как раз бред. У Вашего массива нет элемента с номером 50, есть только 0-49
String str(myPins); //массив-строка (не работает преобразование, точнее шляпа)
Ну, один, так один - это как повезёт. Могло быть и два, и пять и ни одного. Вы ж ничего в массив не записали, поэтому она Вам выводит ту грязь. что там есть до первого нуля. У Вас до первого нуля оказался один символ.
Вы выбирайте - или Вы хотите научиться, тогда слушайте критику. Или Вы не хотите слушать критику, тогда просто не постите сюда бред :)
Я не спорю, что в некоторых моментах именно программирования микроконтроллеров ничего не понимаю. К примеру, работа с последовательным портом для меня, честно говоря, впервые. Программирование на том же Verilog строится совсем иначе. Здесь фрагмент код был приведен для того,что бы показать, как можно решить эту проблему и не более. Структуры массивов, одно, дву- мерных я прекрасно понимаю. Но вот способа записи информации из последовательного порта именно в массивы не знаю. Тем более от конкретных значений данных. Поэтому и просил помощи. Что код выдавал откровенный бред, даже и не сомневаюсь. Но все же это лучше, чем вообще ничего. И вообще я просил конкретной помощи и получил ее, спасибо XDriver -у. А вот от вас какой-то конкретики, кроме слов, я не услышал.
Структуры массивов, одно, дву- мерных я прекрасно понимаю.
Это два взаимоисключающих утверждения.
от вас какой-то конкретики, кроме слов, я не услышал.
И это очень плохо. Значит, Вы не умеете и не хотите слушать. То, что Вы называете "конкретной помощью" - это сделать за Вас - "дать Вам рыбу". Я же попытался объяснить Вам, что у Вас не так (и это актуально не только для этой задачи, а для программирования вообще), т.е. "дать Вам удочку". Вы не захотели разбираться и ничего "кроме слов" не услышали. Значит, в следующей программе Вам снова потребуется "конкретная помощь". Дело Ваше, Вам жить.
от вас какой-то конкретики, кроме слов, я не услышал.
И это очень плохо. Значит, Вы не умеете и не хотите слушать. То, что Вы называете "конкретной помощью" - это сделать за Вас - "дать Вам рыбу". Я же попытался объяснить Вам, что у Вас не так (и это актуально не только для этой задачи, а для программирования вообще), т.е. "дать Вам удочку". Вы не захотели разбираться и ничего "кроме слов" не услышали. Значит, в следующей программе Вам снова потребуется "конкретная помощь". Дело Ваше, Вам жить.
Конкретно "Рыба" и была нужна. Конкретно помощь и нужна.
Структуры массивов, одно, дву- мерных я прекрасно понимаю.
Это два взаимоисключающих утверждения.
Да, за исключением записи данных из порта в массив.
Конкретно "Рыба" и была нужна.
Ну, тогда это не ко мне :)
Конкретно "Рыба" и была нужна.
Ну, тогда это не ко мне :)
Дак зачем было тогда разводить диспут здесь?) Спасибо еще раз xDriver, все заработало;)
Я ошибочно полагал, что Вы хотите научиться делать это самостоятельно, и хотел Вам помочь. Извините, больше не повторится.
Да, за исключением записи данных из порта в массив.
Массиву без разницы происхождение данных, которые в него пишут. Либо Вы "прекрасно понитмаете", как работать с массивом, либо - нет. Порт к этому не имеет ни малейшего отношения.
Да, за исключением записи данных из порта в массив.
Массиву без разницы происхождение данных, которые в него пишут. Либо Вы "прекрасно понитмаете", как работать с массивом, либо - нет. Порт к этому не имеет ни малейшего отношения.
Массив, сам по себе, не имеет ничего сложного. Но он постоянно ругается на тип данных, к примеру в моем случае он не дружит со строками, ему только char подавай. Видимо вы тоже не очень хорошо владеете информацией о подобных вещах.
Но он постоянно ругается на тип данных, к примеру в моем случае он не дружит со строками, ему только char подавай. Видимо вы тоже не очень хорошо владеете информацией о подобных вещах.
Это точно! Мы тут все (а andriano в особенности) никак не можем типы данных подружить. Запускаем дрожащими руками, а компилятор ругается, меняем какую-нибудь буковку наобум и снова запускаем. И так трахаемся пока вдруг не проскочит. Как проскочит без ругани - это ценный код в облако, чтобы не пропал и в следующий раз пригодился. А Вы что думали, это всё хоть кто-то понимает? Нет, все как Вы - методом тыка компилятор "удовлетворяем" :)))))
Тс. Не палите контору. Ведь почему так много программистов надо что бы написать Винду. Это надо столько обезьяно-часов стучать случайно по клавишам, что бы вышла вполне рабочая Ось.