Hola, ya lo logre hacer funcionar correctamente en mi nokia n900, sin embargo en un modem usb de telcel marca zte modelo MF100 me falla, desde la hiperterminal he probado los comandos y si me funcionan, sin embargo en delphi algunos no funcionan.
Estos comandos no funcionan en Delphi me mandan “ERROR”:
Código:
AT+CMGF=1 (Para definir el formato del mensaje)
AT+CMGs=”442……” (Para enviar un mensaje)
Algunos que si funcionan son por ejemplo:
Código:
AT (Ver si hay comunicación con el modem)
AT+CGMI (Nombre del fabricante)
Sin embargo en el n900 si corre bien todos los que ponga. No sé que será lo que falla que en hiperterminal si me reconoce todos y en Delphi sólo algunos
Aquí está esa parte de código donde pongo esos comandos
Código Delphi
[-]
procedure TForm1.Button_SendClick(Sender: TObject);
var
Str: String;
begin
if Comport.Connected then
begin
mensaje:= Edit_Data.Text;
at := 'AT' + #13#10;
ComPort.WriteStr(at);
Sleep(10);
at := 'AT+CMGF=1' + #13#10;
ComPort.WriteStr(at);
Sleep(10);
at := 'AT+CMGS="4424311080"' + #13#10;
ComPort.WriteStr(at);
Sleep(10);
ComPort.WriteStr(mensaje + #26);
Sleep(10);
end
Else
begin
lblpuerto.Caption := 'Se debe conectar primero al puerto';
end
end;
Les pongo todo mi código a continuación:
Código Delphi
[-]
unit ComMainForm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, CPort, CPortCtl;
type
TForm1 = class(TForm)
ComPort: TComPort;
Memo: TMemo;
Button_Open: TButton;
Button_Settings: TButton;
Edit_Data: TEdit;
Button_Send: TButton;
lblpuerto: TLabel;
ComLed1: TComLed;
Label1: TLabel;
procedure Button_OpenClick(Sender: TObject);
procedure Button_SettingsClick(Sender: TObject);
procedure Button_SendClick(Sender: TObject);
procedure ComPortOpen(Sender: TObject);
procedure ComPortClose(Sender: TObject);
procedure ComPortRxChar(Sender: TObject; Count: Integer);
private
public
end;
var
Form1: TForm1;
at : AnsiString;
mensaje : String;
implementation
{$R *.DFM}
procedure TForm1.Button_OpenClick(Sender: TObject);
begin
if ComPort.Connected then
begin
ComPort.Close;
lblpuerto.Caption := 'Desconectado';
end
else
begin
ComPort.Port := 'COM5';
ComPort.BaudRate := StrToBaudRate('2400');
ComPort.Open;
lblpuerto.Caption := 'Conectado a '+ ComPort.Port;
end
end;
procedure TForm1.Button_SettingsClick(Sender: TObject);
begin
ComPort.ShowSetupDialog;
end;
procedure TForm1.Button_SendClick(Sender: TObject);
var
Str: String;
begin
if Comport.Connected then
begin
mensaje:= Edit_Data.Text;
at := 'AT' + #13#10;
ComPort.WriteStr(at);
Sleep(10);
at := 'AT+CMGF=1' + #13#10;
ComPort.WriteStr(at);
Sleep(10);
at := 'AT+CMGS="4424311080"' + #13#10;
ComPort.WriteStr(at);
Sleep(10);
ComPort.WriteStr(mensaje + #26);
Sleep(10);
end
Else
begin
lblpuerto.Caption := 'Se debe conectar primero al puerto';
end
end;
procedure TForm1.ComPortOpen(Sender: TObject);
begin
Button_Open.Caption := 'Desconectar';
end;
procedure TForm1.ComPortClose(Sender: TObject);
begin
if Button_Open <> nil then
Button_Open.Caption := 'Conectar';
end;
procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
Str: String;
begin
ComPort.ReadStr(Str, Count);
Memo.Text := Memo.Text + Str;
end;
end.
Muchas gracias, ojalá me puedan apoyar.
Saludos.