Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать проверки через каждые 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]

паяльник в руки и вперед. либо забываем про виндоус и ставим че-нить реалтайм.


Наверх

Титульная страница Поиск, карта сайта Написать письмо