On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение



ссылка на сообщение  Отправлено: 12.09.16 15:28. Заголовок: Соединить строку без Gather


Здравствуйте!
Получаем строку от Кулмастера примерно такого вида:
Stat3\x0D\x0A100 OFF 32C 30C Med Fan OK 0\x0D\x0A101 OFF 16C 26C Med Fan OK 0\x0D\x0A102 OFF 24C 25C Low Fan OK 0\x0D\x0A103 OFF 32C 29C Low Fan OK 0\x0D\x0A104 OFF 32C 28C Low Fan OK 1\x0D\x0A105 OFF 32C 29C Low Fan OK 0\x0D\x0A106 ON 32C 28C Low Fan OK 1\x0D\x0AOK\x0D\x0A>\x0D\x0A>
Но по Comу он приходит поделенным на 3 куска зачастую. А задача стоит для всех шести кондиционеров снять значения температуры и вкл/выкл
Можно это как-то соединить в одну строку?? Судя по всему gather здесь не поможет, потому что из-за возможности быть значению ON или OFF длина строки может измениться 6 символов. И очень вряд ли, но все же - когда температура станет меньше 10 градусов - тоже самое.
Как можно поступить?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 26 , стр: 1 2 All [только новые]





ссылка на сообщение  Отправлено: 13.09.16 20:45. Заголовок: Igor пишет: выложит..


Igor пишет:

 цитата:
выложите код на обозрение соучастников.


я сделал проще
CHANGE from_coolmaster
{

if (find("\x0D\x0A>\x0D\x0A>",from_coolmaster)>0)
{
coolmaster_stroka=from_coolmaster;

if (formir_sms=0)
{
coolmaster_for_sms=from_coolmaster;
}
clearbuffer(from_coolmaster);
}
}

и вот по тулбоксу вижу что у меня в строке кусок, что должен быть 28C Low Fan OK 1\x0D\x0AOK\x0D\x0A>\x0D\x0A> отображается вот так (...)

а температуру и статус я вычленяю по вашему способу:
PUSH send_sms
{
integer num;
string status100[10], temperature100[10];
formir_sms=1;

pos1=find("100",coolmaster_for_sms);
print("pos1 %d", pos1);
pos2=find(" ",coolmaster_for_sms,pos1+4);
print("pos2 %d", pos2);
pos3=find(" ",coolmaster_for_sms,pos2+1);
num=pos3-pos2-2;
temperature100=mid(coolmaster_for_sms,pos2+1,num);
if (pos2-pos1=6)
{
status100=mid(coolmaster_for_sms,pos1+4,2);
}
else if (pos2-pos1=7)
{
status100=mid(coolmaster_for_sms,pos1+4,3);
}

итд 6 раз
formir_sms=0;
}


Спасибо: 0 
ПрофильЦитата Ответить





ссылка на сообщение  Отправлено: 13.09.16 20:58. Заголовок: Многоточие в дебагер..


Многоточие в дебагере означает что строка не может быть полностью отображена - не помещается. Возможно в дебагере ограничение скажем в 255 символов.
Ситуация достаточно обычная.
Я в таких случаях использую функцию которая делит строки выводимые в дебагер на требуемое количество символов (чаще всего использую 50 символов - так в экран помещается). Для удобства сделал еще дополнительное условие разделения строки по делиметру. Т.е. то условие которое наступит раньше и выполняется. Если встретились символы делиметра то перенос строки после них, в противном случае после 50 символов.
И еще совет:
Не пользуйтесь Print и Trace. Это функции которые выполняют свое предназначение исключительно по собственному желанию (по крайней мере у меня так). Может печатать, а может нет и т.п.
В любой маломалький модуль s+ вставляю string_output с именем DEBUG$. Это текстовый выход по сути имеет приоритет на уровне программы и не может быть игнорирован (разве что время появления строки не всегда предсказуемо).
В DEBUG$ и выводите свои диагностические сообщения используя функцию makestring(DEBUG$,.....) При желании пропускаете её через функцию деления строки, чтоб избежать появления (...)

Спасибо: 0 
ПрофильЦитата Ответить



ссылка на сообщение  Отправлено: 13.09.16 21:11. Заголовок: Вячеслав пишет: Не ..


Вячеслав пишет:

 цитата:
Не пользуйтесь Print и Trace.


у меня трэйс не всегда работает
а в целом да, но сейчас работает вполне)) вроде все выполняется

Спасибо: 0 
ПрофильЦитата Ответить





ссылка на сообщение  Отправлено: 13.09.16 21:28. Заголовок: Что качается СМС то ..


Что качается СМС то модуль можно дополнить:
DIGITAL_INPUT Send_SMS;
STRING_OUTPUT to_SMSgate;

PUSH Send_SMS
{
integer k;
string power$[3];
for(k=min_hvac to max_hvac)
{
if(HVAC[k].POWER=1){power$="ON";}else{power$="OFF";}
makestring(to_SMSgate,"Kond%u is %s, temperature %uC",k,power$,HVAC[k].t1);
}
}
правда мне неведомо событие по которому это СМC должно отправляться, поэтому оставил на ваше усмотрение загнав в PUSH. Иначе это лавина СМС при каждом полинге шлюза


Спасибо: 0 
ПрофильЦитата Ответить





ссылка на сообщение  Отправлено: 13.09.16 21:39. Заголовок: Ну вы блин даете )) ..


Ну вы блин даете )) Тьфу на Вас. Или сам дурак. Надо склеить было просто, а я подумал разобрать.
Ну ладно, потренировали извилины.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




ссылка на сообщение  Отправлено: 14.09.16 01:03. Заголовок: Достаточно, вы далек..


Достаточно, вы далеко пойдёте, если вас вовремя не остановить.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 26 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 72
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет