|
|
|
новичок
      
участник
Last Login: 10.05.2006 14:42
Сообщ.: 2,
Visits: 25
|
|
Здравствуйте. Представьте себе такую ситуацию: пишется прога (типа база данных) на С++ Билдере (наверное, шестом). Есть запрограммированный микроконтроллер (MCXXXX), который что-то делает (а например, проводит опрос своих входов на наличие сигнала и, если таковой есть, генерирует прерывание). Контроллер этот впаян в плату, и та, в свою очередь, втыкается в PCI-слот. Драйвер у этой платы, допустим, тоже имеется (и та включена как устройство в диспетчере устройств Windows XP). Так вот может ли кто мне подсказать, КАК можно будет программно обработать прерывание микроконтроллера, и какими средствами? Нужно от микроконтроллера получить сигнал о прерывании и номер сработавшего входа.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 23.01.2008 15:09
Сообщ.: 329,
Visits: 3 604
|
|
|
|
|
|
новичок
      
участник
Last Login: 10.05.2006 14:42
Сообщ.: 2,
Visits: 25
|
|
| Петрович, а поконкретнее нельзя? Я имею в виду - по сути проблемы :)
|
|
|
|
|
Supreme Being
      
участник
Last Login: 23.04.2007 9:22
Сообщ.: 106,
Visits: 1 209
|
|
| По-моему нужно копать в сторону IOCTL и DDK.
|
|
|
|
|
новичок
      
участник
Last Login: 23.06.2006 15:08
Сообщ.: 4,
Visits: 9
|
|
| С обработкой прерываний под Windows все достаточно тоскливо... Доступ к модификации таблицы дескрипторов прерываний имеют только задачи с привилегиями уровня ядра. Поэтому, насколько мне удалось понять, нужно писать системный VXD-драйвер и регистрировать его в системе. Причем драйвер должен в обработчике прерывания генерировать системное событие (Event), а приложение должно ждать этого события чем-то типа WaitForSingleEvent. Все это работает достаточно медленно, поэтому RealTime приложения для виндов - это нонсенс... Впрочем, можно написать некое приложение под ДОС, которое будет работать под виндовс в виртуальной машине и получать прерывания обычным досовским образом типа функции setIntVec(). Только проблема останется в передаче данных из этой программы в рабочее приложение... когдато под Win98 я ее решил, только убей Бог, не помню как (вроде через общую память)...
|
|
|
|