программа на C# под Linux реального времени, работа с прерываниями..
программа требуется для тестирования реакции пользователя, потому и выбраны такие условия, чтоб задержка между нажатием на левую клавишу мыши была минимальной..
подскажите, в каком направлении двигаться.. я так понимаю, что на С# будут вставки для низкоуровневого программирования.. как это реализовать?.. какой дистриб Linux'а выбрать?..
PS: с С++ дружу слабо, и времени на реализацию в обрез(..
если что, то под Linux есть аналог .NET'а - MONO, и IDE "MonoDevelop"..
Действительно ли нужно реальное время, чтобы обработать клики пользователя? Человек не робот, моментально реагировать не может.
Чёрт знает, что именно вам нужно, но работать на C# с USB-портом можно.
То что вы хотите сделать - сделать теоретически можно. Но гораздо проще, быстрее и логичней на С, в крайнем случае на С++.
То что вы плохо знаете С - не отговорка. Невозможно после C# не понять С. =)
Поставленную задачу (чтение данных с мышы) можно решить и на shell-скрипте в 10 строчек. Реальное время не нужно. C# не нужен. C++ тем более.
В линуксе делается так:
Автор начитался фантастических книг из начала девяностых про делфи, винапи, драйверы новомодных USB и красивые графические интерфейсы. А на деле задачи приходится решать прит помощи верстака и киянки.
и одни лишь голые получаемые данные сами по себе не нужны - они должны обрабатываться программой.. в общем, операционка реального времени нужна лишь для того, чтобы избавиться (думаю, нереально), либо свести к минимуму и ТОЧНО конкретизировать время программной задержки.. поэтому на время теста программа должна по возможности монопольно использовать аппаратные ресурсы (ну как старые проги под MS DOS).. и под виндой с её многозадачностью такого точно не выйдет..
2 aks: как раз на базе Linux'а строятся операционки реального времени.. для интересу сходите по ссыли от koodeer'а..
и одни лишь голые получаемые данные сами по себе не нужны - они должны обрабатываться программой..
Открываете чардевайс мыши как файл в программе, а дальше все так же. )
в общем, операционка реального времени нужна лишь для того, чтобы избавиться (думаю, нереально), либо свести к минимуму и ТОЧНО конкретизировать время программной задержки.. поэтому на время теста программа должна по возможности монопольно использовать аппаратные ресурсы (ну как старые проги под MS DOS).. и под виндой с её многозадачностью такого точно не выйдет..
Честно говоря не понял что вы имеете ввиду под программной задержкой. мне кажется у вас недопонимание того как взаимодействует ОС желозо и юзеспэйс и от этого такая каша в голове. Думаю если опишете хотя бы примерно прикладную проблему, которые пытаетесь так решить - возможно посоветуем подходящее средство.
Если же вам нужно работа с устройством выходящая за рамки того, что предоставляет система - пожалуйста, пишите драйвер - монополизируйте ресурс как хотите. Благо в линуксе драйвера пишутся легко. И многозадачность тут совершенно не причем. Линукс такой же многозадачный как и винда, как и любая современная ОС.
2 aks: как раз на базе Linux'а строятся операционки реального времени.. для интересу сходите по ссыли от koodeer'а..
Не надо мне рассказывать что на базе чего строится. Я прекрасно знаю, что такое реалтаймовая ОС. И таки ос строятся на на базе, а изначально реалтаймовые. Ядро линукс позволит выполнять лишь некоторые операции в условно режиме реального времени.
вполне возможно, не спорю..
запускается прога.. выбираются нужные параметры тестирования.. суть проги - кружок двигается по контуру (окружность, линия), и когда достигает определенного места, то пользователь должен среагировать - нажать на кнопку мыши, и прога должна эти данные моментально получить.. исходя из смысла слова "моментально", мы должны внутри программы в процедуре тестирования написать нечто вроде ассемблерной вставки, в которой будем опрашивать USB-порт с мышью, т.е. в момент самого тестирования программа напрямую взаимодействует с портом и является единственным активным и исполняемым системой процессом (надеюсь, понятно объяснил.. :) )..
я лишь говорю исходя из того, что прочитал.. вот тут люди про ART Linux упоминают.. :)
Тама ж нету C#, а без него никак.