(Den COM-Port kann man übrigens auch ohne eine DLL oder sonst etwas ganz gut steuern.)
Würde mich interessieren. SirMel wollte VB verwenden, da kenne ich halt die beschriebene Methode. Geht es einfacher?
Bernhard
Fragen zu Elektronik und Elektro allgemein.Fragen zu Bauteilen wie z.B. Tansistoren, Dioden, Kondensatoren usw.
Moderator: Moderatorengruppe
(Den COM-Port kann man übrigens auch ohne eine DLL oder sonst etwas ganz gut steuern.)
#include <windows.h>
#define DTR 0
#define RTS 1
#define TXD 2
HANDLE hCom; //Handle auf den Port
struct{int dtr; int rts; int txd;}com1; //Die Aktuellen Zustaende der Leitungen sind hier gespeichert
/******************************************************************************************************/
void port_initialisieren(void)
{
DCB interface_parameter;
COMMTIMEOUTS timeout_einstellungen;
//Port oeffnen:
hCom=CreateFile("COM1",
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0;
NULL);
//Schnittstellen-Parameter einstellen:
GetCommState(hCom,&interface_parameter);
interface_parameter.DCBlength=sizeof(interface_parameter);
interface_parameter.BaudRate=9600;
interface_parameter.ByteSize=8;
interface_parameter.StopBits=1;
interface_parameter.Parity=NOPARITY;
SetCommState(hCom,&interface_parameter);
timeout_einstellungen.ReadIntervalTimeout=100;
timeout_einstellungen.ReadTotalTimeoutMultiplier=100;
timeout_einstellungen.ReadTotalTimeoutConstant=100;
timeout_einstellungen.WriteTotalTimeoutMultiplier=100;
timeout_einstellungen.WriteTotalTimeoutConstant=100;
SetCommTimeouts(hCom,&timeout_einstellungen);
//Reset auf Default-Werte:
EscapeCommFunction(hCom,SETDTR);
EscapeCommFunction(hCom,SETRTS);
EscapeCommFunction(hCom,CLRBREAK);
com1.dtr=0; com1.rts=0; com1.txd=0;
}
/******************************************************************************************************/
void WriteOutput(int leitung, int neuer_pegel)
{
if(neuer_pegel)
{
switch(leitung)
{
case DTR : EscapeCommFunction(hCom,CLRDTR) com1.dtr=1; break;
case RTS : EscapeCommFunction(hCom,CLRRTS); com1.rts=1; break;
case TXD : EscapeCommFunction(hCom,SETBREAK); com1.txd=1; break;
}
}
else
{
switch(leitung)
{
case DTR : EscapeCommFunction(hCom,SETDTR); com1.dtr=0; break;
case RTS : EscapeCommFunction(hCom,SETRTS); com1.rts=0; break;
case TXD : EscapeCommFunction(hCom,CLRBREAK); com1.txd=0; break;
}
}
}
Damit habe ich kein Problem. -Ich finde das teils sogar ungemein interessant.BernhardS hat geschrieben:Ich hör schon wieder auf, wenn die älteren Herren in Nostalgie verfallen, das kommt nicht so gut an.
BernhardS hat geschrieben:Große Überraschung: So etwas in der Richtung konnte ich schon mal, ungefähr 1981 auf einer PDP11/08.
Welt des "händisch" Compilieren
Zurück zu Fragen zur Elektronik
Mitglieder in diesem Forum: 0 Mitglieder und 45 Gäste