Парсинг данных

Доброго времени суток!

Имеются данные, которые последовательно считываются с датчика. Данные имеют следующий вид:

‘’‘SA8I,1074,1108,1045,21450,0003456789,0000343434’‘’

Пытаюсь понять каким образом мне лучше прочитать эти данные, затем извлечь из них некоторые параметры (например 2,3 и 5), изменить их необходимым мне образом (например, умножить на некоторый коэффициент), а затем - собрать данную строку обратно и последовательно отправить такую же строку, но с изменёнными данными.

Кода не будет поскольку я в полном тупике. Буду рад если, хотя-бы, направите в нужное русло т.к. я перепробовал многое из того, что предлагают в сети, но получал, в лучшем случае, извлечение всех параметров подряд, и то, с ошибками.

Непонятно, что имеется в виду.

Ну, хотя бы пример будет?

  1. строка
  2. что из неё извлекаем?
  3. как меняем?
  4. как собираем обратно?
  5. результирующая строка

И что с этим не так? Это самый простой вариант - извлечь всё, какие надо поменять и собрать все обратно. Что-то не так?

Они в строковом формате считываются чтоли? Что за датчик?
Пример кода считывания данных есть?

Непонятно, что имеется в виду.

К примеру мне нужно изменить только 1074, 1108, и 21450.

Конкретную строку я привёл. Из неё нужно извлечь данные которые разделены запятой. Их умножаем на заданный коэффициент. Собраем обратно ТАКУЮ же строку:

SA8I,1074,1108,1045,21450,0003456789,0000343434

Жирным выделил данные которые мы изменили. Остально - не меняется.

По поводу “что не так” - я не на том уровне, чтобы с этим работать + данные методы постоянно выдают “левые” данные: находят дополнительные значения и т.д.

Вот такой формат данных я получаю от датчика нагрузки на валу. Там система вообще интересная, но на данном этапе вопрос в другом.

Так может подтянуть уровень-то?

Кода считывания нет. Я, по сути, хочу врезаться в шину чтобы влиять на показания датчика.

Какие именно “данные методы” и какие “левые данные” и “дополнительные значения” они выдают?

Пример(ы), пожалуйста, с кодом.

Не знаю, какие у Вас там “данные методы”, но если взять самый обыкновенный strtok, разрезать строку по запятым, отработать и склеить обратно, никаких левых и дополнительных значений никто и нигде не найдёт.

Нужно закрыть эту ветку “для новичков” и просто оставить текст “учитесь!”. Благодарю. Без вас бы не разобрался)

А вы новичок? Да нет, пока вы просто халявщик :wink:

1 лайк

Какая программа выводит эти данные?
Я просто до умопомрачения уверен, что датчик шлёт не строковые данные. Это сильно затратно и ни к чему. Он должен слать обычные байты данных…

1 лайк

Не, ну нельзя же не согласиться, что это добавляет в жизнь немного красок и приключений. Сначала данные надо преобразовать к строковому виду, затем обратно. Желательно не особо при этом наляпать – жизнь! А так … принял байт, отправил байт – тоска смертная.

1 лайк

Может у датчика на борту контроллер? ТС а чем ловите данные? Там точно протокол, или просто на аналогвом входе? С Датчиков левых данных не должно быть. Думаю, что это курсовая, а датчик просто прицепом к слову.

Это похоже на «какой-то» протокол, а результат работы выводится в монитор порта (или типа того).

UPS-ы, например, любят в ASCII-строках данные отдавать.
NMEA, опять же…

Ну не зря же я спросил:

Позвольте полюбопытствовать, какие варианты парсинга вам знакомы?

Можете показать что-то из опробованного?

Я уже просил

Но, ответа нет. Стало быть, по прежнему в силе сразу же сказанное:

Ну, а значит и серьёзного разговора – тоже :frowning:

Мужики, не получится ли так?

:smiley:

Да ладно, я же шутил. В 90% вопросов именно так оно и есть!))