![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать проверки через каждые 20 микросекунд?
Who_is_you? © (2009-12-28 10:02:00)Удалено модератором
Примечание: спам
Who_is_you? (2009-12-29 10:05:00) [1]Сергей М.
Спасибо за статью. Есть над чем поработать.
И ко ВСЕМ.
Был бы рад ещё подобной информации или готовых примеров.
DVM (2009-12-28 15:47:00) [2]
> Anatoly Podgoretsky © (28.12.09 10:38) [10]
> XP Embeded
она почти ничем не отличается от стандартной XP. Embedded - это набор - сделай сборку Windows себе сам.
Сергей М. (2009-12-28 14:22:00) [3]
> Who_is_you? © (28.12.09 13:53) [17]
Кулибин, почитай сюда:
http://www.citforum.ru/operating_systems/windows/parp_win/
Who_is_you? (2009-12-28 13:53:00) [4]Во-первых, не партизан.
А во-вторых:
- все прозрачно: данные(по 14 байт) с частотой в 10Кгц(min)-30Кгц(max) нужно получить по LPT без пропуска байта.
А можно как сом-портом использовать как-то:
SetCommState
DCB.EvtChar:=chr(10);//задание символа для флага: ( 0x0A )
//ставим маску - "по пришествии определенного символа"
SetCommMask(hCom,EV_RXFLAG);
Anatoly Podgoretsky (2009-12-28 12:30:00) [5]> KilkennyCat (28.12.2009 12:07:15) [15]
Так автор партизан.
KilkennyCat (2009-12-28 12:07:00) [6]
> успевает обработать видеопотоки
Да. Только с задержкой, и опять же, там несколько иная задача. А какая здесь задача неизвестно.
Anatoly Podgoretsky (2009-12-28 11:30:00) [7]> KilkennyCat (28.12.2009 11:11:13) [13]
Виндоус нормально реагирует на мегабиты, успевает обработать видеопотоки
KilkennyCat (2009-12-28 11:11:00) [8]
> В данный момент реально данные идут с частотой в 2кГц, но
> нужно увеличить в 5 раз.
а в начале ты хотел получать более чем в 50 раз. Тоже проблема с порядками?
И потом, хреново озвученная задача подразумевает хреновый ответ.
По лпт можно прогнать легко мегабита 2 в секунду, вроде бы. Тебе надо получить кучку данных быстро, или тебе надо среагировать на каждый бит моментально? Если первое - стандартная работа с лпт и прочими портами. Если второе - делфи и винду в топку.
Сергей М. (2009-12-28 10:43:00) [9]
> Who_is_you? © (28.12.09 10:26) [6]
Вот дались тебе эти "прерывания")
ОС сама с ними разберется и исправно/вовремя передаст/примет данные порта без твоего вмешательства.
Все что от тебя требуется - открыть порт, получить хендл и работать с ним как с хендлом обычного файла с последовательным доступом:
hMyLPTPortFile := CreateFile('LPTn', ...);
..
bResult := ReadFile(hMyLPTPortFile, ...); //чтение из порта
..
bResult := WriteFile(hMyLPTPortFile, ...);//запись в порт
Who_is_you? (2009-12-28 10:38:00) [10]В данный момент реально данные идут с частотой в 2кГц, но нужно увеличить в 5 раз.
Anatoly Podgoretsky (2009-12-28 10:38:00) [11]
> Что за блох ты там ловишь в не-ОСРВ ?)
Вопрос спорный и без определения терминов может и неверный. Кроме того Виндоус они разные бывают, ты видимо в расчет не брал XP Embeded
Anatoly Podgoretsky (2009-12-28 10:36:00) [12]
> Who_is_you? © (28.12.09 10:26) [6]
Объясни более подробно задачу и также требования к стабильности периода, к чему приведет пропуск очередных 20 мксек. В общем это не возможно, но может поможет микроконтроллер с точной фиксацией, но отложеной обработкой.
sniknik (2009-12-28 10:30:00) [13]> Получаю по LPT данные с частотой 20 микросекунд и может меньше
врать не хорошо.
sniknik (2009-12-28 10:29:00) [14]> Х.З.
1 GetTickCount = 1 миллисекунд = 1000 микросекунд
Who_is_you? (2009-12-28 10:26:00) [15]Подробнее значит так:
Получаю по LPT данные с частотой 20 микросекунд и может меньше, с проверкой регистра статуса.
Если получаю, ориентировочно, не более 150 байт, то получаю все точно согласно протокола. При большом потоке данных, например в цикле while, Windows XP периодически прерывает получение данных и вставляет какую-то абракадабру.
А на прерывания по LPT виндоза почему-то ругается.
Виртуальность XP - это не Windows 98.
Б (2009-12-28 10:20:00) [16]> Разницу между микро- и миллисекундами до сих пор не понял ?
Х.З.
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1261824983&n=18
Jeer (2009-12-28 10:18:00) [17]
> Б (28.12.09 10:12) [3]
Разницу между микро- и миллисекундами до сих пор не понял ?
Б (2009-12-28 10:12:00) [18]Может так?
procedure TForm1.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
begin
If (GetTickCount - FT > 200) then
begin
FT:= GetTickCount;
Button1.Visible:= not Button1.Visible;
end;
Done:= False;
End;
Сергей М. (2009-12-28 10:06:00) [19]Какие такие "проверки" ?
Что за блох ты там ловишь в не-ОСРВ ?)
Подробнее ..
KilkennyCat (2009-12-28 10:06:00) [20]паяльник в руки и вперед. либо забываем про виндоус и ставим че-нить реалтайм.