|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.10.2014, 09:47 | #1 |
Регистрация: 28.10.2014
Сообщений: 6
|
Диагностика авто. Задержка 25 мс на TX линию COM порта.
Здравствуйте. Необходимо подать импульс длиной 25 мс на передающую линию COM порта с точностью +/- 1 мс. После этого отправить в порт данные.
Для работы с COM портом использую компонент AsyncFree: Код:
Пробую по другому: Код:
Пробовал повышать приоритет процесса. Не помогает. Запустил одну из программ диагностики, написанную на Delphi, она дает на линию импульс ~ 25 мс и укладывается в допуск. Как они это сделали?? |
28.10.2014, 10:28 | #2 |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Я написал (на основе чужих изысканий, признаюсь честно) чудесный класс - высокоточный таймер. Сам я работаю на военном заводе, тут народ тоже мучался, нужна была им задержка в несколько миллисекунд, никак они её не могли добиться, т.к. стандартные виндовые Sleep() и GetTickCount() на малых интервалах дают просто чудовищную погрешность - до 1600% (!!!). Погрешность получившегося таймера я особо не мерял, но людей устроило и устраивает до сих пор, никто не жаловался. Более того, говорят, что у них отлично получается отмерять и микросекунды.
Короче, могу подарить исходник (delphi и С++) с демо-примерами впридачу. Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
28.10.2014, 10:57 | #3 |
Регистрация: 28.10.2014
Сообщений: 6
|
С удовольствием приму в дар
|
28.10.2014, 11:04 | #4 |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Да пожалуйста.
Просьба: о результатах напиши сюда, мне интересно. И приложи характеристики процессора, на котором тестировал. Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
28.10.2014, 11:12 | #5 |
Регистрация: 28.10.2014
Сообщений: 6
|
Спасибо. Сейчас протестирую
|
28.10.2014, 11:46 | #6 |
Регистрация: 28.10.2014
Сообщений: 6
|
26 мс и 27 мс вместо 25 мс через функцию HRDelay.
Старенький ноутбук с процессором пентиум 4, 3.2 ГГц, система ХР. Смысл такой: настраиваю стандартный компонент Тimer чтобы он срабатывал с интервалом 500 мс. И в зависимости от режима в котором находимся либо дергаем линию и отправляем запрос, либо просто шлем запрос. Может такое быть из за того что я вызываю задержку в цикле обычного таймера? Или сам компонент для COM порта чудит? Код:
|
28.10.2014, 11:58 | #7 | |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Цитата:
Функции работы с СОМ-портом тоже время занимают, так что можно, в принципе, и подогнать параметр для HRDelay(). upd: а ты померяй, кстати, методами THRTimer времена исполнения функций работы с портом! З.Ы. HRDelay() - это таки функция, ты посмотри, что она в результате выдаёт, на всякий случай. Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
Последний раз редактировалось min@y™; 28.10.2014 в 12:10. |
|
28.10.2014, 12:28 | #8 |
Регистрация: 28.10.2014
Сообщений: 6
|
Сделал чередование задержек. Попробую на машине, подключится или нет. Функция THRTimer выдает дробные значения задержки.
Код:
Последний раз редактировалось poligon; 28.10.2014 в 12:32. |
28.10.2014, 12:36 | #9 | |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Цитата:
Какие значения-то? Составь небольшую таблицу эксперимента в 2 столбца: "на входе функции", "на выходе функции". Во 2-й столбец пиши значения с точностью до 3-4 знаков после точки. Попробуем выявить математический закон изменения погрешности эмпирическим методом. Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
|
28.10.2014, 12:42 | #10 |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
ты померяй методами THRTimer времена исполнения функций работы с портом.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
диагностика сетевых интерфейсов. | Ol'ga | Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) | 1 | 05.06.2014 12:13 |
Авто-копирование строки вниз при заполнении текущей (или авто-отображение скрытой ниже) | bygaga | Microsoft Office Excel | 6 | 25.11.2011 14:46 |
Диагностика компьютеров | yojeen | Софт | 5 | 31.12.2010 07:37 |
Диагностика нерабочего железа | ssdm | Компьютерное железо | 2 | 01.12.2010 15:19 |
Как получить данные с COM-порта или другого любого порта? | DeLure | Общие вопросы C/C++ | 5 | 20.09.2007 00:50 |