003
13.04.2006, 13:25 Uhr
Roland
|
sodala, bin einen kleinen Schritt weiter gekommen. Bekomm jetzt das ok zurück, kann es mit strcmp auch vergleichen, aber wenn ich dann auf den Ring warte hupft er aus der Schleife nicht mehr raus, vielleicht wer eine Ahnung warum?
Hier mal der neue Code:
C++: |
#include <windows.h> #include <iostream.h> #include <stdio.h> #include <tchar.h> #include <string.h>
#define COMPORT "COM1" #define TEST "AT\r" #define ANRUFEN "ATDT06641129151\r;" //anzurufende Nummer #define AUFLEGEN "ATH\r" #define ANNEHMEN "ATA\r" #define ECHOOFF "AHE0\r" #define TXT "D:\\cpp\\defues.txt"
BOOL WriteABuffer(char * lpBuf, DWORD dwToWrite);
int main() { /*------------------------COMPORT OEFFNEN UND SCHNITTSTELLENEIGENSCHAFTEN SETZEN---------------*/ cout << "Comport offnen\n"; //COMPORT OEFFNEN HANDLE h_ComPort = CreateFile(COMPORT, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0 , NULL); if(h_ComPort == INVALID_HANDLE_VALUE) { cout << "Port konnte nicht geöffnet werden!\n"; }
//SCHNITTSTELLEN EIGENSCHAFTEN cout << "Schnittstelleneigenschaften setzen\n"; DCB dcb;
dcb.BaudRate = CBR_19200; dcb.ByteSize = 8; dcb.Parity =NOPARITY; dcb.StopBits = ONESTOPBIT; dcb.fOutxCtsFlow = false; // Disable CTS monitoring dcb.fOutxDsrFlow = false; // Disable DSR monitoring dcb.fDtrControl = DTR_CONTROL_ENABLE; // Disable DTR monitoring dcb.fOutX = true; // Disable XON/XOFF for transmission dcb.fInX = true; // Disable XON/XOFF for receiving dcb.fRtsControl = RTS_CONTROL_ENABLE; // Disable RTS (Ready To Send) dcb.fTXContinueOnXoff=true; dcb.XoffLim=10; dcb.XonLim=10;
SetCommState(h_ComPort, &dcb);
//TIMEOUTS
cout << "Timeouts setzen\n";
COMMTIMEOUTS cto;
cto.ReadIntervalTimeout = 20; cto.ReadTotalTimeoutMultiplier = 10; cto.ReadTotalTimeoutConstant = 100; cto.WriteTotalTimeoutMultiplier =10; cto.WriteTotalTimeoutConstant = 100;
SetCommTimeouts(h_ComPort,&cto);
/*------------------------TEXT DATEI OEFFNEN ---------------*/
cout << "txt oeffnen\n"; FILE *datei;
datei = fopen(TXT,"a+t"); fseek(datei, 0,SEEK_END); char tabulator[3]; strcpy(tabulator, "\ta\n"); fwrite(tabulator,sizeof(tabulator),1,datei); fclose(datei);
/*------------------------ECHO ABSCHALTEN (ATE0) ---------------*/
cout << "Senden Teststring\n"; char ATCommand[6];//[100]; strcpy(ATCommand, "ATE0\r"); DWORD nNumberOfBytesWritten;
char ModemAcn[2]; ModemAcn[2]=NULL; int ret; DWORD nNumberOfBytesRead; do { WriteFile(h_ComPort, ATCommand, sizeof(ATCommand), &nNumberOfBytesWritten, NULL); cout << " AT geschrieben\n"; ReadFile(h_ComPort, ModemAcn, sizeof(ModemAcn), &nNumberOfBytesRead, NULL); cout << ModemAcn <<"\n"; ret = strcmp(ModemAcn, "OK"); } while(ret!=0);
cout << ModemAcn <<"OK wurde empfangen\n";
/*------------------------AUF RING WARTEN ---------------*/
char ModemRing[6]; ModemRing[6]=NULL; int retour; do { //ModemRing[6]=NULL; ReadFile(h_ComPort, ModemRing, sizeof(ModemRing), &nNumberOfBytesWritten, NULL); cout << ModemRing << "\n"; retour= strcmp(ModemRing, "RING"); cout << retour; } while(retour!=0);
cout << "geschafft\n";
CloseHandle(h_ComPort);
return 0; }
|
lg Roland Dieser Post wurde am 13.04.2006 um 13:27 Uhr von Roland editiert. |