Avatar billede ultik Nybegynder
19. marts 2001 - 19:47 Der er 7 kommentarer og
1 løsning

Sikring af porten ?

Jeg har for nyligt lavet et projekt med styring af en ydre enhed igennem parallelporten, og p.g.a. af windows\' dårlige vane med konstant at tænde + slukke for porten, var vi nødt til at lave det i dos...... ER DER IKKE ET API KALD ???

jeg VIL kunne lukke porten af så KUN jeg har adgang, og så den ikke bliver tændt/slukket konstant.....

Plz help !

Med venlig hilsen
Ulrik Jensen
ulrik@qcom.dk
Avatar billede microtec Nybegynder
20. marts 2001 - 11:53 #1
Du kan ikke undgå at Windows print-manager vil prøve at styre porten også. Den tror at der sidder en printer på den ;o)

Du kan evt. prøve at gå ind i Hardware-profil og fjerne LPT1, så Windows ikke kender printer-porten. Jeg tror dog at Windows opdager den igen næste gang du genstarter.

Du bør nok overveje at købe et rigtig port-kort til styringsformål. F.eks. med en 8255-portkreds. De koster 200-400 Kr.
Du få herved også flere porte at arbejde med.
Avatar billede ultik Nybegynder
20. marts 2001 - 19:34 #2
hmm jaa, men det er til skoleprojekter så jeg er ikke ude efter at investere.......

well, lader den lige køre et par dage ok ? så accepterer jeg hvis ingen andre har bedre forslag
Avatar billede microtec Nybegynder
20. marts 2001 - 20:04 #3
Hvis det er til undervisnings-brug, er der vel intet i vejn med at anvende DOS.
Du opnær også en langt hurtigere skrivning/læsning af porten.

Et anden problem, vil blive hvis du skifter til Windows-NT eller Windows-2000. Disse tillader ikke at du skriver direkte til en hardware-port. Der er man nød til at anvende en speciel driver. Det er lidt \"langhårdet\" og vist ikke egnet til et skoleprojekt.

Held og lykke med dit :o)
Avatar billede ultik Nybegynder
20. marts 2001 - 23:33 #4
jooo, det er ikke til at undervise med, det er til et skoleprojekt JEG skal lave, og mange senere i hope, det er fordi at jeg går på HTX, og kan derfor få EL, hvor vi arbejder med elektronik, og slutter den til pc\'en, så vi kan styre den derfra ( en stepmotor bil lige nu ), og jeg har brugt RIGTIG længe på at opbygge en grafisk brugerflade i DOS, selvfølgelig objekt-orienteret, så jeg kan genbruge, men stadig en fordel hvis vi kunne lave til windows og bare bruge en VCL eller MFC.....
Avatar billede microtec Nybegynder
20. marts 2001 - 23:58 #5
Spændende projekt du har gang i :o)
Jeg er selv elektronik-mand og arbejder med elektronik og hardware-nær software til daglig.
Jeg tror du vil få andre problemer ved at styre en stepmotor direkte fra et Windows-program via et port-kort (eller printerporten). Windows er et operativsystem, som er \"multi-tasking\". Dvs. at der kan afvikles flere programme samtidig, som så deles om processorens arbejdskraft. Dette bevirker at du aldrig kan vide hvor lange pulserne til din stepmotor bliver. Det ene øjeblik er pulserne 10mS fordi processoren kun skal afvikle dit program. Det næste øjeblik bliver pulserne 10 sekunder fordi processoren lige skal udføre en kompliceret beregning i f.eks. Excel (overdriver lidt. Det er godt for forståelsen).

Dette problem har du ikke i DOS, som jo kun afvikler et enkelt program. Det er derfor DOS stadig er udbredt til styringsformål.
Avatar billede soepro Nybegynder
21. marts 2001 - 10:29 #6
Realtidssystemer som du beskriver her laves slet ikke i Windows men f.eks. i VxWORKS fra Wind-river. Det er et rigtigt realtids operativ system, der sikrer at du får præcis den tid du beder om.

Microtec >> Du har helt ret i dine betragtninger omkring Windows, men ... hvis der nu ikke kører f.eks. et Excel regnearksprogram (det er i øvrigt oftest kommunikationsprogrammer, dvs. netværk og modem, som er det største problem - netop fordi de også snakker realtime med I/O porte) så vil det ikke i praksis være et problem.

Hvis du udnytter Windows API\'erne til at \"Sleep\"e en process, skulle den også være præcis inden for 1 ms. Jeg har selv lavet noget styring (vha. inp og outp) som kører under Windows og skal nå at fange et signal i hver cycklus, og det har indtil videre ikke været noget praktisk problem. Oftest kombinerer man PC\'ere og PLC\'er for at løse lige præcis denne type problem (PLC\'er er \"ren\" elektronik uden operativsystem, så de ER realtid), ved at man simpelthen lader fra PC*eren fortæller PLC\'eren at stepmotoren skal køre f.eks. 10 steps eller indtil der kommer signal fra en føler (f.eks. fotocelle) og derefter sætte et signal til PC\'eren, som den så kan læse næste gang den har tid. Hvis PC\'eren når at læse signalet, kan den igen fortælle PLC\'eren hvad der skal ske, og processen vil så kunne fortsætte uden afbrydelse. Hvis derimod PC\'eren ikke når at læse, ja så stopper processen \"bare\", og bliver så sat i gang igen næste gang PC\'eren har fortalt hvad der skal ske.

På ovennævnte måde bliver det rent elektrisk at realtiden bliver styret - og PC\'eren skal så blot tage stilling til i hvilken rækkefølge tingene skal ske.
Avatar billede microtec Nybegynder
21. marts 2001 - 10:57 #7
soepro >> Jeg forstår ikke hvordan du vil kunne opnå en nøjagtighed på 1mS. Windows kører med et timer-tick på 18Hz => Mindste opløsning 55,5mS
Dette er den eneste hardware genererede timing, der er i en PC. Alle andre tider, herunder \"Sleep\" er lavet med software-loops, som har de problemer jeg omtaler.

Eksemplet med Excel, var for at forklare problemstillingen. Du har ret i at andre programmer udgør større problemer.

Løsningen med en PLC (eller front-end microcontroller) er den \"rigtige\" løsning til et realtidssystem. Det er bare skudt langt over målet til et HTX skoleprojekt ;o)
Avatar billede ultik Nybegynder
22. marts 2001 - 05:35 #8
om det er et realtids-operativ system er mig ligegyldigt, ihvertfald i det projekt jeg arbejder på nu, og derfor er min egentlige intention også bare at registrere mit program som en slags herre over porten, så windows ikke tillader andre programmer at røre porten, og ikke slukker / tænder den mens mit program står og venter på at dens tråd for \"fokus\" af windows igen, så længe der ikke sker noget med porten er det mig sådant set ligegyldigt om jeg venter 10 ms eller om jeg venter 10 sekunder :)....

Men jeg går ikke udfra at dette er muligt så, og må jeg så bare arbejde videre med dos...... ellers tak for hjælpen
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