Проблемы с выводом курсов валют через шаблоны поведения

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
strike
Сообщения: 12
Зарегистрирован: Чт сен 01, 2016 5:56 pm
Благодарил (а): 0
Поблагодарили: 0

Проблемы с выводом курсов валют через шаблоны поведения

Сообщение strike » Вс сен 04, 2016 8:09 pm

Добрый день, надеюсь написал в нужную ветку форума.
Создал курсы валют. Сценарий MoneyCBR, прописал в сценарии вот такой код:

Код: Выделить всё

$file = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".date("d/m/Y"));

// USD
$xml = $file->xpath("//Valute[@ID='R01235']");
$valute = strval($xml[0]->Value);
$USD = round(str_replace(",",".",$valute)*100)/100;
echo $USD;
sg("CBRnew.USD",$USD);

// EURO
$xml = $file->xpath("//Valute[@ID='R01239']");
$valute = strval($xml[0]->Value);
$EURO = round(str_replace(",",".",$valute)*100)/100;
echo $EURO;
sg("CBRnew.EURO",$EURO);

// Китайский юань
$xml = $file->xpath("//Valute[@ID='R01375']");
$valute = strval($xml[0]->Value);
$CNY = round(str_replace(",",".",$valute)*100)/100;
echo $CNY;
sg("CBRnew.CNY",$CNY);

$uptime = date("d m Y H:i:s",time());
echo $uptime;
sg("CBRnew.uptime",$uptime);
say("Обновлены курсы валют",0);
Далее создал новый класс MoneyCBR, в нем создал объект CBRnew, далее запустил сценарий и у объекта CBRnew прописались свойства CBRnew.USD, CBRnew.EURO, CBRnew.CNY, CBRnew.uptime, в который выводятся округленные курсы и дата последнего обновления, далее в объект onNewHour прописал чтоб мой курс обновлялся каждый час

Код: Выделить всё

 // обновим курс валюты каждый час
runScript('MoneyCBR');
в шаблонах поведения сделал 4 шаблона вывода курса валют по команде:

общий курс валют

Код: Выделить всё

$usd=gg("CBRnew.USD");
say("Курс доллара $usd",2);
$euro=gg("CBRnew.EURO");
say("Курс евро $euro",2);
$cny=gg("CBRnew.CNY");
say("Курс юаня $cny",2);
курс доллара

Код: Выделить всё

$usd=gg("CBRnew.USD");
say("Курс доллара $usd",2);
курс евро

Код: Выделить всё

$euro=gg("CBRnew.EURO");
say("Курс евро $euro",2);
курс юаня

Код: Выделить всё

$cny=gg("CBRnew.CNY");
say("Курс юаня $cny",2);
Вроде все работает, курс обновляется, округляется, выводится с сценах и в меню управления, все по примерам из ваших тем.
Далее создал сцену с онлайн радио вот по этому видео https://www.youtube.com/watch?v=jGAkwhln0mM (за что автору огромное спасибо). Вроде все хорошо, курсы обновляются, радио работает, но есть 2 непонятные ошибки

1. когда я включаю радио Европа плюс из сцены или по команде, радио включается, но перед этим проговаривается курс юаня, как будто я из шаблонов поведения вызвал команду. Причем при включении других радиостанций проблем нет, сделаны они по этому же коду.

код в сценарии радио Европа плюс

Код: Выделить всё

cm('RadioSetting.Control','stop');
say('Включаю радио Европа плюс');
cm('RadioSetting.Control','sta:Европа плюс');
cm('RadioSetting.Control','play');
setGlobal("RadioSetting.RadioLedOn",1);
2. когда проговаривает общий курс валют, то называет курс доллара, затем евро, юаня и второй раз повторяет курс юаня. В чем ошибка? Почему 2 раза повторяет последнюю команду say и как связаны радиостанция Европа плюс и курс юаня?

Заранее спасибо за ответ!
strike
Сообщения: 12
Зарегистрирован: Чт сен 01, 2016 5:56 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Проблемы с выводом курсов валют через шаблоны поведения

Сообщение strike » Вт сен 06, 2016 2:54 pm

никто помочь не может по данному вопросу? Уже и курсы валют удалил и заново пересоздал, проблема осталась. Думаю что неправильно прописал команду в шаблонах поведения, так как когда включаешь европу плюс, перед включением станции проговаривает команду say из шаблона поведения запроса курса юаня:
$cny=gg("CBRnew.CNY");
say("Курс юаня $cny",2);
и когда запрашиваю из шаблона поведения общий курс валют, проговаривает все курсы по порядку, а последний 2 раза повторяет
$usd=gg("CBRnew.USD");
say("Курс доллара $usd",2);
$euro=gg("CBRnew.EURO");
say("Курс евро $euro",2);
$cny=gg("CBRnew.CNY");
say("Курс юаня $cny",2);
iapet
Сообщения: 289
Зарегистрирован: Вт авг 18, 2015 6:23 pm
Благодарил (а): 8 раз
Поблагодарили: 36 раз

