AT Kommandos an Handy übertragen
-
Hallo,
danke für deinen Tip, das mit WriteFile klappt jetzt, ich kriege nur noch keine Antwort. Wenn es geht, kannst du mir dein ReadFile mal schreiben? Wäre sehr net.
Danke dir nochmal
-
und was war der fehler (die abschliesende '\0' )?
-
Es muss noch ein '\r' angehängt werden (wie schon gesagt wurde ASCII 13).
buf zeigt doch gar nicht auf einen Datenblock!
-
also folgender code funzt bei mir nicht, und ich komme nicht dahinter warum...
HANDLE hCom ; DCB dcb ; TCHAR szBefehl[8] = "AT^SMSO" ; // handy ausschalten DWORD dwWritten = 0 ; FillMemory(&dcb, sizeof(dcb), 0) ; szBefehl[strlen (szBefehl)] = 13 ; szBefehl[strlen (szBefehl)] = '\0' ; hCom = CreateFile (TEXT ("COM1"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL) ; if (hCom == INVALID_HANDLE_VALUE){ MessageBox (NULL, "Kann COM 1 nicht oeffnen", "Fehler", NULL) ; return FALSE ; } if (!GetCommState (hCom, &dcb)){ MessageBox (NULL, "lesefehler (dcb)", "fehler", NULL) ; CloseHandle (hCom) ; return FALSE ; } dcb.DCBlength = sizeof (DCB) ; dcb.BaudRate = CBR_9600 ; dcb.ByteSize = 8 ; dcb.Parity = 0 ; dcb.StopBits = ONESTOPBIT ; if (!SetCommState (hCom, &dcb)){ MessageBox (NULL, "schreibfehler (dcb)", "fehler", NULL) ; CloseHandle (hCom) ; return FALSE ; } if (!WriteFile (hCom, (LPCVOID) szBefehl, sizeof (szBefehl), dwWritten, NULL)){ MessageBox (NULL, "schreibfehler (com)", "fehler", NULL) ; CloseHandle (hCom) ; return FALSE ; } CloseHandle (hCom) ; return TRUE ; }
// das simens s35 ist ueber verbindungskabel mit dem rechner verbunden
-
Hallo Loggy, was meinst du mit buf zeigt nicht auf einen Datenblock?
Kannst du mir ein Beispiel geben? Arbeite noch nicht so lange mit C++.Danke für deine Hilfe
-
ncc-1701-m:
kannst du deinen code posten (der funktioniert)...
thx
-
brauchst du nicht mehr, ich habe den fehler geufunden.
-
Ich hatte ja bereits gesagt, dass ich das nicht in c sondern in vb geschrieben habe. Das ganze wird dir an dieser stelle nichts helfen. Dort funzt das alles etwas anders.
Übrigens geht dieser Befehl an das handy (falls das jemanden interessiert)
-
Original erstellt von ncc-1701-m:
**Hallo ich habe ein Programm geschrieben was über ein Datenkabel mit einem Siemens Handy kommunizieren soll. DOch irgendwas klappt nicht ich weiß nicht woran das liegt ich habe es folgendermaßen versucht:HANDLE m_hPort; m_hPort = CreateFile( "COM2", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if((int)m_hPort == -1) m_hPort=0; if(m_hPort !=0) { COMMTIMEOUTS comtime; GetCommTimeouts(m_hPort, &comtime); comtime.ReadIntervalTimeout= 100; comtime.ReadTotalTimeoutConstant= 1000; comtime.WriteTotalTimeoutConstant= 1000; comtime.ReadTotalTimeoutMultiplier=2; comtime.WriteTotalTimeoutMultiplier=0; SetCommTimeouts(m_hPort, &comtime); DCB dcb; GetCommState(m_hPort, &dcb); dcb.BaudRate= 9600; dcb.ByteSize= 8; dcb.DCBlength= 28; dcb.EofChar= 0; dcb.ErrorChar= 0; dcb.fRtsControl= 2; dcb.Parity= 0; dcb.StopBits= 0; dcb.fInX=0; dcb.fOutX=0; dcb.fAbortOn Error = 1; // On und Error gehören zusammen SetCommState(m_hPort, &dcb); char* buffer = "AT^SMSO"; int i = AnsiString(buffer).Length(); char* buf = '\0'; DWORD written= 0; DWORD read = 0; WriteFile(m_hPort, buffer, i, &written, NULL); ReadFile(m_hPort, buf, i, &read, NULL); CloseHandle(m_hPort); ShowMessage(buf); }
Ich bekomme leider nur keine Antwor oder eine Reaktion des Handy. Ich hoffe ihr könnt mir helfen
Danke schon im voraus.**
-
Sorry, bin neu im Forum---bitte voriges posting löschen...
@ ncc-1701-m
Kannst Du mir vielleicht genauer schreiben wie Du Dein WriteFile geschrieben hast??
Mein Handy tut überhaupt nichts, hab vielleicht auch die settings falsch. Hast Du eine Ahnung was beim M35i anders eingestellt werden muss?
Wie ist das mit Stopbit, Baudrate, Parity usw.?
Hier mein code. Das mit dem "\r" habe ich nicht ganz kapiert. Kommt das einfach hinter den AT command?char *buffer;
buffer = "AT^SMSO<cr>";
int i = AnsiString(buffer).Length();
DWORD written= 0;
WriteFile(hComm, buffer, i, &written, NULL);