Hallo,
Also Modem geht, Leitung geht, interne Kommunikation geht.
Ja, alles wunderbar.
Nur mit meinem Programm klappt es nicht ...
Hast du daran gedacht, dass man die COM-Schnittstelle nach dem Öffnen mit CreateFile() auch noch mit den gewünschten Parametern initialisieren muss?
* SetupComm() setzt die Größe der Sende- und Empfangspuffer
* SetCommState() stellt Baudrate, Anzahl der Daten- und Stoppbits, Parity ein
Mehr mache ich in meinen Programmen doch auch nicht, wenn ich eine COM-Schnittstelle nutzen will ...
Ich habe folgende C++-Konstruktion:
HANDLE hSerial;
hSerial = CreateFile("COM3", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
int SetupCommOK = SetupComm(hSerial, 2, 128);
DCB dcb;
GetCommState(hSerial, &dcb);
dcb.BaudRate = CBR_9600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
int SetCommStateOK = SetCommState(hSerial, &dcb);
DWORD bytesWritten = 0;
WriteFile(hSerial, "ATDT12345678\r", strlen("ATDT12345678\r"), &bytesWritten, 0);
cout << "geschriebene Bytes: " << bytesWritten << "\n";
CloseHandle(hSerial);
Müßte das Modem nicht auch ohne die "Konfiguration" zumindest etwas machen? Egal, in obigem Beispiel müßte alles drin sein, was sein muß.
Nach meinem Verständnis müßte das klappen, tut es aber nicht. Ich habe mehrere GetLastError() dazwischen verteilt, aber die liefern immer "kein Fehler" zurück.
Die angezeigte Anzahl der geschriebenen Bytes entspricht der Länge des AT-Strings (ohne "").
Das Modem ist und bleibt stumm. Ist in der WriteFile-Anweisung vielleicht ein Fehler drin?
Ratlos
Alexander