Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
седьмой
35 / 34 / 1
Регистрация: 11.07.2012
Сообщений: 870
1

Как на с++ под досом сделать задержку в 10мс?

08.06.2017, 07:48. Просмотров 314. Ответов 12
Метки нет (Все метки)

Здравствуйте, можно ли как то настроить такую задержку, почему то пока меньше 1й секунды не получается через стандартную функцию sleep()
C++
1
2
3
4
5
6
7
8
9
10
Следующая программа ждет 1 секунду между сообщениями:
#include <stdio.h>
#include <dos.h>
int main(void)
{
printf("hello");
sleep (1);
printf (" there");
return 0;
}
Я через сом порт отравляю данные пачками по протоколу MIL-STD-1553B на внешнее устройство и мне нужна задержка в 10-15 мс между пачками данных, как это можно реализовать, не подскажете?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2017, 07:48
Ответы с готовыми решениями:

Как сделать задержку ?
к примеру вот программа. Что надо дописать и куда для задержки изображения ? ...

Как сделать задержку?
Почему после запуска программа сразу же закрывается? #include &lt;iostream&gt;...

Как сделать задержку C++
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; using namespace...

Как сделать задержку между командами
У меня есть код в котором три надписи подряд. Но я хочу добавить задержку между...

Как сделать задержку вывода результата?
Добрый день, я новичок в програмировании на СИ, и хотел бы узнать как сделать...

12
marat_miaki
149 / 138 / 86
Регистрация: 08.04.2013
Сообщений: 557
08.06.2017, 09:22 2
C++
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
//для sleep
#include <unistd.h> 
#include <dos.h>
int main(void)
{
printf("hello");
sleep (0.01);
printf (" there");
return 0;
}
1
седьмой
35 / 34 / 1
Регистрация: 11.07.2012
Сообщений: 870
08.06.2017, 09:32  [ТС] 3
Вот нашел функцию delay() вместо sleep()
получился вот такой код
C++
1
2
3
4
5
6
7
8
9
10
...
int port=0x378
while(1)
{
delay(100);
outportb(port+2,0xF8)
delay(100)
uotportb(port+2,0xF0)
}
...
считываю на осциллограф сигнал с 17й ноги lpt порта выбор принтера. так и получилось 100 мс, попробую уменьшить до 10.

Добавлено через 6 минут
Цитата Сообщение от marat_miaki Посмотреть сообщение
#include <unistd.h>
в стандартном наборе не нашел борлад с3.0 такой заголовочный файл, его надо скачать наверно откуда-то?
0
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
08.06.2017, 09:38 4
Цитата Сообщение от седьмой Посмотреть сообщение
в стандартном наборе не нашел борлад с3.0 такой заголовочный файл
Для чего он тебе?
0
седьмой
35 / 34 / 1
Регистрация: 11.07.2012
Сообщений: 870
08.06.2017, 09:46  [ТС] 5
Цитата Сообщение от marat_miaki Посмотреть сообщение
#include <unistd.h>
вместо этого файла поставил io.h заработало и период получился не 10 мс, а 10 мкс. Это как понимать?

Добавлено через 1 минуту
Цитата Сообщение от nmcf Посмотреть сообщение
Для чего он тебе?
в каком смысле для чего? Я же написал в теме что нужна задержка между пачками данных отправляемых в сом порт в 10 мс, вот для этого. Или вы про что то другое спросили, я не понял.
Или вы спрашиваете зачем мне борланд 3.0 - у меня драйвер интерфейсной платы под досом, а в борланде я этот файл компилирую, а что то не так?
0
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
08.06.2017, 09:59 6
delay() же в dos.h.

Добавлено через 1 минуту
Цитата Сообщение от седьмой Посмотреть сообщение
у меня драйвер интерфейсной платы под досом
Ты же про LPT-порт говорил.
0
седьмой
35 / 34 / 1
Регистрация: 11.07.2012
Сообщений: 870
08.06.2017, 10:13  [ТС] 7
Цитата Сообщение от nmcf Посмотреть сообщение
Ты же про LPT-порт говорил.
lpt я тупо использую для проверки задержки на осциллографе, вряд ли я бы визуально заметил через какое время после hello вышло сообщение there
delay() же в dos.h. так у меня дос и есть...
0
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
08.06.2017, 10:17 8
Цитата Сообщение от седьмой Посмотреть сообщение
так у меня дос и есть
Я понял. А unistd зачем? Что ты оттуда используешь?

Драйвер Windows снова не завезли?
0
седьмой
35 / 34 / 1
Регистрация: 11.07.2012
Сообщений: 870
08.06.2017, 10:31  [ТС] 9
Цитата Сообщение от nmcf Посмотреть сообщение
Я понял. А unistd зачем? Что ты оттуда используешь?
мне marat_miaki посоветовал использовать unistd.h я думаю или что бы меня запутать или намек на какой то код, сам вот сейчас разбираюсь, тут же негласное правило на форуме, полный код никогда не давать, что бы человек сам разобрался что к чему, вот сижу разбираюсь и такое ощущение что это заголовочный файл из линукса а не из доса. Пока итог получился такой, при использовании разного кода
C++
1
2
3
sleep(1) - задержка 1 сек
sleep(0.1), sleep(0.01) - задержка 14 мкс
delay(100) - 100 мс
Добавлено через 2 минуты
Цитата Сообщение от nmcf Посмотреть сообщение
Драйвер Windows снова не завезли?
нет почему то решили делать под досом, ностальгия наверно... это не ко мне , это без меня решили...
0
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
08.06.2017, 10:34 10
Впервые вижу, что в sleep() дробные числа ставят. delay(10) должно быть.
1
седьмой
35 / 34 / 1
Регистрация: 11.07.2012
Сообщений: 870
08.06.2017, 14:43  [ТС] 11
Цитата Сообщение от nmcf Посмотреть сообщение
Впервые вижу, что в sleep() дробные числа ставят
это
marat_miaki предложил, думаю он для линукса предложил, ну да не суть...
Цитата Сообщение от nmcf Посмотреть сообщение
delay(10) должно быть.
да вот с таким значением задержка получилась в 10мс, пока так оставлю, спасибо.

Добавлено через 3 часа 41 минуту
Странно если в простом цикле эта функция delay(10) отработала как надо, то в полной рабочей программе компилятор БорландС3.0 почему то перестал ее находить, как это так может быть??????? пишет
C++
1
Call of nonfunction
в полной программе больше заголовочных файлов, ну и сама программа побольше, как это может влиять на работу функции delay()?
0
gray_fox
What a waste!
1553 / 1258 / 166
Регистрация: 21.04.2012
Сообщений: 2,636
Завершенные тесты: 3
08.06.2017, 15:30 12
Цитата Сообщение от седьмой Посмотреть сообщение
Call of nonfunction
Вам говорят, что delay - это не функция. Видимо где-то есть объявление/определение delay (не как фукции).
1
седьмой
35 / 34 / 1
Регистрация: 11.07.2012
Сообщений: 870
09.06.2017, 07:07  [ТС] 13
Цитата Сообщение от gray_fox Посмотреть сообщение
Вам говорят, что delay - это не функция. Видимо где-то есть объявление/определение delay (не как фукции).
Вы оказались правы, оказалось она была объявлена как переменная, спасибо вам большое!
0
09.06.2017, 07:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2017, 07:07

Как сделать задержку в самом конце программы?
Народ, подскажите, как произвести задержку в самом конце программы, чтобы после...

Добрый вечер, как сделать задержку экрана, после введенных цифр?
#include &quot;StdAfx.h&quot; #include &lt;stdio.h&gt; void pr1() { int a,b,c,d; ...

Как сделать задержку "sleep"
Как можно сделать задержку в C++ ,например как в Arduino delay();


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru