Naar aanleiding van het printerpoort artikel op deze site ben ik aan de lsag gegaan.
Ik heb om te beginnen inpout32.dll gebruikt en een programma geschreven in vb6, waarmee ik ledjes aan en uit kon schakelen. Werkt allemaal naar behoren.
Wanneer ik mijn programma afsluit en in windows xp bijv windows verkenner open, dan worden ineens mijn uitgangen van de printerpoort allemaal hoog. Terwijl mijn eigen programmaatje niet eens draait.
Ik wil in de toekomst een robotarm erop aan sluiten, en dan kan ik niet gebruiken dat mijn robotarm meest vreemde capriolen uithaald als ik in windows bezig ben.
Ik ben dus opzoek naar een oplossing hiervoor.
Verder vraag ik me af of ik met de inpout32.dll ook een c++ programma op af kan vuren. Of heb ik dan een andere dll nodig?
Marcel
AVR C tutorial http://expand.xs4all.nl/avr
Dat is een vervelende eigenschap van Windows. De paar oplossing die ik zo zou weten:
- Geen Windows gebruiken, maar bijv. DOS of Linux.
- Een failsafe aansturings protocol gebruiken tussen pc en robotarm. Dat vereist dus wel een protocol interpreter in de robotarm. Moet met een simpele uC (AVR, PIC etc...) te doen zijn.
inpout32.dll is ook te gebruiken in combinatie met C/C++. Zie de code voorbeelden op officiele site van inpout32.dll
Captnoord
mov eax, 0x666
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
Op 27 november 2005 18:55:50 schreef Marcel:
Dat is een vervelende eigenschap van Windows. De paar oplossing die ik zo zou weten:
- Geen Windows gebruiken, maar bijv. DOS of Linux.
- Een failsafe aansturings protocol gebruiken tussen pc en robotarm. Dat vereist dus wel een protocol interpreter in de robotarm. Moet met een simpele uC (AVR, PIC etc...) te doen zijn.
inpout32.dll is ook te gebruiken in combinatie met C/C++. Zie de code voorbeelden op officiele site van inpout32.dll
dos is je veiligste keuz. Linux doet ook dergelijike dingen.
probleem van ene multitasking operating systeem is dat er andere drivers hun poot kunnen komen 'slaan' in je io gebeuren.
vandaar dat onder windows eigenlijk alleen een printerdriver toegang krijgt. die IOport omzielt die beveiliging. als je dergelijke dingen wilt doen moet je zelf een kernel mode driver schrijven die de poort 'lockt' voor andere processen. dan kan dat niet meer. ( ook ioport kan er dan niet meer aan ). dergelijike driver is gene kattepis ...
Windows en Linux zijn beide multitasking. Alleen de manier van M$ is niet echt de handigste... 1 verrotte task kan de rest muurvast zetten.
Capt501
http://pascal.nedlinux.nl Niet tegenspreken, Ik heb altijd gelijk !
Daarom is Windows dan ook bepaald niet multitasking te noemen.
het feit dat er meerde events naar meerdere windows gestuurd kunnen worden maakt een systeem niet multitasking !
het feit dat taken geheel onafhankelijk van elkaar kunnen draaien,
het systeem niet kunnen lamleggen omdat het systeem taken pre-emptive uitvoert maakt het wel een Multitasking systeem.
Wat de vraag van spruce betreft,
waarom haal je de dll weer weg als je de poort kenlijk toch nog nodig hebt.
eventueel hardware matig oplossen mbv een 74ls373 .
Windows blijft idd een schimmig systeem (het is gewoon een rommeltje)
Hang er een uC tussen en stuur het spul gewoon serieel aan. Als je dat via je eigen protocolletje doet met wat checks erop, is de kans vrijwel 0 dat iets anders wat data naar buiten gaan spugen je armpje bestuurt. Zou zelfs onder winshit moeten werken.
tomtenberge
The part that blows up first is typically the most expensive on in the design.(en dat is niet het enige)
helemaal mee eens daarom heb ik ook nog dos op mijn laptop staan,
parrallelle
poort is ook makkelijk aan te sturen via qbasic
en ik raad je aan om een pic in je robot arm te zetten,
want dan kun je veel meer opdrachten geven zonder 5 ltp poorten nodig te hebben
Boudie
Vervangen DOOR.
Op 27 november 2005 19:23:14 schreef free_electron:
[...]
dos is je veiligste keuz. Linux doet ook dergelijike dingen.
Beslist NIET. Linux rommelt niet met je parport.
probleem van ene multitasking operating systeem is dat er andere drivers hun poot kunnen komen 'slaan' in je io gebeuren.
vandaar dat onder windows eigenlijk alleen een printerdriver toegang krijgt. die IOport omzielt die beveiliging.
Een *echt* multitasking systeem heeft daar geen last van...
als je dergelijke dingen wilt doen moet je zelf een kernel mode driver schrijven die de poort 'lockt' voor andere processen. dan kan dat niet meer. ( ook ioport kan er dan niet meer aan ). dergelijike driver is gene kattepis ...
Standaard beschikbaar onder Linux: ppdev
Daarmee "claim" je een poort (PPCLAIM). No way dat een ander proces dan nog aan je poort komt zolang JOUW proces de poort nog niet heeft vrijgegeven (PPRELEASE).
Ideaal dus voor robotbesturing.
Probeer eens op een oude Pentium Linux te installeren. Gratis te verkrijgen in diverse smaken...
mts plus
Life is waiting!
met win98 heb je er ook geen last van.
Alleen even bij het opstarten.
Wat is om te kijken of er een printer aanhangt maar daarna niet meer
tomtenberge
The part that blows up first is typically the most expensive on in the design.(en dat is niet het enige)
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
Op 27 november 2005 22:50:01 schreef Boudie:
[...]
Beslist NIET. Linux rommelt niet met je parport.[...]
Een *echt* multitasking systeem heeft daar geen last van...
Linux rommelt ook met de par port. start maar eens een printjob op terwijl een ander process met de poort rammelt. je zal wel zien hoe rap je data corruptie krijgt.
zolang je de poort niet LOCKT voor andere processen blijf je vodden hebben. Linux heeft ppdev ,en windows heeft kernel mode drivers.
en trouwens een printerpoort is voor PRINTERS, mocht je het nog niet weten.
als je ze wil gebruiken voor I/O zet ze dan in ECP of EPP mode en open een device channel, dan ben je van die zever ook vanaf. je kan dan meerdere peripherie op 1 poort hebben en dat komt niet in elkaars vaarwater.
en windows heeft misschien veel haken en ogen maar linux heeft dat ook en de support is NUL. vind maar eens een drver voor je peripherie, voor de 4/5 van alles wat bestaat zijn geen drivers (of halve) . Probeer maar eens een bluetooth link op te zetten met je pda vanonder linux. Ha!
If linux was an airline we would all be walking out on the runway carrying various parts of an airplane and fighting amongst each other about wat plane to build, what color it should be instead of actually flying the damn thing.
en voor ik weer van favoritisme beschuldgd word : linux is een fantastisch project maar het is verzand omdat de ontwikkelaars onderling niet overeenkomen wat ze willen. der zijn veel te veel varianten en geneen is compatibel met een ander. Twordt tijd dat Torvalds eens begint oorvijgen uit te delen en de boel terug rechttrekt. (heeft ie trouwens al eens mee gedreigd)
Das ook de reden waarom veel hardware fabrikanten het niet meer willen supporteren. wij hebben lang linux drivers gemaakt voor onze modems en we zijn ermee gestopt. de manpower die daarvoor op de duur nodig was was 2 keer zoveel als om alle winows versies samen te onderhouden. Dit werkt alleen op die kernel, en dat werkt alleen daarop met die en die patch . man wat een rommel. zolang ze geen lijn trekken en een API definieren waar niks mag uit verwijderd worden lukt zoiets niet.
zo mogen ook eens beginnen de user-friendlyness opdrijven. voor de helft van de dingen moet je een guru-programmeur zijn en de boel zelf manueel hercompileren om er iets in geinstalleerd te krijgen. geef mij dan maar de microsoft rommel. je klikt op setup.exe en in 99.99% van de gevallen ist geklonken.
[Bericht gewijzigd door free_electron op ]