Avatar billede driis Nybegynder
23. marts 2001 - 10:59 Der er 21 kommentarer og
2 løsninger

Parallel porten - simpel direkte kommunikation

Hvordan kommunikerer jeg i VB  med parallelporten? Jeg har behov for at kunne sende en enkelt byte ud på porten af gangen, og så vente, indtil mit hardware har læst den ene byte, med at sende den næste ud.

Jeg har fået fat på en DLL, inpout32.dll, som skulle kunne gøre det - men den virker ikke i Win2000. Nogen der kender en tilsvarende DLL, som kan gøre det?

Jeg har også fået snuset mig frem til, at API kaldet WriteComm skulle kunne gøre det - men jeg kan ikke finde noget dokumentation af API kaldet.

Andre forslag til at løse problemet modtages _meget_ gerne
Avatar billede microtec Nybegynder
23. marts 2001 - 11:06 #1
driis >> Det er ikke tilladt at lave direkte port-access i Windows NT og Windows-2000.
Det er dog muligt at snyde lidt, så der åbnes for dette. Du skal installere en lille driver til dette.

Du kan f.eks. hente denne http://www.tiepie.nl/download/win32/NTdriver.zip
Den er beregnet til et måleinstrument, som jeg sælger men kan fint bruges til dit formål også.

Efter du har installeret driveren, virker dine port læsninger/skrivninger igen, som under Win-95/98.
Du skal altså ikke have nye DLLér eller andet.
Avatar billede wisen Nybegynder
23. marts 2001 - 11:11 #2
WriteComm er en \"gammel\" 16bit\'s ting, og er ikke inkluderet i Win32 :(
Avatar billede driis Nybegynder
23. marts 2001 - 11:12 #3
microtec>> Jeg prøver lige din driver
Avatar billede microtec Nybegynder
23. marts 2001 - 11:21 #4
Er WriteComm for øvrigt ikke også beregnet til seriel-porten?

Årsagen til at man ikke kan lave direkte port-access i Win NT og 2000 er at Windows her har et lag, som beskytter mod utilsigtet skrivning til/fra hardwaren. Dette sikre at der ikke er f.eks. 2 applicationer der skriver til den samme port.
Man skal selv åbne for skrive/læse retigheder til HW. Det er det den lille driver gør.
Avatar billede driis Nybegynder
23. marts 2001 - 11:36 #5
microtec>> Jeg får stadig Windows-beskyttelses fejl når jeg skriver til porten, selv med din driver installeret.
Avatar billede microtec Nybegynder
23. marts 2001 - 11:50 #6
driis >> Det lyder som om driveren ikke kører.
Har du husket at restarte Windows, så bliver aktiveret?
Har du fulgt den trin-for-trin vejledning, der er beskrevet i ntdriver.txt?

Det vil netop give en Windows-beskyttelses fejl, når du prøver at lave direkte port-access under Win NT eller 2000 uden driver.
Avatar billede driis Nybegynder
23. marts 2001 - 12:23 #7
Ja, jeg har installeret som beskrevet - og jeg har lige forsøgt igen. Er du sikker på, at det virker i Win2K, og ikke kun i WinNT?

Har du evt. andre forslag til, hvordan jeg kan skrive til COM porten, uden at bruge den DLL jeg har fundet (Den er vist nogle år gammel, det kan jo være den, som er problemet, når det skal køre i Win2000 - og jeg har ikke haft mulighed for at teste den under Win98)
Avatar billede microtec Nybegynder
23. marts 2001 - 12:32 #8
driis >> Jeg er 100% sikker på at den også virker under Win-2000. Den følger med et produkt jeg sælger, og der er flere af mine kunder, der benytter Win-2000.

Var det ikke printer-porten vi snakkede om?
Avatar billede microtec Nybegynder
23. marts 2001 - 12:34 #9
Er du helt sikker på at du skriver/læser på printer-portens adresse?
LPT1 ligger på adresse 387 HEX og 3 adresser frem.
Husk det er en HEX-adresse!!!
Avatar billede driis Nybegynder
23. marts 2001 - 12:49 #10
Når jeg udfører dette (f.eks.) får jeg fejlen, også med driveren installeret:

Out &h378, &hAA

