Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.03.07;
Скачать: CL | DM;

Вниз

Как сделать проверки через каждые 20 микросекунд?   Найти похожие ветки 

 
Who_is_you? ©   (2009-12-28 10:02) [0]

Удалено модератором
Примечание: спам


 
Сергей М. ©   (2009-12-28 10:06) [1]

Какие такие "проверки" ?

Что за блох ты там ловишь в не-ОСРВ ?)

Подробнее ..


 
KilkennyCat ©   (2009-12-28 10:06) [2]

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


 
Б   (2009-12-28 10:12) [3]

Может так?


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;


 
Jeer ©   (2009-12-28 10:18) [4]


> Б   (28.12.09 10:12) [3]


Разницу между микро- и миллисекундами до сих пор не понял ?


 
Б   (2009-12-28 10:20) [5]

> Разницу между микро- и миллисекундами до сих пор не понял ?

Х.З.
http://delphimaster.net/view/2-1261824983/


 
Who_is_you? ©   (2009-12-28 10:26) [6]

Подробнее значит так:

Получаю по LPT данные с частотой 20 микросекунд и может меньше, с проверкой регистра статуса.
Если получаю, ориентировочно, не более 150 байт, то получаю все точно согласно протокола. При большом потоке данных, например в цикле while, Windows XP периодически прерывает получение данных и вставляет какую-то абракадабру.
А на прерывания по  LPT виндоза почему-то ругается.
Виртуальность XP - это не Windows 98.


 
sniknik ©   (2009-12-28 10:29) [7]

> Х.З.
1 GetTickCount = 1  миллисекунд = 1000 микросекунд


 
sniknik ©   (2009-12-28 10:30) [8]

> Получаю по LPT данные с частотой 20 микросекунд и может меньше
врать не хорошо.


 
Anatoly Podgoretsky ©   (2009-12-28 10:36) [9]


> Who_is_you? ©   (28.12.09 10:26) [6]

Объясни более подробно задачу и также требования к стабильности периода, к чему приведет пропуск очередных 20 мксек. В общем это не возможно, но может поможет микроконтроллер с точной фиксацией, но отложеной обработкой.


 
Anatoly Podgoretsky ©   (2009-12-28 10:38) [10]


> Что за блох ты там ловишь в не-ОСРВ ?)

Вопрос спорный и без определения терминов может и неверный. Кроме того Виндоус они разные бывают, ты видимо в расчет не брал XP Embeded


 
Who_is_you? ©   (2009-12-28 10:38) [11]

В данный момент реально данные идут с частотой в 2кГц, но нужно увеличить в 5 раз.


 
Сергей М. ©   (2009-12-28 10:43) [12]


> Who_is_you? ©   (28.12.09 10:26) [6]


Вот дались тебе эти "прерывания")
ОС сама с ними разберется и исправно/вовремя передаст/примет данные порта без твоего вмешательства.

Все что от тебя требуется - открыть порт, получить хендл и работать с ним как с хендлом обычного файла с последовательным доступом:

hMyLPTPortFile := CreateFile("LPTn", ...);
..
  bResult := ReadFile(hMyLPTPortFile, ...); //чтение из порта
..
  bResult := WriteFile(hMyLPTPortFile, ...);//запись в порт


 
KilkennyCat ©   (2009-12-28 11:11) [13]


> В данный момент реально данные идут с частотой в 2кГц, но
> нужно увеличить в 5 раз.

а в начале ты хотел получать более чем в 50 раз. Тоже проблема с порядками?
И потом, хреново озвученная задача подразумевает хреновый ответ.
По лпт можно прогнать легко мегабита 2 в секунду, вроде бы. Тебе надо получить кучку данных быстро, или тебе надо среагировать на каждый бит моментально? Если первое - стандартная работа с лпт и прочими портами. Если второе - делфи и винду в топку.


 
Anatoly Podgoretsky ©   (2009-12-28 11:30) [14]

> KilkennyCat  (28.12.2009 11:11:13)  [13]

Виндоус нормально реагирует на мегабиты, успевает обработать видеопотоки


 
KilkennyCat ©   (2009-12-28 12:07) [15]


> успевает обработать видеопотоки

Да. Только с задержкой, и опять же, там несколько иная задача. А какая здесь задача неизвестно.


 
Anatoly Podgoretsky ©   (2009-12-28 12:30) [16]

> KilkennyCat  (28.12.2009 12:07:15)  [15]

Так автор партизан.


 
Who_is_you? ©   (2009-12-28 13:53) [17]

Во-первых, не партизан.
А во-вторых:
- все прозрачно:  данные(по 14 байт) с частотой в 10Кгц(min)-30Кгц(max) нужно получить по LPT без пропуска байта.

А можно как сом-портом использовать как-то:

SetCommState
  DCB.EvtChar:=chr(10);//задание символа для флага: ( 0x0A )

 //ставим маску - "по пришествии определенного символа"
 SetCommMask(hCom,EV_RXFLAG);


 
Сергей М. ©   (2009-12-28 14:22) [18]


> Who_is_you? ©   (28.12.09 13:53) [17]


Кулибин, почитай сюда:

http://www.citforum.ru/operating_systems/windows/parp_win/


 
DVM ©   (2009-12-28 15:47) [19]


> Anatoly Podgoretsky ©   (28.12.09 10:38) [10]


> XP Embeded

она почти ничем не отличается от стандартной XP. Embedded - это набор - сделай сборку Windows себе сам.


 
Who_is_you? ©   (2009-12-29 10:05) [20]

Сергей М.

Спасибо за статью. Есть над чем поработать.

И ко ВСЕМ.
Был бы рад ещё подобной информации или готовых примеров.



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

Текущий архив: 2010.03.07;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.013 c
2-1261572735
Shamansky
2009-12-23 15:52
2010.03.07
Access 2007 vs Delphi 2007


2-1262806559
pavel_guzhanov
2010-01-06 22:35
2010.03.07
Странная работа ADOQuery


1-1239176461
MAcK
2009-04-08 11:41
2010.03.07
TXMLTransformClient


1-1220526665
evgenij
2008-09-04 15:11
2010.03.07
узнать запущена моя программа или нет


2-1262255716
Александр К
2009-12-31 13:35
2010.03.07
Помогите перевести с c++ в pas (Оочень маленький участок кода)