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

Вниз

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

Наверх




Память: 0.47 MB
Время: 0.026 c
1-41332
Anonim-777
2003-10-28 21:16
2003.11.13
Как сделать массив обьектов?


3-41012
Павел
2003-10-16 08:19
2003.11.13
Проблема с QRMemo


1-41675
Dima_dvp
2003-10-25 00:53
2003.11.13
Как создать ф-ию на ASM, чтобы параметры через регистры?


1-41377
Aleksandr
2003-10-30 13:09
2003.11.13
Почему неправильно рисуется PageControl?


1-41384
Zilog
2003-10-30 10:45
2003.11.13
Pascal 7.0 Есть указатель на некую функцию. Требуется запустить





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