Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.13;
Скачать: CL | DM;

Вниз

Как получить данные через USB порт   Найти похожие ветки 

 
Василий   (2003-08-28 14:16) [0]

Подскажите пожалуйста!

Как получить данные с внешнего устройства (данные в виде параллельного 12 разрядного кода) в свою программу написанную на Delphi?


 
N169   (2003-08-28 14:51) [1]

А куда он идёт, этот 12-тиразрядный параллельный код?
Просто есть 12 концов с бинарными сигналами, так, что ли?


 
Василий   (2003-08-29 09:52) [2]

Совершенно верно!!! А USB хочу использовать чтобы в будущем можно было прибором с наладонником пользоваться.

Подскажи пожалуйста если знаешь...


 
N169   (2003-08-29 10:34) [3]

Ну выбираем типа контроллер, делаем на нём хардварину, пишем системную поддержку (драйверы, поддержка юзерового уровня) и все дела.
Самый простой вар/т - использовать переходники USB-COM или USB-LPT в готовом виде или с теми же чипами (FT232, FT245) - такие устройства в системы выглядят как COM или LPT порт, не требуют драйверописательства. Однако внешнее устройство должно при этом поддерживать протокол обмена RS232 или IEEE1284 + проблемы с динамикой.
Крутой вариант - разрабатываем свой контроллер на чипе с USB интерфейсом. Сойдёт, например, Atmel USB355, (USB320 - дрянь),
проч. У Cupress semiconductor тоже есть подобная линейка чипов (на них, к примеру, мышки делают).
Человечный вариант - Любой-доступный-контроллер + чип-адаптер, напр., USBN9601, -02, -03

То есть, сначала надо определиться с хардом - USB устройство обязательно должно содержать некий процессор, который будет реализовывать протоколы обмена с шиной и с внешними девайсами (ваши 12 линий). Плюс требования к потокам данных, ко времени реакции и т.д --> выбор. Плюс денежная сторона. Надо будет всё тщательно просчитать.

Вообще, чем плох USB - большими начальными затратами. И материальными, и трудовыми. Элементарный девайс типа мышки, сделанный с нуля - это минимум $300, выброшенные на железо (Master kit, soft, программатор, чипы, материалы). Плюс до 2 месяцев напряжённой работы. Так что вещь "на коленке" сделать достаточно трудно.


 
Jeer ©   (2003-08-29 10:38) [4]

http://www.lvr.com/usb.htm


 
Василий   (2003-08-29 11:12) [5]

To N169:

Тоесть практически человеку без опыта в этом деле ничего не сделать?

А что за MasterKit подразумевается?

Может быть пока на LPT остановиться? Но там насколько я понимаю всего 4 входные линии данных... А я могу сжать хотябы в 8 бит (6 число и 2 умножения или сдвиги) хотя это нагромождает схему.

Подскажи пожалуйста, как мне это хозяйство (12ти разрядный бинарный код) проще всего на компьютере получать? Что бы графики всякие строить и т.п.


 
Jeer ©   (2003-08-29 11:19) [6]

Купить PCI-карту ввода-вывода.
Сделать свою железку на LPT и данные пар-последовательно передавать


 
N169   (2003-08-29 11:41) [7]

Проще всего, IMHO, через LPT порт.
Если 12 линий, то 8 линий можно передавать через D0-D7, остальные через сигналы ACK. BUSY,SELECT и ERROR.
Как раз все вх. линии будут заняты.
Потребуются всего лишь кусок шнура и разъём. На D0-D7 потребуется поставить 8 резисторов по 330 Ом, чтобы не пожечь ничего (Эти линии двунаправленные и по умолчанию работают на выход).
"Конструкция выходного дня" :)

Если все ваши линии в уровнях TTЛ, разумеется. Если нет - придётся паять формирователи.

А по программному управлению - просто. Берём компонент DLPortIo или LPTVAMP, или GIVEIO и работаем с регистрами порта напрямую, читая данные. Это, как говорится, общее место.


 
Василий   (2003-08-29 11:46) [8]

To Jeer:

Ты имеешь в виду что получать даные сразу с двух или трёх LPT портов? Это мысль! А с LPT можно просто сигнал снимать без всяких наворотов со стороны внешнего железа?


 
Василий   (2003-08-29 12:23) [9]

To N169:

ОТЛИЧНО! Я просто в восторге если это всё так просто!

Значит, если я всё правильно понял, делаем так: берём 12 разрядов с ТТЛ регистра и подаём восемь на выходную шину данных а остальные на вышеперечисленные контакты. А тогда ведь надо перевести LPT в режим приёма информации, так? Или он по умолчании отрублен от шины а там по команде или читает или пишет?


 
N169   (2003-08-29 13:27) [10]

Шина данных двунаправленная, там бит есть в регистре управления - DCR_DIRECTION, $20. Ставим в 1 - и выходы превращаются во входы. Читать можно из регистра данных.
Оставшиеся 4 бита - из регистра состояния.


 
Василий   (2003-08-29 14:08) [11]

Спасибо!

А 20$ - это о чём?

Кстати, а такая тема через адаптеры USB=>LPT будет работать?


 
N169   (2003-08-29 14:22) [12]

$20 это про бит. Вот записать $20 в регистр управления, и выходы заработают как входы.

Через USB работать не будет, т.к. порт в этом случае поддерживает станд. протокол 1284 и недоступен через адресное пространство устройств - не можем обращаться напрямую.



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

Текущий архив: 2003.11.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.025 c
3-40858
MsGuns
2003-10-21 12:27
2003.11.13
QuickReport и широкие отчеты


3-40809
Term
2003-10-22 10:55
2003.11.13
Можно ли изменить длинну поля, не потеряв данные в этом поле


1-41200
AndriyS
2003-11-02 11:47
2003.11.13
Работа с Stringgrid, как менять во время исполнения размеры


1-41316
Anonim-777
2003-10-30 23:01
2003.11.13
Из initialization


14-41985
undert
2003-10-17 01:11
2003.11.13
Посоветуйте программку !