Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2843 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Olá pessoal, instale o Acbr, rodei o demo do acbrSMS e funcionou legal ontem, mas hoje pela manhã qualquer mensagem que eu envio dá um erro "não foi possivel enviar mensagem de texto" Error +cms 305, se eu coloco apenas um caracter envia, se escrevo uma frase ele não envia.. Tô em tempo de ficar maluco.

Postado

Olha, experimenta desinstalar o programa do modem, reinicializar a máquina e instalar de novo para ver se ele usa as portas anteriormente criadas ...

 

Geralmente quando vc coloca o modem na mesma porta USB ele usa as mesmas portas Cm virtuais criadas anteriormente ...

 

Vc colocou em outra porta USB ?

Postado

Concordo com o Regys  .. o modem mais funcional é o da Daruma ligado via porta Serial Física ... não precisa de driver, de instalação, de porta serial virtual, de nada .. conectou, mandou .. e é mais veloz .. só que custa 5x mais que o Modem 3G

Postado

Já que vc tocou nesse assunt ode 2 chips, Rgys, me explica uma coisa , por favor . Vc já usou esse recurso ? Dá para enviar um sms por um chip e já enviar outro sms pelo outro chip como se fosse uma outra Thread ? Digo, não precisar esperar que o primeiro chip termine o envio do primeiro sms e já enviar outro sms pelo outro chip ? 

Aí a vantagem seria maior .. pq dá para considerar que são 2 modens conectados. Já fiz o envio com 4 modens 3G ao mesmo tempo via Thread ...

 

  • 1 ano depois...
Postado (editado)

Boa noite, resolvi "reabrir" este tópico em vez de duplicar o assunto criando outro, na verdade, eu estou implementando uma msg automática para consultas agendadas em meu sistema, quando digitei a msg com os devidos acentos deu este erro "+ cms error:305", se eu tirar os acentos a msg é enviada, porém, o cliente é extremamente correto e quer a grafia certa, então resolvi pedir ajuda pra saber o porque e como resolver este problema.....obrigado parceiros.......

Editado por Diemes Ruas
  • Curtir 1
  • 1 ano depois...
Postado (editado)

Essa regra é imposta pelas operadoras.

 

Peça para o cliente enviar uma mensagem do celular dele com palavras acentuadas e verificar a mensagem no celular de quem recebeu.

 

Vai ver que a mensagem chega sem acentuação.

Editado por giulianon

Giuliano Naspolini Ribeiro

Automalog Consultoria e Sistemas Ltda

  • 4 meses depois ...
Postado

Estou usando um mini-modem 3G USB da marca HUAWEI, modelo E173 com chip Tim-Beta e também estava recebendo a mensagem de erro "Error +cms 305" sempre que tentava enviar uma mensagem com mais de um caractere. E mesmo quando conseguia enviar usando apenas 1 caractere a mensagem chegava completamente em branco para o destinatário. 

Depois de pesquisar um pouco achei em um fórum gringo um cara explicando que esse erro ocorre dependendo do tipo do modo de envio, e que para enviar somente texto deve-se usar o comando "AT+CSCS="GSM". A partir daí foi só mudar na unit ACBRSMSClass a seguinte linha:

  // definir o modo de envio ***************************************************
  Cmd := 'AT+CSCS="GSM"'; // 'AT+CMGF=1';
  Self.EnviarComando(Cmd);
  if not Self.ATResult then
    raise EACBrSMSException.Create(FALHA_INICIALIZACAO + sLineBreak + fpUltimaResposta);

 

Depois dessa alteração funcionou perfeitamente e consegui enviar sem problemas. Não entendo muito sobre o funcionamento do SMS mas acho que poderíamos fazer uma alteração no componente para permitir selecionar o modo de envio do texto para aumentar a compatibilidade com outros modems e outros serviços de envio.

Eu estou disposto a fazer essa alteração na classe, se aceitarem, ou deixo aqui a idéia para que a alteração seja feita por alguém que entenda melhor do assunto.

UM abraço!

  • 1 ano depois...
Postado

Nossa estou com uma dor de cabeça tentando resolver o envio de sms alguem pode dar uma luz ai ? 


 

