10.02.2016, 17:03
|
|
Гуру портала
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,697
Сказал спасибо: 189
Сказали Спасибо 3,191 раз(а) в 2,068 сообщении(ях)
|
Как распарсить строку - помогите
пишу, вернее осваиваю qt5
два раза в секунду с ком порта приходит строка "t01=+025,t02=+020,t03=-10,t04+-2" и так 16 датчиков температуры.
помогите как мне в кути разложить ее обратно на составляющие чтоб у меня было 16 переменных с температурами с каждого датчика?
как это грамотно написать?
строку которую присылает проц можно как угодно переписать
я попробовал строку на лету разбирать - ужасно плохо работает даже не буду код выкладывать ибо заплюете
__________________
кагмаподэ магмаподэ
|
|
|
|
10.02.2016, 17:12
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: как распарсить строку - помогите
Запятыми разбить на строки. Строки разбить на столбцы через "=". Дальше все просто - первый символ либо +, либо -. А дальше строку в число.
|
|
|
|
10.02.2016, 17:15
|
|
Гуру портала
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,697
Сказал спасибо: 189
Сказали Спасибо 3,191 раз(а) в 2,068 сообщении(ях)
|
Re: как распарсить строку - помогите
Easyrider83, да я не знаю как там со строками работать. подскажи какими методами это делается то?
__________________
кагмаподэ магмаподэ
|
|
|
|
10.02.2016, 17:19
|
|
Гражданин KAZUS.RU
Регистрация: 16.02.2012
Сообщений: 441
Сказал спасибо: 89
Сказали Спасибо 735 раз(а) в 149 сообщении(ях)
|
Re: как распарсить строку - помогите
|
|
|
|
10.02.2016, 23:11
|
|
Прописка
Регистрация: 21.04.2009
Адрес: Королёв
Сообщений: 89
Сказал спасибо: 1,054
Сказали Спасибо 34 раз(а) в 27 сообщении(ях)
|
Re: как распарсить строку - помогите
По приходу символа "t", пропускаете цифры до символа"=", далее пишите последующие символы в новую текстовую переменную.
Это в простейшем случае, без учёта "номера t"
|
|
|
|
13.02.2016, 15:38
|
|
Гражданин KAZUS.RU
Регистрация: 26.09.2005
Сообщений: 569
Сказал спасибо: 58
Сказали Спасибо 509 раз(а) в 135 сообщении(ях)
|
Re: Как распарсить строку - помогите
Если
Сообщение от индюк
|
строку которую присылает проц можно как угодно переписать
|
то перепишите ее так, что бы писалась просто температура, а разделитель ";"
Ни каких манипуляций со строкой - сохраняйте все в файл с расширением "csv"
Далее в Exsel делаете что угодно (графики, таблицы, стат обработки и т.д.)
__________________
Будь проще, дойдет и до синтеза.
|
|
|
|
13.02.2016, 18:13
|
|
Гражданин KAZUS.RU
Регистрация: 16.02.2012
Сообщений: 441
Сказал спасибо: 89
Сказали Спасибо 735 раз(а) в 149 сообщении(ях)
|
Re: Как распарсить строку - помогите
|
|
|
Эти 2 пользователя(ей) сказали Спасибо zöner за это сообщение:
|
|
|
19.02.2016, 01:23
|
|
Гуру портала
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,697
Сказал спасибо: 189
Сказали Спасибо 3,191 раз(а) в 2,068 сообщении(ях)
|
Re: Как распарсить строку - помогите
Сообщение от marera
|
Далее в Exsel делаете что угодно
|
хороший совет, только причем тут эксель? у меня это система управления а не отчетности
__________________
кагмаподэ магмаподэ
|
|
|
|
19.02.2016, 01:35
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,565
Сказал спасибо: 5,041
Сказали Спасибо 10,615 раз(а) в 3,604 сообщении(ях)
|
Re: Как распарсить строку - помогите
Сообщение от zöner
|
зачем excel?
|
zöner, спасибо за ссылки!
|
|
|
|
27.02.2016, 01:44
|
|
Гуру портала
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,697
Сказал спасибо: 189
Сказали Спасибо 3,191 раз(а) в 2,068 сообщении(ях)
|
Re: Как распарсить строку - помогите
во. освоил QString QSerialport и прочие.........
void MainWindow::data()
{
QString old;
QStringList l;
int index1;
int index2;
int len2;
static QString s;
QString s1;
while(1)
{
QString s1 = QString(serial.readLine());
if(!s1.length())break;
s.append(s1);
if (s.length()›75)
//if (s.indexOf("begin")››10) { s.clear();}
{
ui-›label-›setText(s);
index1 = s.indexOf("begin");
index2 = s.indexOf("EOF");
len2 = s.length();
//ui-›label_2-›setText(QString("%1").arg(index1, 0, 10));
if (index2!=75) { s.clear(); break;}
ui-›label_2-›setText(s.mid(index1+5,4));
ui-›label_3-›setText(s.mid(index1+9,4));
ui-›label_4-›setText(s.mid(index1+13,4));
ui-›label_5-›setText(s.mid(index1+17,4));
ui-›label_6-›setText(s.mid(index1+21,4));
ui-›label_7-›setText(s.mid(index1+25,4));
ui-›label_8-›setText(s.mid(index1+29,4));
ui-›label_9-›setText(s.mid(index1+33,4));
ui-›label_10-›setText(s.mid(index1+37,4));
ui-›label_11-›setText(s.mid(index1+41,4));
ui-›label_12-›setText(s.mid(index1+45,4));
ui-›label_13-›setText(s.mid(index1+49,4));
ui-›label_14-›setText(s.mid(index1+53,4));
ui-›label_15-›setText(s.mid(index1+57,4));
ui-›label_16-›setText(s.mid(index1+61,4));
ui-›label_17-›setText(s.mid(index1+65,4));
//ui-›label_18-›setText(QString("%1").arg(len2, 0, 10));
ui-›label_18-›setText(QString("%1").arg(index2, 0, 10));
s.clear();
}
}
}
__________________
кагмаподэ магмаподэ
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:03.
|
|