Com bzw lpt ansteuern
-
Hi Ich arbeite zur zeit mit Borland C++ Bilder 1
ich möchte gerne mit meiner lpt bzw. com Schnittstelle elektronische Dinge mit meinen Computer steuern dazu müsste ich aber wissen wie ich jetzt ganz simpel...
Beispiel: o o o o o o o o o x o o o x o x o o
...Meine Schnittstelle anspreche.
danke schonmal für eure Hilfe
-
Wie du die Hardware-Schnittstellen ansprichst hängt vom Betriebssystem ab. Das solltest du also in deiner Frage erwähnen.
Für einzelne Pins zu setzen sind die diese Schnittstellen allerdings nicht gut geeignet (COM noch weniger als LPT). Normalerweise werden darüber ganze Bytes/Wörter/o.ä. übermittelt, keine Pins manuell gesetzt.
edit: Oh, hab übersehen, dass du "Borland C++ Builder 1" geschrieben hast. Ist das DOS?
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum VCL/CLX (Borland C++ Builder) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hallo,
wie du mit Borland CBuilder die Com-Schnittstelle ansteuern kannst kann ich dir verraten.
du brauchst natürlich zwei Dateien, eine DLL und eine Header - die DLL um die Schnittstelle an zu sprechen und die Header Datei includest du in dein Projekt, damit du die einzelnen Pins ansprechen kannst.
Diese zwei Dateien kann ich dir gerne zukommen lassen.
Um etwas über eine Com-Schnittstelle steuern zu können musst du natürlich wissen, wie die einzelnen Pins benannt sind und welcher davon Eingang bzw. Ausgang ist.
du hast folgende Pins:
o o o o o
o o o onun musst du wissen, wie sie nummeriert sind, was folgendermaßen ist:
Pin 1, Pin 2, Pin 3, Pin 4, Pin 5
Pin 6, Pin 7, Pin 8, Pin 9Natürlich haben die Pins nicht nur Zahlen, sondern auch Namen:
Pin 1: DCD
Pin 2: RxD
Pin 3: TxD
Pin 4: DTR
Pin 5: GND
Pin 6: DSR
Pin 7: RTS
Pin 8: CTS
Pin 9: RIso werden die Pins auch über den CBuilder angesprochen.
Auf FormCreate (doppelklick auf deine Form) programmierst du nun:
LoadPortDLL(); opencom("Com1:9600,n,8,1");
wobei du für "Com1" natürlich den Namen deiner Com-Schnittstelle angibst.
die Pins können immer auf 1 oder auf 0 sitzen - die Ansprache der Pins:
1:dcd(0);
oder
dcd(1);
(Eingang)
2: Ist ein "Zwitter" (Eingang und Ausgang zusammen) und wird eigentlich nicht verwendet
3:txd(0);
oder
txd(1);
(Ausgang)
4:dtr(0);
oder
dtr(1);
(Ausgang)
5: ist ein Ground und brauch nicht angesprochen werden - weder Eingang noch Ausgang
6:dsr(0);
oder
dsr(1);
(Eingang)
7:rts(0);
oder
rts(1);
(Ausgang)
8:cts(0);
oder
cts(1);
(Eingang)
9:ri(0);
oder
ri(1);
(Eingang)
Das sollte es soweit gewesen sein, die Dateien die du benötigst kann ich dir wie gesagt zukommen lassen - evtl. per Email?
Gruß
MWJK
-
und wie ging das simpel mit dem lpt port ?
-
Hallo Folk's,
möchte dieses problem noch mal wieder beleben weil ich fast das selbe problem habe... Möchte für meine Carrera Autorennbahn einen Rundenzähler über die RS 232 Schnittstelle abrufen und dazu die einzelnen Pin Aktivieren für senden so wie 2 für empfangen....
Habe mal die Programm hilfe von MWJK versucht mir fehlt aber dazu die zwei Dateien, eine DLL und eine Header - die DLL um die Schnittstelle an zu sprechen und die Header Datei includest du in dein Projekt, damit du die einzelnen Pins ansprechen kannst.kann mir jemmand Helfen Olli
-
kuck dir mal folgende Funktionen an:
sprintf(sport1,"COM%u:",ubPort); hComPortSensorRead = CreateFile(sport1,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_ALWAYS,0,NULL); EscapeCommFunction(hComPortSensorRead, SETRTS); GetCommModemStatus(hComPortSensorRead, &ModemStat); GetCommState(h,&dDCB) SetCommState(h,&dDCB); SetCommTimeouts(h,&cto); if (!WriteFile(m_hComPort,pBuff,Size,&bwr,&ov)) WaitForSingleObject(ov.hEvent,INFINITE); ReadFile(m_hComPort,Buffer,sizeof(Buffer),&br,&ov); GetOverlappedResult(m_hComPort,&ov,&br,false);
Damit habe ich auch schon eine I2C Schnittstelle über COM gemacht.
MfG
:schland:
-
Hi folk's,
so öffne ich meine schnittstelle aber ich kann nicht die einzelnen Pin's setzen oder Abfragen....das ist mein Problem ...Um die Schnittstelle zu überprüfen habe ich einen RS 232 Check Tester an der schnittstelle und der reagiert auch in den er mir RtS und DtS von grüner LED auf rote umschaltet.Olli :schland:
------------------------------------------------------------------------------void TSchnittstelle::Schnittstelle()
{
hCom = CreateFile(Port,//Für Port wird die COM Schnittstelle eingesetzt.
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL
);
// -----------------------------------------------------------------------------
dcb.DCBlength = sizeof(DCB);
GetCommState (hCom, &dcb);
dcb.BaudRate = 9600; // Baudrate
dcb.ByteSize = 8; // 8 Datenbits
dcb.Parity = NOPARITY; // keine Parity
dcb.StopBits = ONESTOPBIT; // 1 Stopbit
SetCommState (hCom, &dcb);
}
//------- Com Port Schliessen. ------------------------------------------------
void TSchnittstelle::Beenden()
{
CloseHandle(hCom);
hCom = NULL;
}
// ----------------------------------------------------------------------------
-
deswegen habe ich auch diese beiden funktionen mit reingeschrieben zum setzten/lesen der einzelnen Pins
EscapeCommFunction(hComPortSensorRead, SETRTS); GetCommModemStatus(hComPortSensorRead, &ModemStat);
Wer lesen kann ist klar im vorteil
MfG :schland:
-
hi.... sorry ja danke das habe ich übersehen....
ich bekomme aber immer noch diese fehler meldung -> E2451 Undefiniertes Sympol 'ModemStat'weiß net.... muß ich den die schnittstelle #include etwas setzen...
olli :schland:
-
du must eine Variable des übergabparameters definieren (siehe Hilfe Funktion)
MfG