unit USMS;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, AdvSmoothPanel, AdvSmoothLabel, StdCtrls,
  ShellApi, DB, MemDS, DBAccess, MyAccess, IniFiles, ACBrSMSDaruma, ACBrBase,
  ACBrSMS, ACBrSMSClass, StrUtils, JvComponentBase, JvTrayIcon, Menus, ImgList,
  System.ImageList, Vcl.ComCtrls, Vcl.Grids, Vcl.DBGrids;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Conexao: TMyConnection;
    MySmsTemp: TMyQuery;
    DSsmsTemp: TDataSource;
    MyConfiguracoes: TMyQuery;
    DSConfiguracoes: TDataSource;
    MyConfiguracoesModeloSms: TStringField;
    MyConfiguracoesPortaSms: TStringField;
    MyConfiguracoesVelocidadeSms: TIntegerField;
    MySmsTempTelefone: TStringField;
    MySmsTempMensagem: TStringField;
    ACBrSMS1: TACBrSMS;
    MySmsTempstatus: TStringField;
    MySmsTempID: TIntegerField;
    timerInfos: TTimer;
    PopupMenu1: TPopupMenu;
    Fecharoaplicativo1: TMenuItem;
    JvTrayIcon1: TJvTrayIcon;
    ImageList1: TImageList;
    rdgBandeja: TRadioGroup;
    btnTrocarChip: TButton;
    lb_listaEnviados: TListBox;
    Panel1: TPanel;
    ProgressBar1: TProgressBar;
    lb_progresso: TLabel;
    btnativar: TButton;
    GroupBox1: TGroupBox;
    lb_mensagemEnviar: TLabel;
    lb_serverOnline: TLabel;
    lb_sinal: TLabel;
    lb_modeloModem: TLabel;
    lb_operadora: TLabel;
    DBGrid1: TDBGrid;
    Panel2: TPanel;
    Panel3: TPanel;
    MyConfiguracoesSmsTimeOut: TIntegerField;
    procedure Label4Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure timerInfosTimer(Sender: TObject);
    procedure Fecharoaplicativo1Click(Sender: TObject);
    procedure btnTrocarChipClick(Sender: TObject);
    procedure ACBrSMS1Progresso(const AAtual, ATotal: Integer);
    procedure btnativarClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    procedure EnviarSMS;
    procedure ModeloSMS;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Modelo:Integer;
  vStatus:String;

implementation

Const

C1 = 32827;
C2 = 94854;

{$R *.dfm}

function Descryptografar(const S: ShortString; Key: Word): String;
var
  I: byte;
  x: char;
begin
  result := '';
  i := 1;
  while (i < Length(S)) do
  begin
    x := char(strToInt('$' + Copy(s, i, 2)));
    Result := result + char(byte(x) xor (Key shr 8));
    Key := (byte(x) + Key) * C1 + C2;
    Inc(i, 2);
  end;
end;

procedure TForm1.ACBrSMS1Progresso(const AAtual, ATotal: Integer);
begin
  lb_progresso.Caption := Format('%d de %d', [AAtual, ATotal]);

  ProgressBar1.Position := AAtual;
  ProgressBar1.Max      := ATotal;

  Application.ProcessMessages;
end;

procedure TForm1.btnTrocarChipClick(Sender: TObject);
begin
  if ACBrSMS1.BandejasSimCard < 2 then
    raise Exception.Create('Este modelo possui somente uma bandeja de SimCard.');

  if rdgBandeja.ItemIndex = 0 then
    ACBrSMS1.TrocarBandeja(simCard1)
  else
    ACBrSMS1.TrocarBandeja(simCard2);

  ShowMessage(
    'Pronto.' +
    sLineBreak +
    sLineBreak +
    'Última resposta:' + sLineBreak +
    String(ACBrSMS1.UltimaResposta)
  );
end;

procedure TForm1.btnativarClick(Sender: TObject);
begin
  if not ACBrSMS1.Ativo then
  begin
    ACBrSMS1.Modelo       := TACBrSMSModelo( Modelo );
    ACBrSMS1.Device.Porta := MyConfiguracoesPortaSms.AsString;
    ACBrSMS1.Device.Baud  := MyConfiguracoesVelocidadeSms.AsInteger;
    ACBrSMS1.ATTimeOut    := MyConfiguracoesSmsTimeOut.AsInteger;
    ACBrSMS1.Ativar;

    btnAtivar.Caption := 'Desativar';

    Timer1.Enabled:=True;
    timerInfos.Enabled:=True;

    vStatus := 'livre';

    // menTrocarBandeja.Visible := ACBrSMS1.BandejasSimCard > 1;
  end
  else
  begin
    Timer1.Enabled:=False;
    timerInfos.Enabled:=False;
    ACBrSMS1.Desativar;
    btnAtivar.Caption := 'Ativar';
  end;
end;

procedure TForm1.EnviarSMS;
var
  Indices: String;
  LoteMsgs: TACBrSMSMensagens;
  vQtdMsg : Integer;
begin
    LoteMsgs := TACBrSMSMensagens.Create;
    try
      // envio de lote apartir de arquivo
      // cada linha do arquivo é uma mensagem, seguinte o padrão:
      // 1122223333|Mensagem que deseja enviar
      //
