LINUX.ORG.RU

draiver dlia izvlecenija dannih iz LPT porta


0

0

Esli kto znaet kak iz LPT porta so vtoroj nogi citat dannie, napisite. Nuzna programma dlia draivera i prikladnaja programma. Citat zelatelno s pomosiu inb() funkcii. Dopustim dlia vihoda dannih na LPt 2 nogu v draivere nado pisat: ssize_t lab3_write(struct file *filp, const char *buf, size_t count, loff_t *f_pos) { ssize_t retval = 0; unsigned char out = 0x00; retval = copy_from_user(&out, buf, 1); if(retval < 0) return retval; outb(out, dev->base); wmb(); return count; }

a v prikladnoj proge:

int main() { int fd; if((fd = open("/dev/lab3", O_WRONLY)) < 0) { printf("error \n"); return -1; } int j = 0, i = 0; unsigned char out = 0x00; for(i = 1; i < 500; i++) { if (j == 0) { j = 1; out = 0x01; } else { j = 0; out = 0x00; } if((write(fd, &out, sizeof(unsigned char))) < 0) { printf("Error1 \n"); return -1; } usleep (20000); } close(fd); return (0); }

Tak vots vihodom vsio poniatno, a kak s cteniem? Kuda funkcija inb() zapisivaet rezultat, kak iznego vibrat dannie imenno 2 nogi LPT porta, i kak polucit dannie v prikladnoj programme? Esli kto znaet, ocen prosu otvetit, ocen nado! Spasibo!

Какой режим у порта? EPP ECP? ByteMode? что к порту прикручено? Есть документ The Linux 2.4 Parallel Port Subsystem, там можно почитеть. А можно на это забить, если девайс пристёгнут свой, простой, не надо делить порт между несколькими устройствами, то мона и прям из программулины данные получать.

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

Для чтения из ЕРР порта надо читать байт по смещению 4. Только надо помнить что данные прочитаются только при корректном стробировании.

Вообще то это можно прочитать в любой книжке по переферийным устройствам, в том числе и в I-nete.

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