_inp und _outp (Parallelschnittstelle)
-
Hallo...
Ich will einen Schalter zwichen zwei Pins der Parallelen schnittstelle anschliessen und wenn ich den Schalter schliesse
soll es mir eine Messagebox auch sagen das der Schalter geschlossen ist.Vieleicht koennt ihr mir mal ein Beispiel geben.
besten dank uwe#define Par_Sst 0x378
_outp(Par_Sst+2,0x21); // Hier kenne ich auch nicht die Pins des Steckers
_outp(Par_Sst+2,0x20); // Waere nicht schlecht, wenn ihr die Pins noch dazuschreiben wuerdet
_inp(Par_Sst);
if (_inp(Par_Sst) == TRUE)
MessageBox("Kontakt");[ Dieser Beitrag wurde am 15.12.2001 um 11:53 Uhr von Marc++us editiert. ]
-
Was hat das mit MFC zu tun ?????
Egal, bin kein Moderator.Mir nicht ganz klar, was das "Par_Sst+2" im _outp() zu bedeuten hat.
Wenn es immer noch die LPT1 ist, dann hast du mit:
_outp(Par_Sst+2,0x21) -> Pin 1 und Pin 7 auf Hight
_outp(Par_Sst+2,0x20) -> Pin 7 uaf HightUm denen Schalter abzufragen, hast du den Quelltext schon geschrieben.
Du brauchst nur +5V an eine der Datenleitungen anzulegen Pin 2 .. 9.Sei allerdig verdammt VORSICHITG mit der parallelen Schnittstelle. Wen du einen Kurzschluss baust, funktionierst du dein Mainboard zum Toster um. images/smiles/icon_wink.gif
[ Dieser Beitrag wurde am 10.12.2001 um 23:06 Uhr von CMatt editiert. ]
-
JA JA bin schon da.
Verschoben nach denke mal Rund um die Programmierung.
-
hi...
Danke fuer die hilfe... aber ich bin nicht auf die 5 V spannung gekommen.
gibt es da nicht noch etwas anderers als _inp ?
denn wenn ich inp benutze dann sind ja die anderen pins 1 - 8 auch belegt. Denn ich kann ja keinen weiteren parameter bei inp angeben.
_outp kann ich ja sagen auf welchem pin er ausgeben soll.fuer hinweise waere ich dankbar uwe
-
_inp liest, soweit ich das verstanden habe, die kompletten 8 Datenbits ein und gibt einen int Wert zurück. Wenn also alle Eingänge auf Low sind gibt die Funktion 0 zurück, sonst bekommst du einen Wert >0. Die Abfrage auf TRUE würde also bestems klappen. Wenn du nur einzelne Pins abfragen willst, musst du etwas rechnen.
Ein weitere Möglichkeit ist WriteFile(). Ich benutze immer diese Funktion, da ich mt _inp, _outp bein WinNT und Win2000 schon öfters Probleme hatte.
[ Dieser Beitrag wurde am 11.12.2001 um 17:16 Uhr von CMatt editiert. ]
-
hi...
hemm...
kannst du das mit dem WriteFile etwas beschreiben?
denn da habe ich gar keine ahnung....
uwe
-
Läuft so:
hCom = CreateFile( "LPT1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, NULL); WriteFile(hCom, lpByte, len, &dwBytesWritten, NULL); ReadFile(hCom, lpByte, len, &dwBytesRecive, NULL);
[ Dieser Beitrag wurde am 17.01.2002 um 23:32 Uhr von CMatt editiert. ]
-
Original erstellt von CMatt:
[QB]Sei allerdig verdammt VORSICHITG mit der parallelen Schnittstelle. Wen du einen Kurzschluss baust, funktionierst du dein Mainboard zum Toster um. images/smiles/icon_wink.gif
QB]Baue mindestens einen 500Ohm Widerstand ein. Damit beschränkst du den Strom auf 10mA. Im Zweifel aber lieber einen höheren Widerstand.
Aber ich garantiere für nix falls du dein Mainboard abfackelst. images/smiles/icon_biggrin.gif
-
Es sehe du hast schon Erfahrung damit, auch schon mal eins gekillt?
images/smiles/icon_biggrin.gif images/smiles/icon_biggrin.gifDas ist der Grund, warum ich nurmher die Serielle benutze.
-
Original erstellt von Hexatrexmibultra.de:
**
Aber ich garantiere für nix falls du dein Mainboard abfackelst. images/smiles/icon_biggrin.gif**Nun mal ehrlich, wieviele hast du schon auf dem Gewissen ? images/smiles/icon_biggrin.gif
[ Dieser Beitrag wurde am 11.12.2001 um 17:46 Uhr von AndreasW editiert. ]
-
Für mich gilt 1, ein anderes konnte ich noch noch reparieren, aber beim anderen kam jede Hilfe zu spät. Der Treiber-IC hatt danach ausgesehen wie Hiroshima nach der Atombombe images/smiles/icon_biggrin.gif
-
hi...
erstmal dank fuer die hilfen...!!!
Dank auch fue die warnungen ich werde versuchen mein board am leben zu lassen images/smiles/icon_eek.gif !!!wo kann ich denn noch ein paar mehr infos finden ueber writefile
denn die msdn haben da nicht sehr viel im angebot in bezug auf die LPT
schnittstelle...Buecher, link oder programmbeispiele wuerden mir da schon helfen.mfg uwe
-
Original erstellt von AndreasW:
**Nun mal ehrlich, wieviele hast du schon auf dem Gewissen ? images/smiles/icon_biggrin.gif[ Dieser Beitrag wurde am 11.12.2001 um 17:46 Uhr von [qb]AndreasW** editiert. ][/QB]
Ich habe noch! kein Mainboard abgefackelt. (Kann sich ja noch ändern) images/smiles/icon_biggrin.gif Ich wollte nur sagen das ich nicht schuld bin wenn es er ausprobiert und dabei Schei**e baut.
-
hi...ich komme nicht weiter...
vielleicht koenntet ihr mal ein kleines koplettes porgrammbeispiel posten...
ich habe keine ahnung und finde auch nicht ueber writefile und LPTmfg uwe
-
hi...
so ich habe jetzt gebastelt wie ein bloeder images/smiles/icon_confused.gif
und kann jetzt auch wirklich die LPT oeffen...ABER
ich komme mit dem:
WriteFile(hCom, lpByte, len, &dwBytesWritten, NULL);
ReadFile(hCom, lpByte, len, &dwBytesRecive, NULL);nicht klar...
ich weiss z.b. nicht was " lpByte, len, &dwBytesRecive und &dwBytesWritten"
bedeuten und ich kann mir immer noch nicht erklaeren wie ich da die einzelnen PINS ansprechen soll, denn ich weiss nicht wie ich die PINS
adressieren soll.uwe
-
lpByte = das Byte, welches du ausgeben willst
len = Länge der auszugeben Daten (also 1)
&dwBytesRecive = Anzahl der empangenen Bytes
&dwBytesWritten = Anzahl der gesendeten BytesWarum willst du Pinns Adressieren images/smiles/icon_confused.gif images/smiles/icon_confused.gif
Mal ein Beispiel:
18 wird ausgegeben
18(dez) = 10010 (bin)
-> Die Pins 3 und 6 sind auf High12 wird eingelesen
12(dez) = 1100 (bin)
-> Die Pins 4 und 5 sind auf High
-
hi...
was mache ich denn jetzt noch falsch...?
#include "stdafx.h"
#include<windows.h>
#include <stdio.h>void main (void)
{HANDLE hCom = CreateFile( "lpt1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, NULL);
test:char lpByte [12];
BOOL len = 1 ;DWORD dwBytesRecive ;
ReadFile(hCom, lpByte, len, &dwBytesRecive, NULL);
printf("%d ",dwBytesRecive);
goto test;
}wenn ich jetzt an pin 4 eine 5v spannung anlege dann sollte das printf doch einen wert ausgeben oder...?
uwe
[ Dieser Beitrag wurde am 20.01.2002 um 17:59 Uhr von CMatt editiert. ]
-
Glaub du hast da was vertauscht images/smiles/icon_wink.gif
In lpByte steht das, was du empangen hast. In dwBytesRecive steht die Anzahl der empfangenen Bytes.Versuch mal so:
ReadFile(hCom, &lpByte, len, &dwBytesRecive, NULL);
-
Ach ja, noch was.
Vergiss nicht CloseHandle(hCom) am Ende, sonst kalppt das ganze nur ein mal.