EnglishУкраїнськаmRussian
Login/New
Topic with no new replies

[BugFixed] Ошибка отображения количества записанных регистров в транспортном протоколе ModBus


Author Message
Written on: 30. 09. 2014 [10:43]
fido_max
Maxim Kochetkov
Contributor
Topic creator
registered since: 28.10.2010
Posts: 129
Некорректно формируется строка статуса. Вместо количества записынных регистров подставляется количество прочитанных регистров:


string Node::getStatus( )
{
string rez = _("Disabled. ");
if(enableStat()) {
rez = _("Enabled. ");
switch(mode())
{
case MD_DATA:
rez += TSYS::strMess(_("Spent time: %s. Requests %.4g. Read registers %.4g, coils %.4g, register inputs %.4g, coil inputs %.4g.\n"
"Writed registers %.4g, coils %.4g."),
tm2s(tmProc).c_str(), cntReq, data->rReg, data->rCoil, data->rRegI, data->rCoilI, data->rRegI, data->wReg, data->wCoil);
break;
case MD_GT_ND: case MD_GT_NET:
rez += TSYS::strMess(_("Requests %.4g."), cntReq);
break;
}
}

return rez;
}

Должно быть:

tm2s(tmProc).c_str(), cntReq, data->rReg, data->rCoil, data->rRegI, data->rCoilI, data->wReg, data->wCoil);
Written on: 30. 09. 2014 [11:01]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"fido_max" wrote:

Некорректно формируется строка статуса. Вместо количества записынных регистров подставляется количество прочитанных регистров:

Должно быть:
tm2s(tmProc).c_str(), cntReq, data->rReg, data->rCoil, data->rRegI, data->rCoilI, data->wReg, data->wCoil);

Да, лишнее, исправил.

Learn, learn and learn better than work, work and work.
Written on: 09. 11. 2014 [19:22]
tka4ev_s
Сергей Ткачев
registered since: 19.10.2014
Posts: 30
if(SYS.time() > tm_to)
{
tm_to = SYS.time()+10; //Установка порога ожидания на 10 секунд более
текущего времени
//Выполнение других действий с периодичностью 10 секунд
}
использую данный код для задержки но он не работает
попробовал вывести на экран значение tm_to поспоянно бежит секундомер
как я понимаю такого быть не должно tm_to должно обновляться одн раз в 10 секунд
а так получается что условие if(SYS.time() > tm_to) не выполняется
Written on: 09. 11. 2014 [20:23]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"tka4ev_s" wrote:

а так получается что условие if(SYS.time() > tm_to) не выполняется

Какое отношение этот вопрос имеет к теме форума?
И потом, у меня всё выполняется.

Learn, learn and learn better than work, work and work.
Written on: 09. 11. 2014 [20:48]
tka4ev_s
Сергей Ткачев
registered since: 19.10.2014
Posts: 30
"roman" wrote:

"tka4ev_s" wrote:

а так получается что условие if(SYS.time() > tm_to) не выполняется

Какое отношение этот вопрос имеет к теме форума?
И потом, у меня всё выполняется.

извиняюсь буду создовать следующий раз новую тему
но всеже может подскажете где копать
вот код программы
var tm1_to;
Text1_text=SYS.time();
if(SYS.time() > tm1_to)
{
tm1_to = SYS.time()+10;
}
Text2_text=tm1_to;
почему в двух text секунды бегут одинаково с разницой в 10
Attachment

Снимок экрана от 2014-11-09 21:35:08.jpg (File type: image/jpeg, Size: 22.18 kilobytes) — 1663 downloads
Written on: 09. 11. 2014 [21:06]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"tka4ev_s" wrote:

но всеже может подскажете где копать
вот код программы
var tm1_to;
Text1_text=SYS.time();
if(SYS.time() > tm1_to)
{
tm1_to = SYS.time()+10;
}
Text2_text=tm1_to;
почему в двух text секунды бегут одинаково с разницой в 10

tm1_to нужно инициировать нормально иначе там не понятно что, как минимум.
Хотя скорее всего период выполнения скрипта страницы 10 секунд.
Разбирайтесь, там нет ошибок!

Learn, learn and learn better than work, work and work.
Written on: 09. 11. 2014 [21:17]
tka4ev_s
Сергей Ткачев
registered since: 19.10.2014
Posts: 30
tm1_to нужно инициировать нормально иначе там не понятно что, как минимум.
Хотя скорее всего период выполнения скрипта страницы 10 секунд.
Разбирайтесь, там нет ошибок!

Огромное спасибо!!!
объявил переменную через "добавить атрибут" все заработало
а можно ли здесь обявлять переменную через var если можно то как?
Written on: 09. 11. 2014 [21:24]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"tka4ev_s" wrote:

а можно ли здесь обявлять переменную через var если можно то как?

if(f_start) tm1_to = 0;

Learn, learn and learn better than work, work and work.
Written on: 09. 11. 2014 [21:42]
tka4ev_s
Сергей Ткачев
registered since: 19.10.2014
Posts: 30
if(f_start) tm1_to = 0;
Text1_text=SYS.time();
if(SYS.time() > tm1_to)
{
tm1_to = SYS.time()+10;
}
Text2_text=tm1_to;
работает только если добавить атрибут tm1_to
как я понял все переменные моно объявить только через "добавить атрибут"
Written on: 09. 11. 2014 [21:58]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"tka4ev_s" wrote:

работает только если добавить атрибут tm1_to

У меня всегда работает!
Хотя если речь о LTS то наверно.

Learn, learn and learn better than work, work and work.



3018