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