Ik probeer nu reeds geruime tijd om met een simpel C++ programma mijn parallelle poort aan te sturen onder dos. Het lukt me echter niet om mijn data bits laag te zetten.

Ik gebruik de instructie outportb. Als ik mijn programma run, krijg ik geen foutmeldingen.

Op het internet vind je een hele boel info over deze poorten waar men verschillende modes vermeld (ECP, CPP,...). Kan mijn probleem hier liggen en hoe moet ik dit eventueel oplossen?

Ik heb al van alles geprobeerd maar geen resultaat.

Wat kan ik nog doen????

Op 14 mei 2003 20:43:13 schreef Glenn V G:
Ik probeer nu reeds geruime tijd om met een simpel C++ programma mijn parallelle poort aan te sturen onder dos. Het lukt me echter niet om mijn data bits laag te zetten.

Ik gebruik de instructie outportb. Als ik mijn programma run, krijg ik geen foutmeldingen.

Ik heb al van alles geprobeerd maar geen resultaat.

Wat kan ik nog doen????

Ik heb nooit zo'n problemen met de parallelle poort...
Post is een stuk van je code die die poort moet besturen. En met welke compiler je dat compileert. En gebruik je 'echt' DOS of een een DOS-prompt in WindowsXYZ?

Jeroen.

Hi, alvast bedankt voor je reactie.

Volgend test programma heb ik gebruikt:

#include <conio.h>
#include <stdio.h>
#include <dos.h>

void main (void)
{clrscr ();
outportb (0x378,0x00);
getch ();
outportb (0x378,0xff);
getch ();
}

Verder heb ik al gecompileerd met borlandc en met een compiler die onder dos werkt.

Omdat ik vernomen heb dat windows het besturen van je poort beperkt, heb ik dit programma proberen te runnen in een dos venster in windows 98 en heb ik ook de computer opgestart in dos en het dan laten runnen. Het programma geeft geen foutmelding, maar wanneer ik de uitgang meet met een multimeter of ik sluit er een circuitje op aan een ledje te laten branden, blijft de uitgang 5V en blijft het ledje branden.

Hopelijk weet iemand welke fout ik maak.

Hoi,
Ik heb de code even snel bekeken en zag geen heel gekke dingen. Ik zal van het weekend even wat beter kijken want ik ben nu wel heel druk op het werk.
To be continued...

Hier dus het vervolg...
Ik heb even een heel klein programmatje in elkaar gezet wat bij mij in ieder geval werkt:


#include <conio.h>
#include <stdio.h>
#include <dos.h>
 
#define PORTADDRESS 0x378
 
#define DATA        PORTADDRESS+0
#define STATUS      PORTADDRESS+1
#define CONTROL     PORTADDRESS+2
 
void main (void)
{
	clrscr ();
 
	/* Maak de lpt-poort een output port */
	outportb(CONTROL, inportb(CONTROL) & 0xDF);
 	
	/* Alle databits low (0) */
	outportb(DATA,0x00);
	getch ();
 
	/* Alle databits High (1) */
	outportb(DATA,0xFF);
	getch ();
}

Ik heb dit gecompileerd met BorlandC 3.1, met de C-compiler, dus niet de C++ compiler. (Gewoon je bestandje de extentie .C geven ipc .CPP) Ik weet niet of dat voor deze code verschil maakt maar in sommige gevallen zorgt het compiler met de C++ compiler, en het linken met de C++ libraries voor rare situaties.

Wat je verder ziet is dat ik eigenlijk maar 1 regel code heb toegevoegd, en dat is de regel waarin bit 5 van het CONTROL register wordt gewist. Hiermee weet je zeker dat poort in 'output mode' staat.

Bij mij werkt dit gewoon (in een DOS box in Win98), dus ik hoop dat het bij jou ook werkt.

Jeroen

[edit]
Ik heb nog even in mijn BIOS gekeken, ik heb mijn LPT-poort ingesteld als BI-DIRECTIONAL. Bij 'OUTPUT-ONLY' of SPP werkt het ook. Of het ook werkt in ECP/EPP mode weet ik niet.
[/edit]

Bedankt voor je hulp Jeroen. Probleem opgelost. ten einde raad heb ik al je voorstellen uitgeprobeerd en nog werkte het niet. Ik zat dus de hele tijd op de verkeerde pin te meten. En ik was nog zo zeker dat dit de juiste was. Dit ben ik te weten gekomen met een heel simpel programmatje nl: SPP20.exe. Want bij andere test programmatjes kreeg ik telkens dat een of ander bestand niet werd gevonden.

Aangazien ik dit probleem niet al te vaak meer wil tegenkomen, een andere (zo mogelijk nog idiotere) vraag. Wat zijn zoal de mogelijk heden wanneer je kleine electronische schakelingetjes wil solderen (niet op een printplaatje want dat kan ik niet etsen of hoe men het ookal noemt). Of kan je printplaatjes tegen een schappelijke prijs laten maken? Ik ben op dit vlak dus een echte leek maar het interessert me wel erg.

[Bericht gewijzigd door Glenn V G op ]

Hoi,
Aan de verkeerde pin meten hebben we allemaal wel eens gedaan...

Op 27 mei 2003 19:36:50 schreef Glenn V G:
Wat zijn zoal de mogelijk heden wanneer je kleine electronische schakelingetjes wil solderen (niet op een printplaatje want dat kan ik niet etsen of hoe men het ookal noemt).

Als je simpele schakelingen wil maken kan je die solderen op 'gaatjesboard' http://www.ace-systems.nl/Menu/Electronica/Printplaat/ECS1.htm
Hierop kan je je onderdelen solderen, en de pootjes met draadjes verbinden.

Printplaten laten maken kan ook, maar is, zeker bij kleine aantallen, veel duurder dan de bovengenoemde methode.

Suc6, Jeroen.

is het niet verstandiger om een breadboard te gebruiken? erg makkelijk voor testdoeleinden.