Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Условие по времени От и До

Страниц (1): [1]
 

1. Dantes3000 - 20 Сентября, 2018 - 14:23:41 - перейти к сообщению
нужно сделать чтобы бип не происходил в период, который укажет пользователь. Будь то с 1 ночи по 6 утра, или с 18 вечера по 0 ночи

CODE:
int h1=22, h2=5; //с 22 ночи по 5 утра

alarm();

function alarm()
{
if(с 22 ночи по 5 утра) return;

beep(500, 500); //иначе бип
}
2. Kibor - 20 Сентября, 2018 - 14:31:44 - перейти к сообщению
?
getlocaltime

CODE:
int Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds;





int h1=22, h2=5; //с 22 ночи по 5 утра

loop() alarm();

function alarm()
{
getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);
if(Hour>=h2 && Hour<h1) return;

beep(1500, 200); //иначе бип
}
3. Dantes3000 - 20 Сентября, 2018 - 14:35:30 - перейти к сообщению
 Kibor пишет:
?
getlocaltime

это безусловно понятно, я упрощенно просто написал.

Сейчас 22часа. Пикает, а не должно. Ведь 20 не больше 22...Hour<h1

CODE:
int Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds;
int h1=20, h2=5; //с 22 ночи по 5 утра

alarm();

function alarm()
{
getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);
if(Hour>=h2 && Hour<h1) return;

beep(1500, 200); //иначе бип
}
4. Dantes3000 - 20 Сентября, 2018 - 18:20:03 - перейти к сообщению
В общем...было трудно, но я справился.
CODE:
int startHour = 23, endHour = 8;
int currentHour = 9;
alarm();

function alarm();
{
if (startHour < endHour)
{
if (startHour <= currentHour && currentHour <= endHour ) return;
}
else
{
if ((startHour <= currentHour && currentHour <= 24) || currentHour == 0 || (0 <= currentHour && currentHour <= endHour )) return;
}
beep(500,500);

}
5. Kibor - 21 Сентября, 2018 - 04:32:03 - перейти к сообщению
 Dantes3000 пишет:
Сейчас 22часа. Пикает, а не должно. Ведь 20 не больше 22...Hour<h1


Ну так исправить
 Цитата:
if(Hour>=h1 || Hour<h2) return;


CODE:
int Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds;





int h1=22, h2=5; //с 22 ночи по 5 утра

loop() alarm();

function alarm()
{
getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);
if(Hour>=h1 || Hour<h2) return;

beep(1500, 200); //иначе бип
}
6. Dantes3000 - 21 Сентября, 2018 - 04:40:01 - перейти к сообщению
Kibor ,
 Dantes3000 пишет:
Будь то с 1 ночи по 6 утра, или с 18 вечера по 0 ночи


Условием в одну строчку эту задачу не решить.
7. Kibor - 21 Сентября, 2018 - 04:54:43 - перейти к сообщению
 Dantes3000 пишет:
Условием в одну строчку эту задачу не решить.


да ну?

CODE:
int Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds;

int h1=22, h2=5; //с 22 ночи по 5 утра
int a1=18, a2=24; //с 18 ночи по 0 ночи

loop() alarm();

function alarm()
{
getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);
if((Hour>=h1 || Hour<h2) || (Hour>=a1 && Hour<a2)) return;

beep(1500, 200); //иначе бип
}
8. Zireael - 21 Сентября, 2018 - 05:08:31 - перейти к сообщению
 Цитата:
int h1=22, h2=5; //с 22 ночи по 5 утра

С 1 до 6 не прокатит.
 Цитата:
Hour<a2

Час всегда меньше 24, условие не имеет смысла.
9. Kibor - 21 Сентября, 2018 - 05:22:53 - перейти к сообщению
 Zireael пишет:
С 1 до 6 не прокатит.
Цитата:
Hour
Час всегда меньше 24, условие не имеет смысла.


Я показал пример проверки в одну строку двух выражений (или сколько надо). Саму логику. Время оставил с первого примера. Это вообще не принципиально.

От того что будет меняться время ничего не изменится. Думаю идея понятна как надо делать.
CODE:
int Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds;

int h1=1, h2=6; //с 1 ночи по 6 утра
int a1=18, a2=24; //с 18 ночи по 0 ночи

loop() alarm();

function alarm()
{
getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);
if((Hour>=h1 && Hour<h2) || (Hour>=a1 && Hour<a2)) return;

beep(1500, 200); //иначе бип
}
10. Zireael - 21 Сентября, 2018 - 05:33:23 - перейти к сообщению
CODE:
int Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds;
alarm(1, 6); //с 1 до 6
alarm(18, 2); //с 18 до 2

function alarm(int h1, int h2)
{
getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);
// Hour = 20;
if((h1>h2 && Hour<h1 && Hour+24>=h2+24) || (h1<h2 && (Hour<h1 || Hour>=h2)))messagebox("Beep");
}

Powered by ExBB FM 1.0 Final