Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.03.07;
Скачать: [xml.tar.bz2];

Вниз

Как сделать проверки через каждые 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.006 c
1-1238605534
dests
2009-04-01 21:05
2010.03.07
Пропало окно с ошибками в интерфейсе Delphi


15-1261220394
@!!ex
2009-12-19 13:59
2010.03.07
Где прочитать отзывы про WiMax оборудование?


11-1213530831
Artlav
2008-06-15 15:53
2010.03.07
RichEdit: Синхронизация и ограничения.


15-1261595337
ford
2009-12-23 22:08
2010.03.07
Помогите с алгоритмом


15-1261496955
xayam
2009-12-22 18:49
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский