Вниз
Скачать: CL | DM;

Толковый народ! Помогите с выводом на 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.022 c
1-1082096797
Litva
2004-04-16 10:26
2004.05.02
помогите новенкой...


1-1081772016
ss300
2004-04-12 16:13
2004.05.02
Обработка TEdit


3-1080810273
clickmaker
2004-04-01 13:04
2004.05.02
ADO->MIDAS->ClientDataSet не пашет фильтр по BooleanField


14-1081333732
kombat
2004-04-07 14:28
2004.05.02
Какие сторонние компоненты (наборы) вы используете в работе?


3-1081164849
GIL
2004-04-05 15:34
2004.05.02
Локальная БД, запускающаяся с CD




   Наверх