| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > рассчёт временных задержек |
| Автор: Duron 24.2.2006, 12:05 |
| Добрый день,уважаемые господа! Всех с праздником! У меня вопрос. Если можете, помогите. Устройство на СОМ-порту выдаёт сигналы с миллисекундными задержками.Я их вынимаю РидФайлом по одному. Нужно точно рассчитать время между приходами этих сигналов. Заранее спасибо. С уважением Александр. magdu@yandex.ru sasha008@rambler.ru |
| Автор: Partizan 24.2.2006, 13:52 |
| возможно завести статическую переменню и считать разницу между двумя приёмами сигналов... |
| Автор: Lotrex 27.2.2006, 10:59 |
| Такие штучки ИМХО, в dos-e лучше делать, если хочешь поточней посчитать время между приходом сигналов. |
| Автор: Nuzur 27.2.2006, 12:58 |
| Или делать GetTickCount(). Должно точно получться. |
| Автор: Lotrex 27.2.2006, 22:36 |
| Скорей всего, в винде вообче ничего не выйдет... Вот такую картиночку видели(это win98)? ![]() ИМХО, тут надо для начала размер входного буфера поставить 1 байт (но и то не факт, что сразу по приходу байта в буфер приложение будет оповещено). Другое дело в DOS-е - написал программу обработки прерывания - и пжалста, как она вызвалась - значить, байт пришел |
| Автор: Lotrex 5.3.2006, 21:31 |
| Вот, Duron, special for you Старенькая DOS - программа (исходник): http://jamwarrior.narod.ru/sources/com_inp.tar.gz Там есть файлик readme.txt, он на русском, но в dos-кодировке - надеюсь, расшифруете. Пока понятия не имею, как Вашу задачу под Win решить... |
| Автор: Partizan 5.3.2006, 21:52 |
| он же говорит, что вынимает их ридфайлом.... можно использовать ф-ю timeGetTime() из mmtime.lib |
| Автор: sdeniss 5.3.2006, 21:54 |
| Устройство сигналы RTS выставляет? |
| Автор: Lotrex 5.3.2006, 22:14 | ||
| Ридфайлом вряд ли в принципе можно эту проблему решить. По той причине, что не известен момент прихода байта в буфер (это во первых). Где гарантия, что тот байт (если даже он один) был помещен в буфер в тот момент, когда функция нам вернула его значение? Windows - система многозадачная Что дает timeGetTime?
Она возвращает время в миллисекундах с момента старта Windows. И ничего более. Она не сообщает времени с момента прихода байта в буфер com-порта. Если есть такая ф-ция в WinAPI - плз, в студию! Во-вторых, предложенная прога анализирует состояние линий (счас уж не помню, каких Я думаю, в DOS-е точнее получится измерение задержек. Если еще переопределить процедуру обработки прерывания таймера и увеличить его частоту - можно повысить точность до десятых долей миллисекунд (а может, и еще точнее). Правда, под виндами такая прога точно не заработает, а часы вообще встанут (ну, если их в своей процедуре не переставлять |