Re: [LINUX:441] Paralel Port

O.Volkan HATEM (volkan@tel-soft.com)
Fri, 28 Aug 1998 09:34:23 +0300 (EET DST)


Daha mantIklI olur mu bilmiyorum ama ikinci yontem:
(koda hic guvenme, denemedim, hatta eksikleri de
vardir, man sayfalarina bakIver)

void writeStr(buf, size)
unsigned char *buf;
int size;
{
int i=0;
int err=0;

do{
if(outb(buf[i])){ /* outb() nin return degerleri
* nedir, bu tur bir ifade icin
* uygun mudur bilmiyorum. elimin
* altInda man page yok :(
*/
i++;
else
err++
}while((i < size)&&(err < 5));
}

main(argc, argv)
...
...

unsigned char *muf;
muf = (unsigned char *)malloc(size);
bcopy("driver stringi her ne ise...", muf, size);
writeStr(muf, size);
...
}

byte order ile ilgili varsayIma da dikkat etmek gerekli.
outb() paralel porta bir byte yazar. Bunun word versiyonu
da olmalI (elimin altInda bi linux olsaydi denerdim ya...)

eger user space'te calistirilacaksa ioperm() ve iopl()
kullanman gerekecek. Bunun yaninda derleme sirasinda
-O veya -O2 kullan ki ld problem cikarmasin. Cunku outb()
bir makro ve ancak optimizasyon sirasinda karsilik gelen
asm koduyla degistiriliyor.

kolay gele, umarim ise yarar.

--
-volkan

On Thu, 27 Aug 1998, erdem gunay wrote:

> > Merhabalar, > Slackware 3.5 de Comtec firmasinin Bravo 4 modelli bar kod > printerini kullanmak istiyorum. Bunun icin paralel portu kullaniyorum ve > printerdan ciktiyi alabiliyorum. ancak ufak bir sorunum var, bu konuda > bilgisi veya gorusu olanlar cevap verirse memnun olurum. > > sorunum su: > > #define PORT "/dev/lpt0" > > int fd = open (PORT,O_RDWR) ; > write (fd,"! 0 200 200 ....... bar kod bilgisi iceren string") ; > close (fd) ; > > > write edip bar kodu aldiktan sonra close (fd) ; ile portu kapatamiyorum. > portu kaptmanin veya en basindan porta bilgi gondermenin daha mantikli bir > yolu var mi acaba ???? > > -Erdem. > >