LINUX.ORG.RU

LTP, замыкание пинов female-разъема


0

0

подскажите, пожалуйста, можно ли как-то узнать, из какого data-пина (2-9) пришел сигнал на 10-ый (ack), когда сигнал приходит по скрепке, или другому проводнику? другими словами, какой дата-пин замкнули на ack?

Ответ на: комментарий от metawishmaster

Чего толку читать 0х378 - ack работает в одном направлении на прием, надо читать 0х379 а в 0х378 писать 1 со сдвигами (1, 1<<1, 1<<2 и тд) и контролировать состояние ack (6-й бит в 0х379 - маска b01000000).

imhotep
()
Ответ на: комментарий от imhotep

хм... у меня оба варианта возвращают одно и то же...
т.е.
int t;
for (n = 0; n < 8; n++) {
outb(base, ~(1 << n)); // или outb(base, 1 << n);
t = inb(base + 1) | 0x40;
printk(«0x%x », t);
}

печаетает только 0x7f...

metawishmaster ★★★★★
() автор топика
Ответ на: комментарий от imhotep

ок, хорошо :) и спасибо за то, что направили на путь истинный :D

metawishmaster ★★★★★
() автор топика

Есть два способа читать состояния регистров данных/статуса/управления LPT порта: упомянутый уже ioperm()+inb() (есть готовая утилита: http://parashell.sourceforge.net/). Менее грязный хак заключается в использование api libieee1284 (http://cyberelk.net/tim/software/libieee1284/), например ieee1284_read_data() : http://cyberelk.net/tim/libieee1284/interface/rn02re12.html

anonymous
()
Ответ на: комментарий от anonymous

>Менее грязный хак заключается в использование api libieee1284

Друг - у меня для тебя плохая новость, драйверы устройств это сплошной грязный хак :) потому что это как раз то место где нужно читать/писать порты и регистры. Я кстати тоже сначала не заметил printk :) Для lpt есть надстройки см. linux/parport.h parport_write_data, parport_read_status итд.

imhotep
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.