//      LoteMsgs.LoadFromFile(OpenDialog1.FileName);

      {
        Pode ser populada a mão utilizado o método Add, assim o usuário pode
        montar a lista a partir de uma tabela no banco de dados por exemplo

        Exemplo: }
        vQtdMsg:=0;
        Timer1.Enabled:=False;
        Application.ProcessMessages;
        MySmsTemp.First;

        while not MySmsTemp.Eof do
        begin
          vStatus := 'enviando';

          if Length(MySmsTempTelefone.AsString) > 7 then
          begin
            with LoteMsgs.Add do
            begin
              Telefone := MySmsTempTelefone.AsString;
              Mensagem := MySmsTempMensagem.AsString;
              vQtdMsg := vQtdMsg+1;
            end;
          end;

          MySmsTemp.Delete;
          Application.ProcessMessages;
        end;

      lb_mensagemEnviar.Caption := 'Mensagens a Enviar : '+IntToStr(vQtdMsg);

      ACBrSMS1.EnviarSMSLote(LoteMsgs, Indices);

      lb_listaEnviados.Items.Add('Lote de : ' + IntToStr(vQtdMsg) + ' mensagens enviadas - '+TimeToStr(Time));
      Application.ProcessMessages;

    finally
      LoteMsgs.Free;
      MySmsTemp.Refresh;
      vStatus := 'livre';
      Timer1.Enabled:=True;
      ProgressBar1.Position:=0;
      lb_progresso.Caption := 'Progresso de Envio';
      Application.ProcessMessages;
    end;

end;


procedure TForm1.Fecharoaplicativo1Click(Sender: TObject);
begin
  Application.Terminate;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 ACBrSMS1.Desativar;
end;

procedure TForm1.FormShow(Sender: TObject);
Var
  Username, Password,Database,Server,Port : String;
  ArqINI : TIniFile;
begin
   try
    // Conexão Com arquivo Conf.ini    (Inicio)
    ArqINI   := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Config.ini');
    Username := Descryptografar(ArqINI.ReadString('UNICHEFF','Username',''),0);
    Password := Descryptografar(ArqINI.ReadString('UNICHEFF','Password',''),0);
    Database := Descryptografar(ArqINI.ReadString('UNICHEFF','Database',''),0);
    Server   := Descryptografar(ArqINI.ReadString('UNICHEFF','Server',''),0);
    Port     := Descryptografar(ArqINI.ReadString('UNICHEFF','Port',''),0);
    // Fim
    Conexao.Username := Username;
    Conexao.Password := Password;
    Conexao.Port     := StrToInt(Port);
    Conexao.Database := Database;
    Conexao.Server   := Server;
    Conexao.Connected:= True;

    MySmsTemp.Active:=True;
    MyConfiguracoes.Active:=True;

   except
    ShowMessage('Erro na base de dados');
    Application.Terminate;
   end;

    MySmsTemp.Close;
    MySmsTemp.SQL.Clear;
    MySmsTemp.SQL.Add('select * from sms_temp where status = 0 ');
    MySmsTemp.Open;

    ModeloSMS;

    btnativar.Click;
end;

procedure TForm1.Label4Click(Sender: TObject);
begin
  ShellExecute(Handle,'Open','http://www.unitechsistemas.com.br/','','',1);
end;

procedure TForm1.ModeloSMS;
begin
  if MyConfiguracoesModeloSms.Asstring = 'modNenhum'   then Modelo := 0;
  if MyConfiguracoesModeloSms.Asstring = 'modDaruma'   then Modelo := 1;
  if MyConfiguracoesModeloSms.Asstring = 'modZTE'      then Modelo := 2;
  if MyConfiguracoesModeloSms.Asstring = 'modGenerico' then Modelo := 3;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  MySmsTemp.Refresh;
  Application.ProcessMessages;
    if not MySmsTemp.Eof then
    begin
     if vStatus = 'livre' then
       EnviarSMS;
    end;
end;

procedure TForm1.timerInfosTimer(Sender: TObject);
var
  Msg: String;
begin
  Msg := IfThen(ACBrSMS1.EmLinha, 'SMS em linha', 'SMS não está em linha.');
  lb_serverOnline.Caption:=Msg;
  lb_operadora.Caption:=ACBrSMS1.Operadora;
  lb_sinal.Caption:='Sinal : '+FloatToStr(ACBrSMS1.NivelSinal);
  lb_modeloModem.Caption:='Modelo do Modem : '+ACBrSMS1.ModeloModem;
end;

end.

 

esta ocorrendo o mesmo erro. CMS ERROR 500

tipo crio um lote de umas 2000 mensagens mais da esse erro , e ontem começou enviar mas parava no meio enviou umas 170 somente

Postado

o erro eu consiguir descobrir o que era, mas agora na maquina do cliente acontece o seguinte , falha ao definir numero do destinatario .... o acbrsms em si não esta funcionando na maquina dele, pois testei até com o exemplo do acbr compilado . ja formatei a maquina do cliente também

  • Este tópico foi criado há 2843 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.