Re: Проблемы с выводом курсов валют через шаблоны поведения

Сообщение iapet » Вт сен 06, 2016 8:22 pm

Шаблон поведения для европы-то какой? Это в нем косяк.
strike
Сообщения: 12
Зарегистрирован: Чт сен 01, 2016 5:56 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Проблемы с выводом курсов валют через шаблоны поведения

Сообщение strike » Вт сен 06, 2016 9:35 pm

радио не через шаблон поведения выводится, не делал пока, только добавил сцену по видео https://www.youtube.com/watch?v=jGAkwhln0mM , и включал из сцены. Сценарий для европы

Код: Выделить всё

cm('RadioSetting.Control','stop');
say('Включаю радио Европа плюс');
cm('RadioSetting.Control','sta:Европа плюс');
cm('RadioSetting.Control','play');
setGlobal("RadioSetting.RadioLedOn",1); 
По примеру из видео
strike
Сообщения: 12
Зарегистрирован: Чт сен 01, 2016 5:56 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Проблемы с выводом курсов валют через шаблоны поведения

Сообщение strike » Вт сен 06, 2016 9:38 pm

создал шаблон по примеру из форума

Код: Выделить всё

say("включаю радио европа плюс",2);
cm('RadioSetting.Control',array('sta'=>'4','cmd'=>'play','vol'=>100)); 
тоже самое.
С другими станциями проблем нет, код такой же
strike
Сообщения: 12
Зарегистрирован: Чт сен 01, 2016 5:56 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Проблемы с выводом курсов валют через шаблоны поведения

Сообщение strike » Вт сен 06, 2016 9:40 pm

Код: Выделить всё

$usd=gg("CBRnew.USD");
say("Курс доллара $usd",2);
$euro=gg("CBRnew.EURO");
say("Курс евро $euro",2);
$cny=gg("CBRnew.CNY");
say("Курс юаня $cny",2); 
и при выводе этого шаблона курс юаня 2 раза проговаривает
а если только курс юаня выводить, то нормально, один раз
AndrewS
Сообщения: 123
Зарегистрирован: Пт апр 15, 2016 10:18 am
Откуда: 21RU
Благодарил (а): 5 раз
Поблагодарили: 20 раз
Контактная информация:

Re: Проблемы с выводом курсов валют через шаблоны поведения

Сообщение AndrewS » Вт сен 06, 2016 10:37 pm

Скорее всего используется 2 метода, родительский и классовый.
Слабость - велика, а сила - ничтожна.
ARMBIAN 5.38 stable Debian GNU/Linux 9 (stretch) 4.14.18-sunxi
System load: 2.03 1.85 1.78 Up time: 23 days
Memory usage: 65 % of 2014MB CPU temp: 37°C
Orange Pi Plus 2 H3 Quad Core 1.6GHZ 2GB
strike
Сообщения: 12
Зарегистрирован: Чт сен 01, 2016 5:56 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Проблемы с выводом курсов валют через шаблоны поведения

Сообщение strike » Ср сен 07, 2016 12:45 pm

так и не понял в чем проблема была, но удалил шаблоны поведения курсов валют и создал новый шаблон с таким кодом

Код: Выделить всё

$status="";
    $status.="Курс доллара ".gg("CBRnew.USD")."";
    say($status,2);
$status="";
    $status.="Курс евро ".gg("CBRnew.EURO")."";
    say($status,2);
$status="";
    $status.="Курс юаня ".gg("CBRnew.CNY")."";
    say($status,2); 
и проблема решилась, так и не понял почему с первым вариантом кода не прокатило, и как связано с европой ))
strike
Сообщения: 12
Зарегистрирован: Чт сен 01, 2016 5:56 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Проблемы с выводом курсов валют через шаблоны поведения

Сообщение strike » Ср сен 07, 2016 1:26 pm

создал 3 отдельный шаблона поведения, чтоб отдельно выводить каждую валюту можно было

Код: Выделить всё

$status="";
    $status.="Курс доллара ".gg("CBRnew.USD")."";
    say($status,2); 

Код: Выделить всё

$status="";
    $status.="Курс евро ".gg("CBRnew.EURO")."";
    say($status,2); 

Код: Выделить всё

$status="";
    $status.="Курс юаня ".gg("CBRnew.CNY")."";
    say($status,2);  
и проблема вернулась, теперь при вызове европы плюс из сцены, проговаривает курс доллара, а если выводишь общий курс валют, то опять проговаривает курс юаня два раза
"Курс доллара 64.83"
"Курс евро 72.36"
"Курс юаня 97.05"
"Курс юаня 97.05"

Код: Выделить всё

$status="";
    $status.="Курс доллара ".gg("CBRnew.USD")."";
    say($status,2);
$status="";
    $status.="Курс евро ".gg("CBRnew.EURO")."";
    say($status,2);
$status="";
    $status.="Курс юаня ".gg("CBRnew.CNY")."";
    say($status,2);  
а если удалить 3 шаблона где валюты отдельно вызываются, проблема исчезает
Ответить