PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : lpt ansteuern mit c stürzt ab



Redlight
18.02.2007, 14:31
Ich kann den lpt erfolgreich mit meinem windows 2000 und meine 2. windows xp maschine ansteuern. Bei meiner 1. windows xp maschine bricht das programm immer ab.
(prog.exe hat ein problem festgestell und mus deshalb beendet werden)
so in dieser art. Ich habe nichts am lpt angeschlossen. Wisst ihr vielieicht was das problem sein kann. Ich hab mal früher den LPT_Driver.sys draufgeladen und wieder gelöscht. könnte sein das etwas noch in der regedit geblieben ist. Könnt ihr mir da helfen

p_mork
18.02.2007, 15:43
Hallo Redlight,

poste mal den Quellcode von Deinem Programm bzw. der LPT-Ansteuerung.
Kann es vliellcht sein, dass die LPT-Adresse bei Deiner "1. windows xp machine" nicht die gleiche ist und Dein Programm versucht, etwas auszulesen, was es nicht gibt?

MfG Mark

Redlight
18.02.2007, 17:31
Erlich gesagt habe ich den Code nicht selber geschrieben. Habe ihn ihm internet gefunden. Er läuft aber bei den anderen maschinen. Die pins hab ich auch ausgemessen.


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


typedef short _stdcall (*inpfuncPtr)(short portaddr);
typedef void _stdcall (*oupfuncPtr)(short portaddr, short datum);

int main(void)
{
HINSTANCE hLib;
inpfuncPtr inp32;
oupfuncPtr oup32;

short x;
int i;

hLib = LoadLibrary("inpout32.dll");

if (hLib == NULL) {
printf("LoadLibrary Failed.\n");
return -1;
}


inp32 = (inpfuncPtr) GetProcAddress(hLib, "Inp32");

if (inp32 == NULL) {
printf("GetProcAddress for Inp32 Failed.\n");
return -1;
}


oup32 = (oupfuncPtr) GetProcAddress(hLib, "Out32");

if (oup32 == NULL) {
printf("GetProcAddress for Oup32 Failed.\n");
return -1;
}



for (i=0x378; (i<0x380); i++) {

x = (inp32)(i);

printf("port read (%04X)= %04X\n",i,x);
}



i=0x378;
x=0x77;

(oup32)(i,x);

printf("port write to 0x%X, datum=0x%2X\n" ,i ,x);

x = (inp32)(i);
printf("port read (%04X)= %04X\n",i,x);


i=0x378;
x=0xAA;

(oup32)(i,x);

printf("port write to 0x%X, datum=0x%2X\n" ,i ,x);

x = (inp32)(i);
printf("port read (%04X)= %04X\n",i,x);




FreeLibrary(hLib);
return 0;
}

Blackbird
19.02.2007, 09:18
die inpout32.dll muß im system-directory vorhanden sein.

Blackbird