-
Hallo kleine Frage und zwar möchte ich ganz einfach über einen Button in C++ mit dem Builder 5 einen Port ausgang ansprechen was muss ich eigentlich bei der Deklaration beachten ich habs satt anfänger zu sein und die oberen aussagen haben mir nur zum Teil geholfen.
-
Hallo habe diesen Treiber von http://www.b-kainka.de/portnt.htm "Inpout32.dll" wie beschrieben (Just copy the Inpout32.dll to "system32" directory and run the program.") in meinen System32 Ordner Kopiert Leider erkennt mein C++ programm es nicht bekomme diese Fehlermeldung
----E2209 include Datei "inpout32.cpp" kann nicht geöffnet werden------
#include <vcl.h>
#pragma hdrstop
#include "inpout32.cpp"
#include "Ulpt.h
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
Habe das im Kopf geschrieben.Benutze den c++ Borland Builder 5
kann mir einer weiterhelfen??
-
hallo
wichtig ist das du weißt das man unter win xp nicht mehr so einfach die schnittstellen ansprechen kann, dafür brauchst du einen treiber der dir die schnittstellen öffnet.
unter win 98ist das kein problem
zu den button das ist eigendlich nicht sehr schwer
Code:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <conio.h>
#define Par_Sst 0x378
#define LPT1 0x378
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//==============================================
void outp (unsigned int portadr, unsigned char value)
{
_asm mov edx,portadr
_asm mov al, value
_asm out dx,al
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
outp(Par_Sst,7);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
outp(Par_Sst,0);
}
//---------------------------------------------------------------------------
So mit dem button1 kannst du die ersten 4 pins auf 1 setzen und mit den button2 kannst du sie wieder auf 0 setzen
outp(Par_Sst,0); bed: alle 0
outp(Par_Sst,1); bed: 1. pin 1
outp(Par_Sst,2); bed: 2. pin 1
outp(Par_Sst,3); bed: 1. und 2. pin 1
outp(Par_Sst,4); bed: 3. pin 1
.
.
.
ich hoffe ich konnte dir weiterhelfen
ich übernehmme aber keine gewehr über den quelltext da ich ihn von meinen anderen pc (ohne lan :( ) abgetippt habe, sollte er nicht funktionieren oder wenn du noch fragen hast kannst du bescheid sagen
-
hi viellen dank für den wirklich hilfreichen Text mir fehlt nur ein geeigneter Treiber den ich so benutzen kann oder ist das der den ich habe?
Gruss und danke :-)
-
hallo
schön das ich dir helfen konnte
was für ein betriebssystem benutzt du den
(benutze eigendlich keine treiber, weil ich einen alten rechner zum testen benutze. du kannst nähmlich in schlimsten fall deine hardware kurzschließen)
-
hi ich benutze Windows XP da muss ich einen Treiber benutzen um die Hardware ansprechen zu können hab ich gelesen da alles geblockt wird ohne dieses.
-
ja leider
http://www.b-kainka.de/portnt.htm
freeport solltest du runterladen, es ist ein kleines programm was du im hintergrund laufen läst.
hier der direkte link zum download http://www.b-kainka.de/freeport.zip
ich selber habe aber wenig erfahrung mit den problemmen von xp
habe es aber mal selber benutzt
-
hi also ich bin überglücklich!!Es hat alles funktioniert.eine ganz kleine Frage hab ich gibt es eine möglichkeit die pins als eingände einzeln zu benutzen also andere pins vom LPT nicht die ausgangs pins?
-
ich hab zwar auf dieser seite nützliches gefunden,http://www.epanorama.net/circuits/pa...owsprogramming
und denke ich müsste mit inp(Par_Sst,0); arbeiten aber was müsste auf die Position von 0 stehen z.B?
wollte dir auf diesem wege noch einmal für deine mühe danken.
Ich will nehmlich fürs techniker Projekt in einem Halben jahr etwas vernümftiges bauen bzw. erfinden mit meinen Kumpels aber es muss aus ""aus eigener Hand kommen"" und mit deiner Hilfe kann ich dadrauf aufbauen.:-)
-
kein problem
wenn du geheime fragen stellen willst (fragen die du nicht ins forum packen willst) kannst ja mailen
zur frage:
dir stehen bei der lpt schnittstelle von 25 pins nur 8pins zu verfügung die du nutzen kannst, die anderen sind zb für den drucker um zu melden "papier lehr" ect.
dh dir stehen die pins
D0 = pin2
D1 = pin3
.
.
.
D7 =pin9
frag jetzt bitte nicht warum sie so heißen
die cods für die ansteuerung werden im dualzahl system übergeben
dh
1 2 4 8 16 32 usw
um jetzt pin 0 (D2) anzusteuern muss du die adresse 1 übergeben
out(Par_Sst,1);
um jetzt pin 1 (D3) anzusteuern muss du die adresse 2 übergeben
out(Par_Sst,2);
um jetzt pin 2 (D4) anzusteuern muss du die adresse 4 übergeben
out(Par_Sst,4);
um jetzt pin 3 (D5) anzusteuern muss du die adresse 8 übergeben
out(Par_Sst,8);
usw
willst du aber pin 0 (D2) und pin 1 (D3) ansteuern dann musst du die adresse 3 übergeben, weil die 3 aus 1 und 2 zusammengestzt wird
out(Par_Sst,3)
ich hoffe das hilft dir
wenn ich falsch liege dann korigiert mich bitte