Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];

Вниз

прерывание от LPT   Найти похожие ветки 

 
Waso   (2005-05-14 21:13) [0]

Здравствуйте! Есть такая проблема - комп под XP нужно научить регистрировать импульсы, поступающие от датчика (счетчик Гейгера). Сейчас это организовано периодическим опросом 10-й ноги LPT (ACK) из-за чего ес-сно вся система неслабо подвисает. Крометого для этого необходимо собирать внешний одновибратор, дабы растягивать поступивший импульс так чтобы порт его заметил.
Очень хотелось-бы организовать что-то вроде прерывания от LPT по фронту входящего импульса, но незнаю возможно ли вообще такое... ??? и как??? =) Можно и к COM-порту подрубить, если там такое прокатит... Есть какиенибудь соображения?

Заранее благодарен.


 
KilkennyCat ©   (2005-05-14 21:29) [1]

А какая максимальная частота импульсов?


 
Маг Похмеляйнен   (2005-05-14 21:58) [2]

Дам нить - поищите в документации MSDN статейку:
"Connecting an Interrupt Service Routine to a Parallel Port"
Такая вот интересная статейка.
А частота...
Тибидохаясь в своё время с устройством на ISA шине, получал до 50 кГц. Обработка событий, естественно, в своём драйвере. Наверно, с LPT получится также, или похуже.


 
Германн ©   (2005-05-15 02:05) [3]

Често говоря, имхо, для Com-порта есть более продвинутая система реакций на изменение состояний "неких выводов", чем для LPT-порта!


 
Serge KV   (2005-05-15 03:23) [4]

Однозначно COM порт используй, на него в отличии от LPT можно устанавливать события.
см
SetCommEvent и т.д.


 
Waso   (2005-05-15 10:43) [5]

Частота - 1кГц хватит. Импульсы приходят довольно редко, но нужно обеспечить точность по времени не хуже 1мс. Думаю с прерываниями об частоте можно будет не беспокоиться. Буду надеяться что вызов прерывания будет происходить гораздо быстрее, или всегда занимать одинаковое время, ибо время засекать буду программно... Или можно заставить это делать железо порта?

Большое спасибо за советы.


 
KilkennyCat ©   (2005-05-15 12:48) [6]

Ну, с такой частотой не должно быть проблем с любым вариантом решения. Можно и без прерывания. Можно и через СОМ. Можно даже через звуковую карту изватиться.
А вот с точностью... Если точность критична, то я бы лучше все сделал бы через самодельный буфер.


 
Маг Похмеляйнен   (2005-05-15 13:10) [7]

1 кГц на COM проблематично.
Время от поступления сигнала прерывания до вызова обработчика обычно постоянно, и занимает от единиц до десятка мкс, в зависимости от быстродействия проца.


 
Маг Похмеляйнен   (2005-05-15 13:12) [8]

А время засекать можно ф-ей KeQueryPerformanceCounter.


 
KilkennyCat ©   (2005-05-15 13:40) [9]


> 1 кГц на COM проблематично.


но допустимо.


 
KilkennyCat ©   (2005-05-15 13:42) [10]

Вообще, я бы все-таки собрал несложную железку, которая собирала бы импульсы, а потом выдавала бы данные по запросу.


 
Waso   (2005-05-15 13:59) [11]

Сенкс канеш. Нелюблю я лишний раз железки собирать... =)


 
KilkennyCat ©   (2005-05-15 14:05) [12]

Ну так. Кто любит? Но есть золотая середина:  крутая железка - простая программа, простая железка - крутая программа. Вот и надо выбрать, что оптимальнее.
В данном случае я бы собрал к лпт присоединил бы регистр, это бы упростило все сразу, так как с его помощью можно и растянуть сигнал по времени, и считывать сразу партию сигналов...


 
Waso   (2005-05-15 21:25) [13]

Вобщем прочитал я статейку Connecting an Interrupt Service Routine to a Parallel Port по адресу http://www.osronline.com/ddkx/parallel/vspd_06g7.htm и еще мнооого всякой инфы по поводу работы с lpt u com портами, но так и не понял как организовать прерывание в Дельфи. Я это себе представляю как процедуру типа OnClick например. Не подскажете где почитать?

А еще делфа моя (6) не знает такой фичи как SetCommEvent. Зато знает WaitCommEvent. Както по другому надо эти эвенты настраивать...


 
Германн ©   (2005-05-16 02:01) [14]

Славо богу! Инициатором разработок моей фирмы был - электронщик!
И, как и говорил KilkennyCat, мы сделали упор на создание "переходных электронных устройств" между "основной системой" и компьютером.

Но, если кто хочет "напрямую", то драйвер им в руки!
Или ДОС!

Ну, правда, мы не заморачивались "точностью до 1ms"!?


 
Marser ©   (2005-05-16 02:08) [15]


> А еще делфа моя (6) не знает такой фичи как
> SetCommEvent. Зато знает WaitCommEvent. Както по
> другому надо эти эвенты настраивать...

Клевета! Знает она всё.


 
Marser ©   (2005-05-16 02:09) [16]

SetCommMask, правда. Про SetCommEvent впервые слышу.


 
Marser ©   (2005-05-16 02:10) [17]

Гы. Есть такой зверь, оказывается...


 
Konstantin_M   (2005-05-16 13:47) [18]

http://www.entechtaiwan.com/tools.htm


 
Waso   (2005-05-16 16:13) [19]

Если уж говорить о серийном производстве, то помоему будет выгоднее погемароиться один раз с прогой и потом не тратиться на производство переходных железок.

И всетаки про прерывания в делфи ктонить ченить скажет???


 
Waso   (2005-05-16 16:15) [20]

Чудеса! Отправить не успел а тут ужо ссылочки... Пасибки, Ща глянем... =)


 
Waso   (2005-05-16 16:41) [21]

Здорово! А за самое вкусненькое денег хотят... spin.pas


 
Waso   (2005-05-16 16:49) [22]

НАШОЛ...
http://www.wetdz.gov.cn/en/programfiles/Borland/Delphi7/Source/Samples/Spin.pas


 
Waso   (2005-05-16 17:28) [23]

Всетаки самое вкусное во внешней DLL. Походу насчет авторизации тоже она орет... Буду добивать тему. Простите за кучу ламерских восклицаний. (Ну не шарю я в делфи) Модераторы! Kill"em all, please.


 
Digitman ©   (2005-05-17 13:36) [24]


> Waso   (16.05.05 16:13) [19]
> И всетаки про прерывания в делфи ктонить ченить скажет???


нет в Делфи никаких "прерываний".
прерывание - термин/механизм, присущий процессору, а не среде программирования.


 
Германн ©   (2005-05-17 14:29) [25]

2 Digitman ©   (17.05.05 13:36) [24]

Ну тут Вы Сергей несколько погорячились.
Все-таки термины Int из ассемблера и Interrupt из Паскаля присущи именно средам программирования.
Хотя насчет Дельфи Вы полностью правы.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.034 c
4-1115626624
seregka
2005-05-09 12:17
2005.07.11
Компоненты для работы с BarCode reader


14-1118329155
_tmp
2005-06-09 18:59
2005.07.11
Помогите настроить справку Windows SDK


1-1119593595
webpauk
2005-06-24 10:13
2005.07.11
Преобразование


1-1119506247
JetMan
2005-06-23 09:57
2005.07.11
поиск по ListView


14-1118055709
1008
2005-06-06 15:01
2005.07.11
legalize (Украина, госструктуры)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский