Главная страница
    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.101 c
1-1081927015
Viktor
2004-04-14 11:16
2004.05.02
exit;


1-1081869469
MAXH0
2004-04-13 19:17
2004.05.02
Вопрос по TreeView


8-1075755416
crystalmind
2004-02-02 23:56
2004.05.02
Гигантские растры


1-1081762397
Beglec
2004-04-12 13:33
2004.05.02
Масштаб (Количество 96 точек/дюйм) - а как быть с 120 точками


14-1081224495
Vlad Oshin
2004-04-06 08:08
2004.05.02
Уважаемые Питерцы! Помогите с жильем...





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