Hej Thomas
Dette problem er ligeledes i arbejde sammenhæng.
Jeg arbejder med DVB og har allerede programmeret interfacet til hardwaren.
Problemet er selfølgelig bare _outp og _inp kun virker i win98 o.lign. Jeg
havde håbet
at Windows MFC havde prefabrikerede classer hvormed man er istand til at
benytte porten
når den er ledig. Jeg kontakter en FPGA hvor jeg har programmeret en ECP
protokol.
Tak for den velbeskrevede hjælp.
Mvh, EWJ
"Thomas Lykkeberg" <thomasDOTlykkeberg@privatDOTdk> wrote in message
news:os9h0u0favqfv09e4slgvd34hishiagqhg@4ax.com...
> On Fri, 30 Nov 2001 16:52:30 GMT, 1 wrote:
>
> >Hejsa!!!
> >
> >Jeg prøver at skrive til printerporten, jeg har hidtidig brugt inport
> >og outport.
> >
> >Nu bruger jeg Visual C++ hvor jeg programmere MFC programmer.
> >Printerporten skal opsættes til ECP mode og programmet skal kunne
> >bruges i win98, win2000, XP og lign.
> >
> >Er der nogle gode råd???
> >
> >Mvh,
> >EWJ
> Det bliver nemt nok med Win98, men mht. Win2K og XP, tjaaee, så er
> sagen straks en anden. Her er LPT porten (adr: 0x278.., 0x378.. osv)
> beskyttet af operativsystemet. Det kan ikke lade sig gøre at skrive
> læse direkte vha. _inp() og _outp() kommandoerne, når assembler
> instruktionen IN eller OUT bliver udført, vil processoren genererer en
> exception (interrupt), hvor det bliver kontrolleret om der er
> rettigheder til at tilgå netop den valgte resource. Hvis dette ikke er
> tilfældet, vil en fatal exception blive generet, og så kan man jo
> forstille sig resten. Der er dog et par muligheder.
>
> 1) Lave en stump Kernel Mode kode (brug DDK (Device Drivers Kit)), som
> "åbner" for tilladelse til at skrive læse til/fra ovenstående porte.
> Denne løsning er et RIGTIGT HACK og er ikke noget du skal basere noget
> seriøst på. En sådan stump kode kan man med garanti finde ved en
> søgning på nettet, eller ved at kigge i grupper som indeholder noget
> ned nt, wdm eller kernel.
>
> 2) Købe en Kernel Mode driver som giver dig adgang til portene. Der
> findes et hav af disse på nettet,start med
>
http://www.lvr.com/parport.htm, her er der en masse godt info. Ikke
> alle drivere er lige godt lavet, nogle baserer sig bemlig direkte på
> ovenstående hack.
>
> 3) Lave din egen Kernel Mode driver. Det er nu ikke så nemt hvis du
> ikke har lavet Kernel Mode kode før, men køb en bog om emnet (WDM
> Drivers el. lign.) og klø på. "Intet er umuligt for den der bærer
> viljen i hjertet"
>
> Jeg er selv i gang med et lille projekt på mit arbejde hvor jeg laver
> en WDM driver, som tilbyder et direkte interface ned til printer
> porten. Den nye driver struktur i Win2000 og XP tilbyder nemlig dette,
> idet Microsoft har opdelt selve printer driveren i 3 dele. Den
> nederste del styrer selve tilgangen til parallelport chip'en
> (parallel.sys), samt distribuerer resourcerne til den driver som måtte
> ligge oven på (parport.sys i normal printer sammenhænge). Helt øverst
> ligger så selve printer driveren til den type printer som er
> tilsluttet systemet. Det man så kan, er at bede parallel.sys driveren
> om ene-ret til parallelport resourcerne (ikke noget problem hvis
> printeren ikke bliver brugt), og dernæst "skyde" sin egen WDM driver
> ind, og lave et IOCTL interface (Kernel Mode driver term) op til en
> evt. User Mode applikation. Alt dette har ikke en pind med C at gøre,
> men ofte programmerer man dog WDM drivere i ren C.
>
> God fornøjelse...
>
> Thomas