PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Paralelle Schnittstelle unter Win7 x64 ansteuern



nico2506
01.04.2013, 23:00
Hallo,

ich suche schon die ganze Zeit, wie man die paralelle Schnittstelle (also den alten Druckerport) unter Windows7 mit 64bit anteuern kann. Also am besten einfach so ein kleines Programm mit Button oder sowas, wo man die Ausgänge einzeln an bzw. ausschalten kann. Will damit ein paar Schaltungen aufbauen. Dies, das, mal sehen was mir einfällt. :D

Wie ja bekannt ist, gibt es unter Win7 keinen vorinstallierten Treiber dafür und irgendwie nimmt der Treiber die ich irgendwo runterlade und starte, einfüge oder sonst was nicht an.
Meine nächste Idee war, einfach über WM Ware ein altes OS laufen zu lassen, weil es ja damit eig. gehen müsste. Leider wollen die Win89 und die WinXPnicht so ganz (warum auch immer).

Wie bekomm ich das jetzt am schlausten geregelt? Gibt es nicht auch USB <-> LPT Adapter? Und könnte man damit die Ports einzeln steuern?

Oder gibt es noch andere kostenlose (nicht mehr als ein Paar €) Lösungen, wie man einfach Ausgänge per PC steuern kann? Irgendwas mit USB und paar IC´s oder so muss es doch geben.

Schonmal vielen Dank für eure Antworten. :D

Gruß
nico2506

Michael
02.04.2013, 12:53
seriell über USB-RS232 und daran einen Mikrocontroller?

Gruß, Michael

robin
02.04.2013, 13:08
USB-LPT Adapter sind meist virtuelle Drucker und keine frei ansprechbaren LPT-Ports.
Das einfachste dürfte wirklich ein USB-Serial Wandler + µC sein. Bzw. FT232 im FIFO mode, hab damit aber noch nicht gearbeitet.

robocat
02.04.2013, 14:48
Es würde mich auch interessieren, ob das nicht doch irgendwie hinzukriegen ist.
http://www.highrez.co.uk/Downloads/InpOut32/
Damit sollte "eigentlich" was zu machen sein, etwa so (quick and dirty):

//------------------------------------------
// direct parallel I/O using Inpout32.dll
// compile with minGW with:
// path $PATH
// g++ -mwindows -static-libgcc -static-libstdc++ LPT_inpout.cpp -o LPT_input.exe
//
// inpout32.dll muss zur laufzeit im selben verzeichnis liegen wie das executable!
//------------------------------------------

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

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{

typedef UINT (CALLBACK* LPFNDLLFUNC1)(INT,INT);
typedef UINT (CALLBACK* LPFNDLLFUNC2)(INT); // fuer Input, hier nicht verwendet
HINSTANCE hDLL;
LPFNDLLFUNC1 Output;
LPFNDLLFUNC2 Input; // fuer Input, hier nicht verwendet


// wichtig: hier LPT Adresse anpassen!
INT Addr=0xEC00;


hDLL = LoadLibrary("Inpout32");
if (hDLL != NULL)
{
Output = (LPFNDLLFUNC1)GetProcAddress(hDLL,"Out32");
Input = (LPFNDLLFUNC2)GetProcAddress(hDLL,"Inp32"); // fuer Input, hier nicht verwendet
if (!Output || !Input)
{
MessageBox(NULL,"Problem!","Problem!",MB_OK); // Problem!
exit(1);
}
}

int i=atoi(szCmdLine);
/*
char bla[255];
sprintf(bla,"ist %d",i);

MessageBox(NULL,bla,"bla",MB_OK);
*/

Output(Addr, i);

// fertig
return 0;
}

Ich habe das mal kompiliert und könnte das Executable zusammen mit der inpout32.dll zur Verfügung stellen, kriege es aber hier nicht als Anhang rein (wie geht das?).
Testen kann ich es selber nicht, denn ich habe zwar ein 64bit Windows7, aber keinen LPT mehr.

Grüße von der Katze

Edit:
Zur Bedienung, es wird einfach LPT_inpout.exe BYTE ausgeführt, wobei BYTE eine Dezimalzahl von 0-255 sein kann, das ist binär ja 00000000 bis 11111111, und damit werden die Ausgangsports des LPT dann geschaltet. Wichtig ist, im Code die richtige Adresse des Ports anzugeben, man kann die in der Systemsteuerung herausfinden.

dieter.hempel
02.04.2013, 18:19
http://www-user.tu-chemnitz.de/~heha/bastelecke/Rund%20um%20den%20PC/USB2LPT/index.html.de
vieleicht ist es das was du suchst