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

Вниз

Толковый народ! Помогите с выводом на LPT массива данных...   Найти похожие ветки 

 
Pashka_Cool ©   (2004-03-06 16:05) [0]

Прочитал все сабжи по работе с LPT, но ответа на свою проблему не нашёл. :( Мне необходимо выводить массив данных на порт с максимальной скоростью, но не кодом через цикл, а как-то автоматом, сбросив массив в какой то буфер, из которого эти данные будут циклично выбрасываться в порт, пока я по таймеру не обновлю этот массив. После чего всё снова будет выводиться. Если это делать обычным кодом в Делфе (я пользуюсь выводом посредством функций WinIo.dll), то естественно всё подвисает, пока цикл не отработает своё. Даже таймер не срабатывает, что бы прервать цикл. Да ещё и присутствует некоторая нестабильность вывода данных (я формирую ШИМ через LPT). Выручайте братцы!


 
тихий вовочка ©   (2004-03-07 08:18) [1]

Выход для тебя один - пиши vxd или sys драйвер, у которого свой буфер. И реализуй в нем все - работу с LPT и чтение из буфера. А программа соответственно будет только через DeviceIOControl передавать адрес начала буфера, команду сливать и команду завершать слив. Можешь сделать, чтобы драйвер после сливания буфера ставил Event тогда программа через WaitForSingleObject будет знать, когда драйвер отработает. Это ожидание в отдельный поток - и ничего у тебя не подвисает.


 
N169   (2004-03-07 09:52) [2]

Драйвер как таковой не поможет - у Windows проблемы во временной области.
Тут нужно решение на базе микроконтроллера


 
тихий вовочка ©   (2004-03-07 16:45) [3]

Ну как это не поможет? У меня такая реализация сливает блоки по 64 байта с частотой 350 Гц. Все дело в Ring0


 
N169   (2004-03-07 19:56) [4]

Интервал стабилен или в среднем? Работает непрерывно или пачками по 64 байта?
Если стабилен и непрерывно, и в Wdm драйвере, и через LPT, тогда поделись пожалуйста с народом решением, мы все скажем спасибо :)
(И я признаю гением)


 
Pashka_Cool ©   (2004-03-09 11:29) [5]

Мужики! Я как раз и спрашивал о решении на базе контроллера, а именно работы с LPT в  DMA режиме. Только вот в справочнике кроме сухой теории про этот режим нет никаких примеров. Этот режим мне бы подошёл, но вот как к нему подобраться - я и не в курсах. Вот может кто посвятит в детали,- буду супер доволен. Даже если этот режим и не даст стабильной работы для ШИМ-а, то это не беда, главное, чтобы работа была автономная и не медленнее, чем 20 000 выводов в сек.


 
Dmitriy_G ©   (2004-03-09 16:46) [6]

Не знаю я, что такое драйвер, но я знаю что такое микроконтролер.
Если в качестве буфера (как ты сказал) использовать контролер, то пишешь в него массив, который он, сам по себе отправляет дальше. Ты же по таймеру обновляешь масив в микроконтроллере.
Вроде так, а если не так, то можете меня ударить )



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

Форум: "Система";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.033 c
3-1081249724
rw
2004-04-06 15:08
2004.05.02
помогите сделать запрос


14-1081278369
Игорь Шевченко
2004-04-06 23:06
2004.05.02
Упражение из книжки Таненбаума (Современные операционные системы)


14-1081424365
mr. Faga
2004-04-08 15:39
2004.05.02
записать свою функцию в стороннюю DLL...


14-1081847255
juiceman
2004-04-13 13:07
2004.05.02
считалка трафика


8-1075559104
iudjen
2004-01-31 17:25
2004.05.02
mediaplayer





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский