Hi,
Ich will auf die serielle Schnittstelle zugreifen
und ein einfaches „Hallo“ rübersenden!
Ich kann zwar mit CreateFile(…) usw auf den Port zugreifen aber wie
sende ich mein Text?
MfG
Hi,
Ich will auf die serielle Schnittstelle zugreifen
und ein einfaches „Hallo“ rübersenden!
Ich kann zwar mit CreateFile(…) usw auf den Port zugreifen aber wie
sende ich mein Text?
MfG
Hi,
Ich will auf die serielle Schnittstelle zugreifen
und ein einfaches „Hallo“ rübersenden!Ich kann zwar mit CreateFile(…) usw auf den Port zugreifen
aber wie
sende ich mein Text?
Kannst Du uns mal erleuchten, mit welchem Betriebssystem, welchem Compiler und welchen Bibliotheken Du zu arbeiten gedenkst? Hast Du es schonmal mit einem Blick in die Dokumentation probiert?
Gruß
Fritze
Hallo,
Meines Wissens müsste das mit der Funktion WriteFile(…) gehen.
Gruss Tobias
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hi Bacho,
nachdem Du CreateFile verwendest, gehe ich davon aus, dass Du eine Windows-Loesung suchst.
Nachdem Du den COM Port mit geöffnet hast,
hComm = CreateFile( m_ComboPortName,
GENERIC_READ | GENERIC_WRITE,
0,
0,
OPEN_EXISTING,
0,
0);
kannst du ganz einfach mit
WriteFile(hComm, „Hallo“, 5, &dwWritten , NULL);
deine Daten senden. Hierbei ist dwWritten vom Typ DWORD und gibt Dir die Anzahl tatsächlich geschriebener Bytes zurück.
LG Axel
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
aha…
doch so, wie ich es mir vorgestellt habe!
und was ist mit diesen RTS und weiss ich nicht was für Signalen, die brauch ich nicht zu setzen oder wie?
sorry, wenn die Frage dumm klingt!
Danke für deine Hilfe!
Brauchen? nein, nur wenn Du sie zur Steuerung deines Kommunikationsflusses verwenden möchtest.
Es gibt keine dummen Fragen, nur dumme Antworten
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
aha…
d.h. also, wenn ich zum beispiel eine methode schreibe n will, die nix anderes tut als die Schnittstelle für meinetwegen 5 sec zu blockieren, muss ich eins dieser Signale schicken, bzw pins setzen!?
Hallo,
d.h. also, wenn ich zum beispiel eine methode schreibe n will,
die nix anderes tut als die Schnittstelle für meinetwegen 5
sec zu blockieren, muss ich eins dieser Signale schicken, bzw
pins setzen!?
Nicht unbeding, das kommt drauf an, was deine engesteuerte Hardware so macht.
Bei RS-232 hängt das zuerst einmal von der Vekabelung und dem Verhalten der Treiber ab:
Hardware:
Primitiv (3-Draht):
Es werden nur die 3 Leitungen RxD, TxD und GND verbunden.
Es erfolgt keinerlei Hardware-Handshake.
Null-Modem primitiv (3-Draht):
Wie 1. zusätzlich werden in jedem Stecker einerseits RTS und CTS miteinander verbunden und zusätzlich DSR,DCD und DTR mit einander verbunden.
Es erfolgt keinerlei Hardware-Handshake die Treiber „glauben“ aber ein Gerät mit Hardware-Handshake anzusteuern.
Null-Modem verbessert Variante 1 (5-Draht):
Wie 1. zusätzlich werden in jedem Stecker RTS und CTS miteinander verbunden.
DSR wird jeweils mit DCD und DTR des anderen Steckers verbunden.
Die Treiber „glauben“ aber ein Gerät mit Hardware-Handshake anzusteuern. Über das Hardware-Handshake kann erkannt werden ob die Gegenstation eingeschaltet ist oder nicht.
Null-Modem verbessert Variante 2 (5-Draht):
Wie 1. zusätzlich werden in jedem Stecker DSR,DCD und DTR miteinander verbunden.
RTS wird jeweils mit CTS des anderen Steckers verbunden.
Die Treiber „glauben“ aber ein Gerät mit Hardware-Handshake anzusteuern. Über das Hardware-Handshake wir der Datenverker geregelt, allerdings kann nicht erkannt werden ob die Gegenstation nur gerade ein „Verarbeitung-Päuschen“ macht oder gar nicht eingeschaltet ist.
Voll (7-Draht)
GND GND
TxD —> RxD
RxD CTS
CTS DTR & DCD
DTR & DCD
short OpenCom(short ComPort)
{
DCB CommDCB;
COMMTIMEOUTS timeout;
long ret;
char s[100];
sprintf(s, „COM%d“, ComPort);
hdCOMM = CreateFile(s,
(GENERIC_READ | GENERIC_WRITE), 0, NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED | FILE_FLAG_NO_BUFFERING,
NULL);
if ( hdCOMM != INVALID_HANDLE_VALUE )
{
ret = SetupComm(hdCOMM, 1024, 1024);
sprintf(s, „COM%d: baud=38400 parity=N data=8 stop=1“, ComPort);
memset(&CommDCB, 0, sizeof(DCB));
CommDCB.DCBlength = sizeof(DCB);
ret = BuildCommDCB(s, &CommDCB);
CommDCB.DCBlength = sizeof(DCB);
CommDCB.fBinary = 1; // Binary Mode
CommDCB.fParity = 0; // No Parity Check
CommDCB.fOutxCtsFlow = 0; // CTS ignored
CommDCB.fOutxDsrFlow = 0; // DSR ignored
// CommDCB.fDtrControl = ; // DTR ignored
CommDCB.fDsrSensitivity = 0; //
CommDCB.fTXContinueOnXoff = 1;
CommDCB.fOutX = 1;
CommDCB.fInX = 1;
CommDCB.fAbortOnError = 0; // Ignore Errors
CommDCB.XoffLim = 100;
CommDCB.XonLim = 500;
CommDCB.XonChar = 17;
CommDCB.XoffChar = 19;
ret = SetCommState(hdCOMM, &CommDCB);
timeout.ReadIntervalTimeout = MAXDWORD; // Read returns if no chars available
timeout.ReadTotalTimeoutMultiplier = 0; // "
timeout.ReadTotalTimeoutConstant = 0; // "
timeout.WriteTotalTimeoutMultiplier = 3;
timeout.WriteTotalTimeoutConstant = 20;
ret = SetCommTimeouts(hdCOMM, &timeout);
memset(&ovREAD, 0, sizeof(ovREAD ));
memset(&ovWRITE, 0, sizeof(ovWRITE));
ret = EscapeCommFunction(hdCOMM, SETRTS);
ret = EscapeCommFunction(hdCOMM, SETDTR);
}
if (hdCOMM > 0) return TRUE;
return FALSE;
}
MfG Peter(TOO)
aha…
das wird gleich abgeheftet! :.p
Dankeschön…