Главная страница
    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.49 MB
Время: 0.005 c
2-1261824983
Егорка
2009-12-26 13:56
2010.03.07
Таймер


15-1261101984
Kerk
2009-12-18 05:06
2010.03.07
«Лучший свободный проект России»


6-1212825133
Андрей
2008-06-07 11:52
2010.03.07
Отправка информации по сокетам


6-1211355931
lead-in
2008-05-21 11:45
2010.03.07
посылка сообщения в локальной сети


15-1261322445
oxffff
2009-12-20 18:20
2010.03.07
Сломать палец на ноге на ровном месте не проблема.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский