Frage zum Write Befehl

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

Post Reply
poio
Posts: 5
Joined: Mon Nov 28, 2005 10:56 am

Frage zum Write Befehl

Post by poio »

hi
ich habe ein problem mit dem write befehl des io warrior 40

hier mein quellcode

Code: Select all

		report.ReportID = 0;
		report.Value		= 0xFE000000;

		res = IowKitWrite (ioHandle, 0, (PCHAR) &report, sizeof(report));

		if ( res != sizeof(report) )
		{
			cout << "Fehler beim Schreiben!" << endl;
		}
mein problem ist jetzt dass ich zb den allerersten Pin auf Port 0 ansprechen muss (auf 0 setzen)
ich nehme an dass das mit dem report.Value geht oder? aber wie ist das mit dieser hexkombination? müsste die nicht 32 Stellen haben? (4Ports mit je 8 Pins) oder wie funktioniert das genau?

bitte um hilfe
Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

Na report.Value hat doch 32 Bit.
report.Value und report.Bytes[0] bis report.Bytes[3] sind einander ueberlagert.
0xFE000000 bedeutet das man Port 3 aka report.Bytes[3] auf FE setzt. Die anderen Ports auf 0. Das ist natuerlich nur fuer einen IOW40 brauchbar.
poio
Posts: 5
Joined: Mon Nov 28, 2005 10:56 am

Post by poio »

danke schonmal

d.h wenn ich das richtig verstanden ist bei report.Value=0xFE000000
die beiden rot makierten 00 für den port 0 beim io warrior 40 zuständig

d.h wenn ich den allerersten pin auf port 0 ansprechen will müsste ich

report.Value=0x00000001; schreiben und dann


res = IowKitWrite (ioHandle, 0, (PCHAR) &report, sizeof(report));

if ( res != sizeof(report) )
{
cout << "Fehler beim Schreiben!" << endl;
}

schreiben oder? würde das so funktionieren?
Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

Ja und nein. Ja es ist das richtige Bit, aber man spricht immer alle Pins an und daher muss man sich immer um alle Bits gleichzeitig kuemmern.
Post Reply