Hola
A ver, estoy usando comport como ya lo había comentado, pero hay unos problemas que no puedo resolver, primero que nada a veces me responde con una ÿ por delante de toda la respuesta, lo soluciono con un StringReplace, aunque la idea sería que ni me la regrese, algo andará mal
Y el punto más importante es este:
Estoy enviando comandos AT a un móvil, por ejemplo le envío AT y me debería responde OK, a la primera no lo hace, pero a la segunda si, luego envío por ejemplo AT+GMMI, y me responde solamente OK, osea la anterior respuesta del comando AT solo, y si de nuevo le envío AT+GMMI pues me muestra el resultado bien.
AHora resulta que tengo que enviarle por ejemplo unos 3 comandos al móvil para primero configurarlo luego pedirle datos y ala, ahí el problema, que se hace un lío con las respuestas y al final me entrega todo menos lo esperado y además de que no llega a ejecutarse el último o penúltimo comando por el mismo hecho de que tendría que enviarse 2 veces el mismo comando para así recibir una buena respuesta, esto no siempre es así pero en la mayoría de los casos. ¿Cómo soluciono eso?
este es mi código:
Código Delphi
[-]procedure TForm1.BEnviarClick(Sender: TObject);
var
tmp, resp, at : AnsiString;
i : Integer;
data : String;
datas : TStrings;
begin
at := 'AT' + chr(13) + chr(10);
ComPort.WriteStr(at);
Sleep(10);
ComPort.ReadStr(resp, 80);
ShowMessage(at + resp);
at := 'AT+CMGF=1' + chr(13) + chr(10);
ComPort.WriteStr(at);
Sleep(10);
ComPort.ReadStr(resp, 80);
ShowMessage(at + resp);
bueno, como ven creo creo que todo es correcto a excepción del 80, según he leido en la ayuda es la cantidad de datos a recibir, puede que por eso el problema.. pero ¿Qué número debería ir ahí?
cabe decir que no estoy usando el evento writesrt del comport, o algo así se llame jeje
Bueno, a los que lograron hacer eso por favor una mano que no puedo salir de esta.. lo que quiero es leer el sms del móvil, lo he logrado, pero por delphi no puedo de un SOLO tirón.
Saludos!