|
Acerca de lectura de ComPortRxChar
Hola a todos
Tengo un problema: tengo que leer un modem GSM Wavecon, se conecta vía USB y estoy tratando de usar el componente TComPort.
Puedo enviar mensajes al puerto con instrucciones tipo AT que son para controlar el modem, al parecer si puedo escribir sin problemas, pero no puedo leer la respuesta en el evento RxChar, de hecho no lo puedo leer de ninguna forma, con todas las formas que he intentado leer el puerto siempre me regresa una cadena vacía
Lo he intentado de estas dos formas :
procedure TfrmMain.Button3Click(Sender: TObject);
var
toSend : string;
lst : TStringList;
X: integeR;
readBuf : string;
OtroPuerto : CPort.TComPort;
Continuar : boolean;
begin
Continuar := false;
OtroPuerto := CPort.TComPort.Create(nil);
OtroPuerto.Port := 'COM' + tbPortNumber.Text;
OtroPuerto.Events := [];
OtroPuerto.FlowControl.ControlDTR := dtrEnable;
OtroPuerto.FlowControl.ControlRTS := rtsEnable;
OtroPuerto.Open; // open port
mmRead.Lines.Clear;
lst := TStringList.Create;
try
lst.Add('AT+CPMS="SM"');
lst.Add('AT+CMGF=1');
lst.Add('AT+CMGR=1');
for x:=0 to lst.Count-1 Do
begin
toSend := lst.Strings[x] + #13;
Application.ProcessMessages;
mmRead.Lines.Add(' Mensaje : ' + toSend);
OtroPuerto.WriteStr(toSend);
Sleep(1000);
readBuf := '';
otroPuerto.ReadStr(readBuf, otroPuerto.InputCount);
mmRead.Lines.Add(' Lectura : ' + readBuf);
end;
finally
FreeAndNil(lst);
//OtroPuerto.Free;
end;
end;
y la otra implementando el metodo
procedure TfrmMain.OtroPuertoRxChar(Sender: TObject; Count: Integer);
var
Str: String;
begin
OtroPuerto.ReadStr(Str, Count);
mmRead.lines.Add(Str);
end;
Sin embargo en ninguna de las dos he logrado conocer la respuesta del modem, solo cadenas vacías.
Si alguien me puede ayudar les agradezco de antemano
Saludos y gracias a todos
|