Jump to content
Fivewin Brasil

SMS longo


hcunha

Recommended Posts

Oi Tales,

          Desculpe a demora pra responder amigo. Vai logo abaixo a rotina pra enviar SMS caso ainda precise ou se alguém do fórum precisar. Pra enviar pra vários modens basta selecionar as portas seriais de cada modem que acredito que vai enviar normalmente, ou coloque um loop pra correr entre as portas dos modens e enviar de cada serial.

* A rotina abaixo é bem simples e funciona perfeitamente. Já tenho 4 clientes usando as mensagens sem problema

          cMsg := alltrim(cMsg) // Aqui é a mensagem
          cTel := alltrim(cTel) // Aqui é o telefone  que vai receber a mensagem. Lembrando que tem que ser '55'+codigo de area+numero do celular
          nBits := 9600 // Aqui é parametro da porta serial, normalmente é 9600
          cPort := '04' //Aqui a porta serial, no caso é a porta 04
          smsenviado := .f. // Aqui é só uma variável pra retornar .t. ou .f. caso envie ou não o sms


** Aqui abre a porta serial do modem

          cBuffer := space(2048)
          nComm := OpenComm("COM"+alltrim(str(cPort)), 9600, 128)
          if BuildCommDcb("COM"+alltrim(str(cPort))+":9600,n,8,1", @cBuffer )
             if !SetCommState(cBuffer)
                msgmens('Erro ao abrir porta serial '+alltrim(str(cPort)),'Atenção',1)
                CloseComm(nComm)
                return .f.
             endif

** Aqui inicia a comunicação com o primeiro parametro AT             
             if(nBytes := WriteComm(nComm,"AT"+Chr(13))) < 0
                msgmens('Erro ao gravar comando AT na serial '+alltrim(str(cPort)),'Atenção',1)
                CloseComm(nComm)
                return .f.
             endif
             sysWait(1)
             
** Aqui configura pra mensagem de texto                                    
             if(nBytes := WriteComm(nComm,"AT+CMGF=1"+Chr(13))) < 0
                msgmens('Erro ao gravar comando CMGF=1 na serial '+alltrim(str(cPort)),'Atenção',1)
                CloseComm(nComm)
                return .f.
             endif
             sysWait(1)


** Aqui envia a mensagem  

             if(nBytes := WriteComm(nComm,"AT+CMGS="+Chr(34)+cTel+Chr(34)+Chr(13)+cMsg+Chr(26))) < 0
                msgmens('Erro ao gravar comando AT+CMGS na serial '+alltrim(str(cPort)),'Atenção',1)
                CloseComm(nComm)
                return .f.
             endif
             sysWait(1)
             

** Aqui finaliza o envio fixando os valores na saida serial do modem
                          
             if FlushComm(nComm,1 ) != 0
                msgmens('Erro ao fixar mensagem na serial '+alltrim(str(cPort)),'Atenção',1)
                CloseComm(nComm)
                return .f.
             endif
             sysWait(1)
             smsenviado := .t.
          else
             msgmens('Porta serial não conectada','Atenção',1)
             CloseComm(nComm)
             return .t.
          endif        

** Aqui finaliza o procedimento
          if FlushComm(nComm,1) != 0
             msgmens('Erro ao fixar gravação de dados na serial'+alltrim(str(cPort)),'Atenção',1)
             return .f.
          endif
          
          CloseComm(nComm)

        endif
 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...