Покажите пример схемы для опроса клавиатуры подключенной к LPT и выдающей код клавиши при ее нажатии и отпускании.
[size=-2]------ Добавлено в 23:51
Вот наваял приблизительно схему(в самой клавиатуре дешифратор и диодная матрица с кнопками)
code_2261.txt
Пока клавиатуры нету, проверить не на чем, поправьте если что не так
Этот топик читают: Гость
Ответов: 899
Рейтинг: 43
|
|||
карма: 0 |
| ||
файлы: 1 | code_2261.txt [1.5KB] [214] |
Ответов: 8926
Рейтинг: 823
|
|||
unalex, в LTP без дополнительных устройств есть 8 выходов (ножки2-9 разъёма) и 5 входов (ножки 15, 13, 12, 10, 11 разряды байта 3,4,5,6,7, причём 3 и 7 инверсные, а в трёх младших разрядах 011 - стоит сумма 6)- можно сразу подсоединить 40 шт клавиш (одновременно можно нажать 5 клавиш в разных рядах), если поставить дешифратор на выходе (8--256), то можно обработать 256х5=1280 шт клавиш.
Не замкнутые на корпус входы дают на выходе 1, поэтому никуда не подсоединённый порт читается 126 (128-8+6), завтра найду кабель (у меня есть с припаянными светодиодами) и проверю точно какая должна быть математика для обработки. code_9610.txt |
|||
карма: 19 |
| ||
файлы: 1 | code_9610.txt [851B] [247] |
Ответов: 899
Рейтинг: 43
|
|||
Леонид, спасибо за ответ, пытаюсь переварить информацию
В устройстве 61 клавиша(музыкальный инструмент)Необходима возможность одновременного нажатия нескольких клавиш, т.е я так понял, нужен динамический опрос клавиатуры Получается в течении каждого цикла опроса я должен сохранить в массиве данные о состоянии всех клавиш, а в последующих циклах сравнивать состояние клавиш с предыдущими циклами, и в случае изменения состояния выводить номер клавиши? Или я неправильно понял принцип? |
|||
карма: 0 |
|
Ответов: 8926
Рейтинг: 823
|
|||
unalex, с этого надо было начинать. Без небольшого количества пайки здесь не обойтись - надо сделать развёртку 6-бит -- 64 выходнных линий (максимум 5 корпусов микросхем, если серия 155: К155ИД3 - 4 шт, К155ЛА3 - 1 шт ).
На кажой из этих линий поочерёдно появляется 0 и если клавиша нажата - этот 0 будет и на входе LTP, хоть все сразу нажимай ------------ Дoбавленo: Вот:
|
|||
карма: 19 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Леонид писал(а): Без небольшого количества пайки здесь не обойтись Анекдот писал(а):
- Паять умеешь? - Нет. - Хреново... - Хреново умею! |
|||
карма: 25 |
|
Разработчик
Ответов: 26151
Рейтинг: 2127
|
|||
Леонид писал(а): на входе LTPДо каких пор вы все будете писать LTP. Настоящее название порта -- LPT, несерьезно, как-то... ------------ Дoбавленo: Кстати, есть такая хитрая dll'ка -- inpout32.dll, которая позволяет управлять LPT-портом через стандартный драйвер NT, и которой совершенно не нужен драйвер HiAsm'a ------------ Дoбавленo: Вот интересный сайт по сопряжению и управлению внешними устройствами через ПК, там, кстати, есть вполне интересные книги в электронном виде http://www.pcports.ru/ |
|||
карма: 22 |
| ||
Голосовали: | Andrey |
Ответов: 8926
Рейтинг: 823
|
|||
nesco, во, никогда внимания не обращал, но LTP для русского языка выговаривается легче и привычнее, чем LPT, спасибо за уточнение.
С inpout32.dll скорость опроса порта на порядок выше на VB, (кстати на их сайте я увидел ссылку, похожую на хранитель экрана со сменяющимися картинками, перешёл в надежде скачать и попал на порнуху, да ещё там трояна мне подсунули, еле избавился). Tad, если unalex-у нужно, нарисую и схему, даже спаять смогу, не смогу только по электронной почте отправить |
|||
карма: 19 |
|
Ответов: 9906
Рейтинг: 351
|
|||
nesco писал(а): Кстати, есть такая хитрая dll'ка -- inpout32.dll, которая позволяет управлять LPT-портом через стандартный драйвер NT, и которой совершенно не нужен драйвер HiAsm'aБольшенький уже вроде, а веришь всему, что написано на заборе hwinterface.sys - это по твоему что |
|||
карма: 9 |
|
Ответов: 5227
Рейтинг: 587
|
|||
Ну и что Вы тут динамите ? Леонид у меня 953-954 милисекунды весь цикл, крутая клава получится ;)
Как то я делал тест драйв LPT даже ветку где то заводил "Насколько шустрый LPT?" с дровами HiAsm, так вот на запись больше 1 милисекунды выдавить из него неудалось, доказательством того были осцилограмы снятые с LPT, если интервал вывода в порт меньше 500 микросекунд то импульса могло вообще небыть (пропуск) code_9615.txt |
|||
карма: 4 |
| ||
файлы: 1 | code_9615.txt [1.6KB] [313] |
Разработчик
Ответов: 26151
Рейтинг: 2127
|
|||
Galkov писал(а): а веришь всему, что написано на забореНу, я в подробности не вдавался. Случайно нарвался на этот сайт. И согласно твоему уточнению -- точно, заборное чтиво. А как красиво написано: www.pcports.ru писал(а): Если же она имеет дело с NT, то обращения к ней она конвертирует в запросы к стандартному драйверу ОС, через который и идет обмен информацией с портом |
|||
карма: 22 |
|
Ответов: 5227
Рейтинг: 587
|
|||
Благодаря giveio.sys успешно отработают и такие ассемблерные письмена:
_asm { mov dx, 378h mov al, 1 out dx, al } недаром его многие используют |
|||
карма: 4 |
|
Ответов: 8926
Рейтинг: 823
|
|||
andrestudio, а вот так измерить: code_9617.txt
------------ Дoбавленo: вот так точнее:
|
|||
карма: 19 |
| ||
файлы: 1 | code_9617.txt [1.5KB] [242] |
Ответов: 9906
Рейтинг: 351
|
|||
andrestudio, не парь народу мозги с 954-мя милисекундами
Вот корректная схема проверки: code_9618.txt Которая у меня рассказывает, что на три обмена с портом уходит около 18 микросекунд Отключи одну из линий в порту и посмотри разницу - именно это называется корректным экспериментом (могу даже сказать, что этому тоже учиться надо) Да, 6 микросекунд на обмен -- относительно медленно. Спецификация ISA позволяет достигать 0.8 микросекунд на цикл шины ((правда я не видел людей, которые достигали этих высот)) Но это вовсе не то, о чем ты рассказываешь Про пропуски сигналов, и экспериментальные результаты Так они у меня тоже есть. И по-надежнее, чем визуальное наблюдение по осциллографу У меня просто изделие сутками работает на производстве. И никто никаких защит в софте не ставил на "неправильность" обмена информацией Просто мне известно, что у винды есть противная привычка - думать что там сидит действительный принтер И, получивши какие-то сигналы с порта, отличные от default-ных, она САМА начинает туда лепить что-то по своему недалекому разумению Слава богу, есть ситуации, когда ей это надоедает, и она прекращает умничать У меня на разъеме один из входов (в моем железе это -ERR) намертво припаян на ноль (чтобы винда сразу же начала свой процесс "изучения принтера"). И в проге стоит защита против ее запуска в первые 5 минут просле перезагрузки компа. Вот тебе и весь сказ |
|||
карма: 9 |
| ||
файлы: 1 | code_9618.txt [1KB] [298] |
Ответов: 8926
Рейтинг: 823
|
|||
Galkov, с Вашего разрешения я занесу
Galkov писал(а): Просто мне известно, что у винды есть противная привычка - думать что там сидит действительный принтер
И, получивши какие-то сигналы с порта, отличные от default-ных, она САМА начинает туда лепить что-то по своему недалекому разумению Слава богу, есть ситуации, когда ей это надоедает, и она прекращает умничать У меня на разъеме один из входов (в моем железе это -ERR) намертво припаян на ноль (чтобы винда сразу же начала свой процесс "изучения принтера"). И в проге стоит защита против ее запуска в первые 5 минут просле перезагрузки компа. |
|||
карма: 19 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Леонид, мы же с тобой это проговаривали несколько лет назад
В нашем возрасте - ну буквально вчера |
|||
карма: 9 |
|