Uddrag fra readme-filen til inpout32.dll :
------------------------------------------
Documentation for inpout32.dll

Inpout32 is a DLL that enables direct reading and writing to I/O ports in 32-bit Visual-Basic programs.

How to use inpout32:

1. Copy inpout32.dll to one of these locations: your default Windows directory (usually \\Windows), your Windows system directory (usually \\Windows\\system), or your application\'s working directory.

2. Add inpout32.bas to your Visual-Basic project (File menu, Add File).

3. Use this syntax to write to a port:

  Out PortAddress, ValueToWrite
  Example: Out &h378, &h55

  Use this syntax to read a port:

  ValueRead = Inp(PortAddress)
  Example: ValueRead = Inp(&h378)

(The syntax is identical to QuickBasic\'s Inp and Out).
Avatar billede driis Nybegynder
23. marts 2001 - 12:56 #11
Jeg synes det burde virke; men kan du se en fejl i det jeg gør?
Avatar billede microtec Nybegynder
23. marts 2001 - 12:59 #12
Det forstår jeg ikke. Det ser alt sammen rigtigt ud.

Jeg ville nok afprøve programmet på en PC med Windows-95 eller 98 (uden min driver), for at afgøre om det er DLL-filen eller min Kernel-driver der driller.

Jeg ved med 100% sikkerhed at Kernel-driveren virker under Windows-2000. Det virker lidt som om den ikke er installeret rigtigt.
Avatar billede microtec Nybegynder
23. marts 2001 - 13:02 #13
Under Win NT er der et sted, hvor man kan se hvilke kernel-drivere, der er installeret og om de er aktive.

Desværre er der ikke installeret Win NT eller 2000 på den PC jeg sidder ved lige nu, så jeg kan ikke fortælle nøjagtig hvor det er.
Avatar billede microtec Nybegynder
23. marts 2001 - 13:06 #14
Jeg kommer lige i tanke om at du nok skal ind i din BIOS og sætte printer-porten til SPP-mode (Standard Parallel Port).
Den står sikkert til EPP eller ECP. I Windows-2000 kan det vist også gøres fra windows.
Avatar billede driis Nybegynder
23. marts 2001 - 13:38 #15
Hmm, jeg prøver lige at sætte den til SPP i BIOS.
Avatar billede th Nybegynder
26. marts 2001 - 11:08 #16
Avatar billede microtec Nybegynder
26. marts 2001 - 11:10 #17
th >> men den koster $15
Den kernel-mode driver jeg henviste til er gratis
Avatar billede driis Nybegynder
26. marts 2001 - 11:21 #18
microtec>> Jeg har stadig ikke fået din driver til at virke.
Avatar billede driis Nybegynder
26. marts 2001 - 11:27 #19
th>> Selvom der står, at NTPORT.OCX er shareware, kan jeg ikke få lov at downloade den? Det ville være rart nok at prøve om det virker til mit brug, før man betaler for det...
Avatar billede microtec Nybegynder
26. marts 2001 - 11:30 #20
driis >> Jeg forstår ganske enkelt ikke at du ikke kan få den til at virke. Som sagt leverer jeg den sammen med et færdigt måleinstrument. Der er ingen af mine kunder, som har haft promlemer med den.

Den kernel-mode driver th henviser til, kan også hentes på http://www.uct.on.ca/
Der er lidt mere beskrivelse af den. Jeg kan se den virker på nøjagtig samme måde som den du fik af mig.

Avatar billede driis Nybegynder
26. marts 2001 - 11:45 #21
Når jeg prøver at downloade filen bliver jeg bedt om at indtaste password...
Avatar billede microtec Nybegynder
26. marts 2001 - 11:56 #22
driis >> Hold nu lige op. Jeg har da lige hentet den selv.
Den direkte link til zip-filen er http://uppercanadatechnologies.bizland.com/ntport.zip
Avatar billede driis Nybegynder
26. marts 2001 - 13:13 #23
Nu har jeg fået det til at virke. (Det var min Download manager, der havde fået fine fornemmelser ;-)

Kontrollen virker fint; så den bruger jeg - Det ville selvfølgelig have været bedre med en gratis kontrol, men det kunne tilsyneladende ikke lade sig gøre.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester