Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> рассчёт временных задержек 
V
    Опции темы
Duron
Дата 24.2.2006, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 24.2.2006

Репутация: нет
Всего: нет



Добрый день,уважаемые господа! Всех с праздником!
У меня вопрос. Если можете, помогите. Устройство на СОМ-порту
выдаёт сигналы с миллисекундными задержками.Я их вынимаю РидФайлом по одному.
Нужно точно рассчитать время между приходами этих сигналов.
Заранее спасибо. С уважением Александр.
[email protected]
[email protected]
PM MAIL   Вверх
Partizan
Дата 24.2.2006, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 67



возможно завести статическую переменню и считать разницу между двумя приёмами сигналов...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Lotrex
Дата 27.2.2006, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 9.2.2006
Где: Казань

Репутация: 2
Всего: 3



Такие штучки ИМХО, в dos-e лучше делать, если хочешь поточней посчитать время между приходом сигналов.
PM MAIL ICQ   Вверх
Nuzur
Дата 27.2.2006, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 4.7.2004

Репутация: нет
Всего: 5



Или делать GetTickCount(). Должно точно получться.


--------------------
Never again...
PM MAIL   Вверх
Lotrex
Дата 27.2.2006, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 9.2.2006
Где: Казань

Репутация: 2
Всего: 3



Скорей всего, в винде вообче ничего не выйдет... smile
Вот такую картиночку видели(это win98)?

user posted image

ИМХО, тут надо для начала размер входного буфера поставить 1 байт (но и то не факт, что сразу по приходу байта в буфер приложение будет оповещено). Другое дело в DOS-е - написал программу обработки прерывания - и пжалста, как она вызвалась - значить, байт пришел smile Уверен, что будет точнее. Хотя, наверно и в винде можно посчитать точно, если сделать приложению real-time приоритет.

Это сообщение отредактировал(а) Lotrex - 27.2.2006, 22:42
PM MAIL ICQ   Вверх
Lotrex
Дата 5.3.2006, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 9.2.2006
Где: Казань

Репутация: 2
Всего: 3



Вот, Duron, special for you smile
Старенькая DOS - программа (исходник):
http://jamwarrior.narod.ru/sources/com_inp.tar.gz

Там есть файлик readme.txt, он на русском, но в dos-кодировке - надеюсь, расшифруете.

Пока понятия не имею, как Вашу задачу под Win решить... smile

Это сообщение отредактировал(а) Lotrex - 5.3.2006, 21:32
PM MAIL ICQ   Вверх
Partizan
Дата 5.3.2006, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 67



он же говорит, что вынимает их ридфайлом....

можно использовать ф-ю timeGetTime() из mmtime.lib

Это сообщение отредактировал(а) Partizan - 5.3.2006, 21:53


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
sdeniss
Дата 5.3.2006, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 3.3.2006

Репутация: нет
Всего: 1



Устройство сигналы RTS выставляет?
PM MAIL   Вверх
Lotrex
Дата 5.3.2006, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 9.2.2006
Где: Казань

Репутация: 2
Всего: 3



Ридфайлом вряд ли в принципе можно эту проблему решить. По той причине, что не известен момент прихода байта в буфер (это во первых). Где гарантия, что тот байт (если даже он один) был помещен в буфер в тот момент, когда функция нам вернула его значение? Windows - система многозадачная smile

Что дает timeGetTime?
Цитата

The timeGetTime function retrieves the system time, in milliseconds. The system time is the time elapsed since Windows was started.


Она возвращает время в миллисекундах с момента старта Windows. И ничего более. Она не сообщает времени с момента прихода байта в буфер com-порта. Если есть такая ф-ция в WinAPI - плз, в студию! smile Тогда я с покрасневшей поверхностью лица возьму свои слова обратно. smile

Во-вторых, предложенная прога анализирует состояние линий (счас уж не помню, каких smile ) и реагирует на каждое изменение их состояния, а не только после того, как привалил цельный байт. ИМХО, для данной задачи это лучше. Пусть решает автор темы, что ему больше нравится.

Я думаю, в DOS-е точнее получится измерение задержек. Если еще переопределить процедуру обработки прерывания таймера и увеличить его частоту - можно повысить точность до десятых долей миллисекунд (а может, и еще точнее). Правда, под виндами такая прога точно не заработает, а часы вообще встанут (ну, если их в своей процедуре не переставлять smile ). А если под Dos можно использовать timestamp проца, то вообще голова кругом smile
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0473 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.