Jump to content
Fivewin Brasil

DLL32 FUNCTION


gibaf

Recommended Posts

ola a todos...

 

estou implementando o posto de gasolina, utilizando a dell "CompanyTec.Dll" e estou precisando executar as funcoes dessa dll. Para tanto, vou ter q utilizar o DLL32 FUNCTION, mas estou sem saber como declarar os tipos de variaveis, aquelas, na chamada da funcao....

 

por exemplo:

 

Function Teste()

Local lRet := InicializaSocket("localhost")

Return(lRet)

 

 

DLL32 FUNCTION InicializaSocket(cIP as STRING) AS BOOL PASCAL LIB "CompanyTec.Dll"

 

 

 

1) aqui foi usado as STRING, mas tem tambem outro tipos... essas q queria saber: qual sao todos os tipos q posso utilizar ?

 

2) bem como as q estao fora do parenteses, antes do PASCAL.

 

 

desde ja agradeco a ajuda: MUITO OBRIGADO !!!

Link to comment
Share on other sites

Olá

 

veja no HELP do FW a função "GetProc32"

 

lá no HELP estão descritos os tipos de variáveis, bem como os parâmetros e para que os mesmos servem

 

na verdade quando vc usa o comando "DLL32 FUNCTION..." internamente o FW traduz o comando para que essa função seja utilizada (veja em DLL.CH)

 

abraço

Link to comment
Share on other sites

Ente os parenteses são os parâmetros da função, tem que olhar no manual ou em um exemplo ( Deplhi é o indicado pois já vai em Pascal ) e depois dos parenteses é o tipo de retorno.

Os tipos possíveis são todos os do Pascal, os mais comuns são STRING, _INT, PTR

Link to comment
Share on other sites

Como fazer pra variavel @cContem receber a referencia da funcao GetAbastecimento, no codigo abaixo :

 

nao sei o q esta faltando, estou fazendo asssim:

 

 

Funtion Teste()

Local cDll       := "CompanyTec.Dll"

Private DllPosto ,  cContem  := ""

If File( cDll)
    DllPosto := LoadLibrary(cDll)
    If InicializaSocket("localhost") 
         nRetorno := GetAbastecimento(@cContem)

         If nRetorno = 1 // 1=tem abastecimento

               MsgAlert("Informacoes do abastecimento: "+cContem

         Else            // 0-nao teve abastecimento

               MsgAlert("nao teve abastecimento.")

         Endif

         FreeLibrary(DllPosto)

    Else

         MsgAlert("Falha na conexao")

     Endif

Else

    MsgAlert("Arquivo CompanyTec.Dll nao Existe.")

Endif

Return(Nil)

 

 

DLL32 FUNCTION InicializaSocket(cIP as STRING)  AS BOOL PASCAL LIB DllPosto

DLL32 FUNCTION GetAbastecimento(@Dado as PTR) AS _INT PASCAL LIB DllPosto

 

 

mas, da impressao q a variavel cContem contem algum tipo de handle, e nao o conteudo q deveria ter, e o unico tipo q consegui fazer com q a variavel cContem tivesse referencia na funcao GetAbatecimento foi o tipo PTR, as outras nao continuava a execucao da app

 

ou como conseguir pegar a informacao do handle ??

 

desde ja agradeco a ajuda q vier: MUITO OBRIGADO

Link to comment
Share on other sites

Olha ja use implementaçao com dll em um modem daruma aqui vai o codigo dele , caso queira se basear 

#Include 'Fivewin.Ch'
#Include 'Dll.Ch'
#Include 'ribbon.Ch'
#Define CLR_SKY    nRGB( 202, 228, 255 )
#Define CLR_AZUL_BRANCO nRGB( 040, 004, 090 )
/*
Exemplo de Como Usar:
... 
aVetor:={}
aadd(aVetor,{"Titulo da Funçao",{||Funcao()}}
aadd(aVetor,{"Titulo da Funçao",{||Funcao()}}

Modem_1(aVetor)

...
*/
Function Modem_1(aProcesso) // Funçao PARA Abertura 
   
	Local oBmp1,oEtapa,oContador,oDlgModem
   Local cEtapa:="Daruma Modem",nContador,x,nProcesso:=len(aProcesso),lFim:=.f.,xRet
   nContador:=0
   
   Define Dialog oDlgModem Resource "DLG_MODEM_ABERTURA" Brush oBrushPapel1
   
   REDEFINE IMAGE oBmp1 ID 10 OF oDlgModem NAME "MODEMDARUMA" Adjust
   Redefine Say oEtapa Prompt cEtapa ID 11 Of oDlgModem
   REDEFINE PROGRESS oContador ID 12 OF oDlgModem
   Activate Dialog oDlgModem Centered Nowait Valid lFim
   Sysrefresh()
	oContador:SetRange( 0,3+nProcesso)
   oContador:SetStep( 1 )
   
	
   if !DllDarumaLoad()
      lFim:=.t.
		oDlgModem:ENd()
		return .f.
   endif   
   cEtapa:="Modem Daruma - Define Produto"
   nContador++;oContador:SetPos( nContador );oEtapa:Refresh()
   if  Modem_Definir(.t.)#1
      lFim:=.t.
		oDlgModem:ENd()
		return .f.
   endif   
   
   SysWait(.5)
   cEtapa:="Modem Daruma - Ajusta Velocidade de Transmissão"
   nContador++;oContador:SetPos( nContador );oEtapa:Refresh()
   if Modem_Velocidade(.t.)#1
      lFim:=.t.
		oDlgModem:ENd()
		return .f.
   endif   
   SysWait(.5)
   cEtapa:="Modem Daruma - Inicialização"
   nContador++;oContador:SetPos( nContador );oEtapa:Refresh()
   if Modem_Inicializa(.t.)#1
      lFim:=.t.
		oDlgModem:ENd()
		return .f.
   endif   
   SysWait(.5)
   
	For x:=1 to nProcesso
       cEtapa:=aProcesso[x][1]
		 nContador++;oContador:SetPos( nContador );oEtapa:Refresh()
		 xRet:=eval(aProcesso[x][2])
		 if xRet#1
		    MsgInfo("Daruma -"+aProcesso[x][1]+CRLF+" Erro Encontrado !"+CRLF+"Numero: "+ strzero(xRet,3,0),"Informação")
			 lFim:=.t.
			 oDlgModem:ENd()
			 Return .f.
		 endif   
		 SysWait(.5)
	Next	 
   DllDarumaUnLoad()       
   lFim:=.t.
	oDlgModem:End()
       
Function Meter_Funcao(aProcesso,cTitulo) // Funçao Outros Processos
   
	Local oBmp1,oEtapa,oContador,oDlgModem
   Local cEtapa:=cTitulo,nContador,x,nProcesso:=len(aProcesso),lFim:=.f.
   nContador:=0
   
   Define Dialog oDlgModem Resource "DLG_MODEM_ABERTURA" Brush oBrushPapel1
   
   REDEFINE IMAGE oBmp1 ID 10 OF oDlgModem NAME "MODEMDARUMA" Adjust
   Redefine Say oEtapa Prompt cEtapa ID 11 Of oDlgModem
   REDEFINE PROGRESS oContador ID 12 OF oDlgModem
   Activate Dialog oDlgModem Centered Nowait Valid lFim
   Sysrefresh()
	oContador:SetRange( 0,nProcesso)
   oContador:SetStep( 1 )
   For x:=1 to nProcesso
       cEtapa:=aProcesso[x][1]
		 nContador++;oContador:SetPos( nContador );oEtapa:Refresh()
		 eval(aProcesso[x][2])
		 SysWait(.5)
	Next	 
   lFim:=.t.
	oDlgModem:End()
       
   
Return .t.
Function Modem_1_Sms(cNumero)

            Local cMsg:=space(1000),oDlgModemSms,aProcessos:={},lSave:=.f.
            Default cNumero:=space(0)
				cNumero:=cNumero+space(9999)
            Define Dialog oDlgModemSms Resource "DLG_MODEM_SMS" Brush oBrushPapel1
     
            DEFINE FONT   oFontrb     NAME     "Lucida Console"  SIZE 0,-15
            REDEFINE RBBTN oInfoBar3 ID 10 OF oDlgModemSms  PROMPT "Enviar Sms " CENTER  ADJUST  SAYBUTTON ROUND LINECOLORS CLR_SKY,CLR_AZUL_BRANCO
            Set font to oFontrb of oInfoBar3
	
	  
            Redefine Get oNumero var cNumero id 11 of oDlgModemSms valid ! Empty(cNumero)
            oNumero:cToolTip:="Para Enviar a mais de um Destinatário Siga o Exemplo:"+CRLF+;
                    "08388213032|08199874567 , Nao use * , ( ) Alem do | é usado para separar ,  "+CRLF+;
						  " os Numeros dos Destinatários"
                  
            Redefine Get oMsg var cMsg id 12 of oDlgModemSms MULTILINE valid ! Empty(cMsg)
	  
            Redefine ButtonBmp oBmp01 Id 13 of oDlgModemSms Prompt "Enviar" action (lSave:=.t.,oDlgModemSmS:End()) bitmap cbitmaps+"sms.bmp" adjust
            Redefine ButtonBmp oBmp01 Id 14 of oDlgModemSms Prompt "Retornar" action (lSave:=.f.,oDlgModemSmS:End()) bitmap cbitmaps+"cancelar.bmp" cancel
 
            Activate Dialog oDlgModemSms Centered
            if lsave
					aadd(aProcessos,{"Envia Sms ",{|| Modem_EnviaSmsVarios(cNumero,alltrim(cMsg),"SIM1",.t.)}})
               Modem_1(aProcessos)
            endif
	  

FUNCTION DllDarumaLoad()
      	if ! File(cdll+"DarumaFrameWork.dll")
	           MsgAlert("Atenção o Equipamento Modem Daruma não localizado e a Dll DarumaFrameWork Não está na Pasta, se faz necessário a aquisição do Mini Modem Externo min 210a , Contate o departamento comercial da Inteligence Informatica para aquisição do equipamento","Atençao"  )
	           RETURN .f.
	      Else
   	        hDllDaruma :=  LoadLib32( cdll+"DarumaFrameWork.dll" )
              RETURN .t.
         Endif

FUNCTION DllDarumaUnLoad()
   FreeLibrary( hDllDaruma )
   RETURN nil

Function Modem_Inicializa(lMensagem)//Ok

   Local nRetorno:=0 // Numero do Retorno
   Default lMensagem:=.f.
   nRetorno:=eInicializar_MODEM_DarumaFramework()
   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      case nRetorno == -1
         msgalert( "Erro na comunicação da serial.","Alerta"  )
      case nRetorno == -2
         msgalert( "Modem retornou erro.","Alerta"  )
      case nRetorno == -3
         msgalert( "Modem retornou caractere(s) invalido(s)","Alerta"  )
      case nRetorno == -4
         msgalert( "Modem não conectado na rede GSM","Alerta"  )
      endcase
   endif
   Return nRetorno

Function Modem_ApagaSms(nIndiceMensagem,lMensagem)// Numero da Mensagem
   Local nRetorno:=0

   nRetorno:=eApagarSms_MODEM_DarumaFramework(nIndiceMensagem)
   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      case nRetorno == -1
         msgalert( "Erro na comunicação da serial.","Alerta"  )
      case nRetorno == -2
         msgalert( "Modem retornou erro.","Alerta"  )
      endcase
   endif
   return nRetorno
Function Modem_EnviarDados(cParamentros,lMensagem)
   // Essa Funçao tem que receber o cParametros como Referencia
   Local nRetorno:=0

   nRetorno:=tEnviarDadosCsd_MODEM_DarumaFramework(@cParametros)
   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      case nRetorno == -1
         msgalert( "Erro na comunicação da serial.","Alerta"  )
      endcase
   endif

   Return nRetorno

Function Modem_RecebeDados(cParamentros,lMensagem)
   // Essa Funçao tem que receber o cParametros como Referencia
   Local nRetorno:=0

   nRetorno:=rReceberDadosCsd_MODEM_DarumaFramework(@cParametros)
   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      case nRetorno == -1
         msgalert( "Erro na comunicação da serial.","Alerta"  )
      endcase
   endif

   Return nRetorno

Function Modem_AtivaDados(lMensagem)
   Local nRetorno:=0
   Default lMensagem:=.f.
   nRetorno:=eAtivarConexaoCsd_MODEM_DarumaFramework()
   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      case nRetorno == -1
         msgalert( "Erro na comunicação da serial.","Alerta"  )
      case nRetorno == -2
         msgalert( "Modem Retornou Erro.","Alerta"  )
      endcase
   endif
   return nRetorno
Function Modem_FinalizaChamada(lMensagem)
   Local nRetorno:=0
   Default lMensagem:=.f.
   nRetorno:=eFinalizarChamadaCsd_MODEM_DarumaFramework()
   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      case nRetorno == -1
         msgalert( "Erro na comunicação da serial.","Alerta"  )
      case nRetorno == -2
         msgalert( "Modem Retornou Erro.","Alerta"  )
      endcase
   endif
   return nRetorno
   
Function Modem_RealizaChamada(cParametros,lMensagem)
   Local nRetorno:=0
   Default lMensagem:=.f.
   nRetorno:=eRealizarChamadaCsd_MODEM_DarumaFramework(cParametros)
      
   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      case nRetorno == -1
         msgalert( "Erro na comunicação da serial.","Alerta"  )
      case nRetorno == -2
         msgalert( "Modem Retornou Erro.","Alerta"  )
      case nRetorno == -3
         msgalert( "Modem retornou caractere(s) invalido(s).","Alerta"  )
      case nRetorno == -4
         msgalert( "Modem não conectado na rede GSM.","Alerta"  )
      case nRetorno == -5
         msgalert( "Você Não Possue Creditos Suficientes para realizar essa chamada.","Alerta"  )
      case nRetorno == -6
         msgalert( "Sem Tom de Discagem","Alerta"  )
      case nRetorno == -7
         msgalert( "Numero Ocupado.","Alerta"  )
      endcase
   endif
   return nRetorno
   *
Function Modem_TotalSms(nTipoSms,nTotalSms,lMensagem)//+-
   // nTotalSms - Deve Ser Passada Por Referencia
   Local nRetorno:=0
   Default lMensagem:=.f.
   // nTipoSms Pode Ser 0 , 1 , 2 : Todas As Mensagens , Lidas e Não Lidas
   nRetorno:=rTotalSms_MODEM_DarumaFramework(nTipoSms,@nTotalSms)
   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      case nRetorno == -1
         msgalert( "Erro na comunicação da serial.","Alerta"  )
      case nRetorno == -2
         msgalert( "Modem Retornou Erro.","Alerta"  )
      case nRetorno == -3
         msgalert( "Modem retornou caractere(s) invalido(s).","Alerta"  )
      endcase
   endif
   return nRetorno

Function Modem_Operadora(cOperadora,lMensagem)//Ok
   // cOperadora Precisa ser passado como referencia
   Local nRetorno:=0
   Default lMensagem:=.f.
   nRetorno:=rRetornarOperadora_MODEM_DarumaFramework(@cOperadora)
   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      case nRetorno == -1
         msgalert( "Erro na comunicação da serial.","Alerta"  )
      case nRetorno == -2
         msgalert( "Modem Retornou Erro.","Alerta"  )
      case nRetorno == -3
         msgalert( "Modem retornou caractere(s) invalido(s).","Alerta"  )
      endcase
   endif
   return nRetorno

Function Modem_Imei(cImei,lMensagem)//OK
   // Necessario passar por referencia
   Local nRetorno:=0
   Default lMensagem:=.f.
   nRetorno:=rRetornarImei_MODEM_DarumaFramework(@cImei)
   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      case nRetorno == -1
         msgalert( "Erro na comunicação da serial.","Alerta"  )
      case nRetorno == -2
         msgalert( "Modem Retornou Erro.","Alerta"  )
      case nRetorno == -3
         msgalert( "Modem retornou caractere(s) invalido(s).","Alerta"  )
      endcase
   endif
   return nRetorno
Function Modem_IdSim(cIdSim,lMensagem)
   //Necessario Passar por referencia
   Local Retorno:=0
   Default lMensagem:=.f.
   nRetorno:=rRetornarIDSIM_MODEM_DarumaFramework(@cIdSim)
   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      case nRetorno == -1
         msgalert( "Erro na comunicação da serial.","Alerta"  )
      case nRetorno == -2
         msgalert( "Modem Retornou Erro.","Alerta"  )
      case nRetorno == -3
         msgalert( "Modem retornou caractere(s) invalido(s).","Alerta"  )
      case nRetorno == -8
         msgalert("Modem retornou resposta incompleta (sem 'OK' ou 'ERRO')","Alerta")
      endcase
   endif
   return nRetorno

Function Modem_SmsIndice(cIndiceSMS,cNumFone,cData,cHora ,cMsg,lMensagem)
   // Exceto cIndiceSMS e lMensagem todas deve ser passadas referencia
   Local nRetorno :=0
   Default lMensagem:=.f.
   nRetorno:=rReceberSmsIndice_MODEM_DarumaFramework(cIndiceSMS,@cNumFone,@cData,@cHora ,@cMsg)
   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      case nRetorno == -1
         msgalert( "Erro na comunicação da serial.","Alerta"  )
      case nRetorno == -2
         msgalert( "Modem Retornou Erro.","Alerta"  )
      case nRetorno == -3
         msgalert( "Modem retornou caractere(s) invalido(s).","Alerta"  )
      endcase
   endif
   Return nRetorno
      
Function Modem_ReceberSms(sIndiceSMS,cNumFone,cData,cHora,cMsg,lMensagem)

   Local nRetorno
   Default lMensagem:=.f.
   nRetorno:=rReceberSms_MODEM_DarumaFramework(sIndiceSMS,cNumFone,cData,cHora,cMsg)

   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      case nRetorno == -1
         msgalert( "Erro na comunicação da serial.","Alerta"  )
      case nRetorno == -2
         msgalert( "Modem Retornou Erro.","Alerta"  )
      case nRetorno == -3
         msgalert( "Modem retornou caractere(s) invalido(s).","Alerta"  )
      case nRetorno > 1
         MsgInfo( "Mensagens a Ser Lidas : "+str(nRetorno,3,0),"Informação"  )
      endcase
   endif
   Return nRetorno

Function Modem_ApagaMensagemAoLer(lApaga,lMensagem)

   Local nRetorno,cParametro
   Default lMensagem:=.f.
   cParametro:=IF( lApaga,"TRUE","FALSE")

   nRetorno:=regLerApagar_MODEM_DarumaFramework(cParametro)
   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      case nRetorno == -1
         msgalert( " Erro de atualização de Chave. ","Alerta"  )
      endcase
   endif
   return nRetorno

Function Modem_Porta(cParametro,lMensagem)

   Local nRetorno
   Default lMensagem:=.f.
   nRetorno:=regPorta_MODEM_DarumaFramework(cParametro)
   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      case nRetorno == -1
         msgalert( "Erro de atualização de Chave. ","Alerta"  )
      endcase
   endif
   return nRetorno

Function Modem_BuscaMensagens(lAtiva,lMensagem)

   Local nRetorno,cThread
   Default lMensagem:=.f.
   cThread:=if(lAtiva,"TRUE","FALSE")

   nRetorno:=regThread_MODEM_DarumaFramework(cThread)

   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      case nRetorno == -1
         msgalert( "Erro de atualização de Chave. ","Alerta"  )
      endcase
   endif
   return nRetorno

Function Modem_MudaVelocidade(cParametro,lMensagem)

   Local nRetorno
   Default lMensagem:=.f.
   nRetorno:=regVelocidade_MODEM_DarumaFramework(cParametro)

   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      case nRetorno == -1
         msgalert( "Erro de atualização de Chave. ","Alerta"  )
      endcase
   endif
   return nRetorno

Function Modem_Definir(lMensagem)//Ok

   Local nRetorno
   Default lMensagem:=.f.
   nRetorno:=eDefinirProduto_Daruma("MODEM")
   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      endcase
   endif
   return nRetorno


Function Modem_TempoAlerta(cParametro,lMensagem)


   Local nRetorno
   Default lMensagem:=.f.
   nRetorno:=regTempoAlertar_MODEM_DarumaFramework(cParametro)
   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      case nRetorno == -1
         msgalert( "Erro de atualização de Chave. ","Alerta"  )
      endcase
   endif
   return nRetorno

Function Modem_JanelaMensagem(cParametro,lMensagem)
   Local nRetorno
   Default lMensagem:=.f.
   nRetorno:=regCaptionWinAPP_MODEM_DarumaFramework(cParametro)
   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      case nRetorno == -1
         msgalert( "Erro de atualização de Chave. ","Alerta"  )
      endcase
   endif
   return nRetorno

Function Modem_Resetar(lMensagem)
   Local nRetorno
   Default lMensagem:=.f.
   nRetorno:=eReiniciar_MODEM_DarumaFramework(cParametro)
   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      endcase
   endif
   return nRetorno

Function Modem_EnviaSmsVarios(cNumero , cMsg , cSIM ,lMensagem) //Ok

   Local nRetorno,nMsg,nInicia,nTamanho,nNum
   Default lMensagem:=.f.
   Default cSIM:="SIM1"
   
   cnumero:=StrTran(StrTran(StrTran(StrTran(StrTran(StrTran(cNumero,"(",""),")",""),"-",""),"*",""),".",""),",","")
   aNumeros:= HB_ATokens(cNumero,"|")
					
   For nNum:=1 to len(aNumeros)
      nInicia:=1
      nTamanho:=Round( if(len(cMsg)<100,1,len(cMsg)/100),0)
	
      for nMsg:=1 to nTamanho
         nRetorno:=tEnviarSmsOperadora_MODEM_DarumaFramework(aNumeros[nNum] ,  SubStr(cMsg,nInicia,140)  , cSIM)
         nInicia:=nInicia+140
         if lMensagem
            do case
            case nRetorno == 0
               msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
            case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
               msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
            case nRetorno == -1
               msgalert( "Erro na comunicação da serial.","Alerta"  )
            case nRetorno == -2
               msgalert( "Modem retornou erro.","Alerta"  )
            case nRetorno == -3
               msgalert( "Modem retornou caractere(s) invalido(s).","Alerta"  )
            endcase
         endif
         SysWait(.5)
      Next
   Next
   Return nRetorno

Function Modem_Velocidade(lMensagem)//Ok
   Local nRetorno
   Default lMensagem:=.f.
   nRetorno:=eBuscarPortaVelocidade_MODEM_DarumaFramework()
   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      endcase
   endif
   return nRetorno
Function Modem_Informacao(cInfoEstendida,lMensagem)
   Local nRetorno
   Default lMensagem:=.f.
   nRetorno:=rInfoEstendida_MODEM_DarumaFramework(cInfoEstendida)
   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      endcase
   endif
   return nRetorno
   
Function Modem_NumeroLigacao(cNumero,lMensagem)
   Local nRetorno
   Default lMensagem:=.f.
   // cNumero precisa ser passado como referencia
   nRetorno:=rRetornarNumeroChamada_MODEM_DarumaFramework(@cNumero)
   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      case nRetorno == -1
         msgalert( "Erro da Comunicação Serial.","Alerta"  )
      case nRetorno == -2
         msgalert( "Modem retornou Erro .","Alerta"  )
      case nRetorno == -3
         msgalert( "Modem retornou caracteres inválidos.","Alerta"  )
      case nRetorno == -8
         msgalert( "Modem retornou resposta incompleta (sem 'OK' ou 'ERRO'). ","Alerta"  )
      endcase
   endif
   
   Return nRetorno

Function Modem_Sinal(lMensagem)

   Local nRetorno
   Default lMensagem:=.f.
   nRetorno:=rNivelSinalRecebido_MODEM_DarumaFramework()
   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      case nRetorno == -1
         msgalert( "Erro da Comunicação Serial.","Alerta"  )
      case nRetorno == -2
         msgalert( "Modem retornou Erro .","Alerta"  )
      case nRetorno == -3
         msgalert( "Modem retornou caracteres inválidos.","Alerta"  )
      case nRetorno > 0
         msginfo( "Nivel do Sinal : "+ Str( nRetorno,4,0)   , "Informação" )
      endcase
   endif
   return nRetorno

Function Modem_ListaMensagem(lMensagem)
   Local nRetorno
   Default lMensagem:=.f.
   nRetorno:=rListarSms_MODEM_DarumaFramework()
   // Precisa Manipular o XML para Obter as Mensagens
   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      case nRetorno == -1
         msgalert( "Erro da Comunicação Serial.","Alerta"  )
      case nRetorno == -2
         msgalert( "Modem retornou Erro .","Alerta"  )
      case nRetorno == -3
         msgalert( "Modem retornou caracteres inválidos.","Alerta"  )
      case nRetorno == -8
         msgalert( "Modem retornou resposta incompleta (sem 'OK' ou 'ERRO'). ","Alerta"  )
      endcase
   endif
   
   Return nRetorno

Function Modem_ListaMensagemNumero(cNumero,lMensagem)
   Local nRetorno
   Default lMensagem:=.f.
   nRetorno:=rListarSMSTelefone_MODEM_DarumaFramework(cNumero)
   // Precisa Manipular o XML para Obter as Mensagens
   if lMensagem
      do case
      case nRetorno == 0
         msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
      case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
         msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
      case nRetorno == -1
         msgalert( "Erro da Comunicação Serial.","Alerta"  )
      case nRetorno == -2
         msgalert( "Modem retornou Erro .","Alerta"  )
      case nRetorno == -3
         msgalert( "Modem retornou caracteres inválidos.","Alerta"  )
      case nRetorno == -8
         msgalert( "Modem retornou resposta incompleta (sem 'OK' ou 'ERRO'). ","Alerta"  )
      endcase
   endif
   
   Return nRetorno
Function Modem_EnviaSms(cNumero,cMensagem,lMensagem)

   Local nRetorno,nMsg,nInicia,nTamanho,nNum
   Default lMensagem:=.f.
   cNumero:=StrTran(StrTran(StrTran(StrTran(StrTran(StrTran(cNumero,"(",""),")",""),"-",""),"*",""),".",""),",","")
   aNumeros:= HB_ATokens(cNumero,"|")
					
   For nNum:=1 to len(aNumeros)
      nInicia:=1
      nTamanho:=Round( if(len(cMensagem)<100,1,len(cMensagem)/100),0)
      for nMsg:=1 to nTamanho
         nRetorno:=tEnviarSms_MODEM_DarumaFramework(aNumeros[nNum] ,  SubStr(cMensagem,nInicia,140))
         nInicia:=nInicia+140
         if lMensagem
            do case
            case nRetorno == 0
               msgalert( "Erro de comunicação, não foi possível enviar o método.","Alerta"  )
            case nRetorno == 1 .and. File("c:\modem.sys")      // Comentar esse case apos a conclusão , agora usado como debug do processo
               msginfo( "OK, Sucesso ao enviar o método.","Informaçao"  )
            case nRetorno == -1
               msgalert( "Erro na comunicação da serial.","Alerta"  )
            case nRetorno == -2
               msgalert( "Modem retornou erro.","Alerta"  )
            case nRetorno == -3
               msgalert( "Modem retornou caractere(s) invalido(s).","Alerta"  )
            endcase
         endif
      Next
   Next
   Return nRetorno

DLL32 function eApagarSms_MODEM_DarumaFramework(iNumeroSMS AS STRING) AS LONG PASCAL LIB  hDllDaruma
//Permite excluir a mensagem selecionada na memória do Modem.
//O método é  geralmente usado quando o desenvolvedor deseja que a DarumaFramework, apague a mensagem lida evitando assim o armazenamento excessivo de mensagens no modem no qual poderia resultar no não recebimento de novas mensagens devido ao limite imposto em seu SimCard.
//Caso você deseja que a DarumaFramework.dll após a leitura da mensagem execute uma ação para excluir automaticamente, existe uma chave no registro do modem chamada LerApagar, no qual realiza esta função.
//Sintaxe:
//eApagarSms_MODEM_DarumaFramework( char *pszIndice )
//Parâmetros:
//Id	Variável	Tipo	Tam.	Descrição
//1	pszIndice	A	3	Variável no qual devera constar o numero da mensagem a ser excluída.
//Observações:
//Para executar esta funcionabilidade, necessitamos acionar o método Inicializar_MODEM_DarumaFramework.
//Retornos:
//0: Erro de comunicação, não foi possível enviar o método.
//1: OK, Sucesso ao enviar o método.
//-1: Erro na comunicação da serial.
//-2: Modem Retornou erro.

DLL32 function tEnviarDadosCsd_MODEM_DarumaFramework(sParametro AS STRING) AS LONG PASCAL LIB  hDllDaruma
//Definição:
//Permite enviar dados através da conexão csd.
//Sintaxe:
//tEnviarDadosCsd_MODEM_DarumaFramework(char *pszDados)
//Parâmetros:
//Id	Variável	Tipo	Tam.	Descrição
//1	stDados	A	999	Variável string no qual você devera inserir os dados a ser enviado pelo modem.
//Retornos:
//0: Erro de comunicação, não foi possível enviar o método.
//1: OK, Sucesso ao enviar o método.
//-1: Erro na comunicação da serial.
DLL32 function rReceberDadosCsd_MODEM_DarumaFramework(sParametro AS STRING) AS LONG PASCAL LIB  hDllDaruma
//Definição:
//Permite ao desenvolvedor receber dados através da conexão csd.
//Sintaxe:
//rReceberDadosCsd_MODEM_DarumaFramework(char *pszDados )
//Parâmetros:
//Id	Variável	Tipo	Tam.	Descrição
//1	pszDados	A	999	Variável string para receber os dados.
//Retornos:
//0: Não existem novas mensagem.
//1: OK, Existe uma nova mensagem.
//-1: Erro na comunicação da serial.
DLL32 function eAtivarConexaoCsd_MODEM_DarumaFramework() AS LONG PASCAL LIB  hDllDaruma
//Definição:
//Permite ao desenvolvedor configurar o modem para receber chamadas CSD e realizar auto atendimento.
//Sintaxe:
//eAtivarConexaoCsd_MODEM_DarumaFramework(void)
//Parâmetros:
//Não possui.
//Retornos:
//0: Erro de comunicação, não foi possível enviar o método.
//1: OK, Sucesso ao enviar o método.
//-1: Erro na comunicação da serial.
//-2: Modem retornou erro.
 
DLL32 function eFinalizarChamadaCsd_MODEM_DarumaFramework() AS LONG PASCAL LIB hDllDaruma
//Definição:
//Permite ao desenvolvedor finalizar a chamada CSD.
//Sintaxe:
//eFinalizarChamadaCsd_MODEM_DarumaFramework(void)
//Parâmetros:
//Não possui.
//Retornos:
//0: Erro de comunicação, não foi possível enviar o método.
//1: OK, Sucesso ao enviar o método.
//-1: Erro na comunicação da serial.
DLL32 function eRealizarChamadaCsd_MODEM_DarumaFramework(sParametro AS STRING) AS LONG PASCAL LIB hDllDaruma
//Definição:
//Permite ao desenvolvedor realizar chamada csd a um modem definido pelo número.
//Sintaxe:
//eRealizarChamadaCsd_MODEM_DarumaFramework(char *pszNumFone )
//Parâmetros:
//Id	Variável	Tipo	Tam.	Descrição
//1	pszNumFone	A	15	Variável string no qual você devera informar o numero a ser chamado.
//Retornos:
//0: Erro de comunicação, não foi possível enviar o método.
//1: OK, Sucesso ao enviar o método.
//-1: Erro na comunicação da serial.
//-2: Modem retornou erro.
//-3: Modem retornou caractere(s) invalido(s)
//-4: Modem não conectado na rede GSM
//-5: Modem retornou NO CARRIER
//-6: Modem retornou NO DIALTONE
//-7: Modem retornou BUSY
DLL32 function rTotalSms_MODEM_DarumaFramework (Int_TipoSMS As _INT, @Int_Total As BYTE)AS LONG PASCAL LIB hDllDaruma
//Definição:
//Método que permite ao desenvolvedor verificar quantas mensagens existem na caixa de entrada do chip,
//de acordo com o tipo de sms informado: Todas, Lidas e Não lidas. Possui 2 parâmetros inteiros,
//sendo o segundo passado por referência, pois receberá a quantidade.
//Sintaxe:
//rTotalSms_MODEM_DarumaFramework(int iTipoSMS, int *QuantSMS)
//Parâmetros:
//Id	Variável	Tipo	Tam.	Descrição
//1	iTipoSMS	N	1	Valor inteiro que representa o tipo de sms que deseja saber a quantidade:
//    0 -Todas as Mensagens;
 //    1 - Mensagens Lidas;
 //    2- Mensagens Não Lidas
//2	QuantSMS	N	5	Variável inteira passada por referência para receber o número de Mensagens solicitado.
//Retornos:
//O método poderá retornar os possíveis erros inteiros demonstrados abaixo:
//0: Erro de comunicação, não foi possível enviar o método.
//1: OK, Sucesso ao enviar o método.
//-1: Erro na comunicação da serial.
//-2: Modem retornou erro.
//-3: Modem retornou caractere(s) invalido(s).
DLL32 function rRetornarOperadora_MODEM_DarumaFramework(sOperadora AS STRING)AS LONG PASCAL LIB hDllDaruma
//Definição:
//Permite ao desenvolvedor verificar a operadora GSM (Claro, Tim, Oi, Vivo) conectado no momento no modem.
//Existem diversos motivos para que o desenvolvedor possa verificar a operado , como por exemplo, se estiver utilizando o modem de 2 bandejas assim fica fácil a identificação.
//Sintaxe:
//rRetornarOperadora_MODEM_DarumaFramework( char *pszOperadora )
//Parâmetros:
//Id	Variável	Tipo	Tam.	Descrição
//1	pszOperadora	A	49	Variável passada por referência que retorna a string que indica a operadora do Chip GSM utilizado no equipamento.
//Retornos:
//0: Erro de comunicação, não foi possível enviar o método.
//1: OK, Sucesso ao enviar o método.
//-1: Erro na comunicação da serial.
//-2: Modem retornou erro.
//-3: Modem retornou caractere(s) invalido(s).
 
DLL32 function rRetornarImei_MODEM_DarumaFramework(sImei AS STRING)AS LONG PASCAL FROM "rRetornarImei_MODEM_DarumaFramework" LIB hDllDaruma
//Definição:
//Permite ao desenvolvedor verificar o IMEI - International Mobile Equipment Identity (Identificação Internacional de Equipamento Móvel),  do Modem, no qual será realizado a consulta.
//Existem diversos motivos para que o desenvolvedor possa verificar o código IMEI do Modem, como por exemplo, registro, controle, bloqueio do aparelho entre outras funções.
//Sintaxe:
//rRetornarImei_MODEM_DarumaFramework( char *pszImei )
//Parâmetros:
//Id	Variável	Tipo	Tam.	Descrição
//1	stIMEI	A	49	Variável passada por referência que retorna a string com ao IMEI do equipamento.
//Observações:
//Para executar esta funcionabilidade, necessitamos acionar o método Inicializar_MODEM_DarumaFramework.
//Retornos:
//0: Erro de comunicação, não foi possível enviar o método.
//1: OK, Sucesso ao enviar o método.
//-1: Erro na comunicação da serial.
//-2: Modem retornou erro.
//-3: Modem retornou caractere(s) invalido(s).
 
DLL32 function rRetornarIDSIM_MODEM_DarumaFramework(sIDSIM AS DWORD)AS LONG PASCAL LIB hDllDaruma
//Definição:
//Método que possibilita saber a identificação do Chip/ SimCard que está utilizando. Não é a bandeja que está sendo usada (SIM1 ou SIM2), nem o número de discagem ou envio de sms para ele. É apenas um o número de Identificação do Chip/ SimCard.
//Sintaxe:
//rRetornarIDSIM_MODEM_DarumaFramework( char *pszIdSim ) ;
 //Parâmetros:
//Id	Variável	Tipo	Tam.	Descrição
//1	pszIdSim A	   50    Variável passada por referência que retorna a string com a Identidicação
//                         do SimCard/ Chip que está sendo utilizado no momento.
   //Retornos:
   //Este método pode retornar os seguintes valores:
   // 0: Erro de comunicação, não foi possível enviar o método.
   // 1: OK, Sucesso ao enviar o método.
   //-1: Erro da Comunicação Serial;
    //-2: Modem retornou Erro;
    //-3: Modem retornou caracteres inválidos;
    //-8: Modem retornou resposta incompleta (sem "OK" ou "ERRO").
DLL32 function rReceberSmsIndice_MODEM_DarumaFramework(sIndiceSMS AS STRING,sNumFone AS STRING,sData AS STRING,sHora AS STRING,sMsg AS STRING)AS LONG PASCAL LIB hDllDaruma
   //Definição:
   //Método que faz a leitura de um determinado SMS, de acordo com o índice que for informado.
   //Sintaxe:
   //rReceberSmsIndice_MODEM( char *pszIndice, char *pszNumFone, char *pszData, char *pszHora, char *stMensagemRetornada);
    //Parâmetros:
   //Id	Variável	Tipo	Tam.	Descrição
   //1	stIndice	A	3	Variável string indicando o índice do SMS
   //2	stNumeroFone	A	14	Variável string passada por referencia para número do telefone remetente do SMS.
   //3	stData	A	9	Variável string para receber a data do Sms
   //4	stHora	A	9	Variável string para receber a hora do Sms
   //5	stMensagemRetornada	A	499	Variável string referente ao conteúdo da mensagem.
   //Retornos:
   //Possíveis retornos para o método:
   //0: Não existe mensagem a ser lida.
   //1: OK, Mensagem lida com sucesso.
   //-1: Erro na comunicação da serial.
   //-2: Modem retornou erro.
   //-3: Modem retornou caractere(s) invalido(s).
DLL32 function rReceberSms_MODEM_DarumaFramework(sIndiceSMS AS STRING,sNumFone AS STRING,sData AS STRING,sHora AS STRING,sMsg AS STRING) AS LONG PASCAL LIB hDllDaruma
   //Definição:
   //Permite ao desenvolvedor ler a última mensagem enviada para o Modem.
   //Existem situações onde, necessitamos estar informados das ultimas mensagens
   //que o modem recebeu, possibilitando a ação imediata de outras funções que ele pode executar.
   //Sintaxe:
   //rReceberSms_MODEM( char *pszIndice, char *pszNumFone, char *pszData, char *pszHora, char *stMensagemRetornada);
    //Parâmetros:
   //Id	Variável	Tipo	Tam.	Descrição
   //1	stIndice	A	3	Variável string referente ao índice do SMS no modem.
   //2	stNumeroFone	A	14	Variável string referente ao número do telefone remetente do SMS.
   //3	stData	A	9	Variável string referente a data do envio do SMS.
   //4	stHora	A	9	Variável string referente a hora do envio do SMS
   //5	stMensagemRetornada	A	499	Variável string referente ao conteúdo da mensagem.
   //Observações:
   //Esta opção pode ser utilizada pela novidade! na DarumaFramework.dll,
   //no qual estamos utilizando o método do "Thread", no qual aciona um LOOP interno
   //capaz de identificar as novas mensagens chegadas em seu modem, para maiores informações clique aqui.
   //Esta opção pode ser utilizada juntamente com a "Thread" criada a partir da DLL,
   //que aciona um LOOP interno capaz de identificar as novas mensagens chegadas em seu modem,
   //para maiores informações clique aqui.
   //Retornos:
   //Modem está projetada junta a nossa DarumaFramework.dll para retornar os possíveis erros inteiros demonstrados abaixo:
   //0: Não existem novas mensagem.
   //1: OK, Existe uma nova mensagem.
   //-1: Erro na comunicação da serial.
   //-2: Modem retornou erro.
   //-3: Modem retornou caractere(s) invalido(s)
   //2: Existem duas mensagem a serem lidas.
   dll32 Function regLerApagar_MODEM_DarumaFramework(sParametro AS STRING)AS LONG PASCAL LIB hDllDaruma
   //Definição:
   //Permite configurar a chave <LerApagar> na DarumaFrameWork.dll. Quando essa chave está habilitada, as mensagens ligas são apagadas automaticamente, evitando que a memória do CardSim fique muito cheia.
   //Sintaxe:
   //regLerApagar_MODEM_DarumaFramework(char *pszParametro)
   //Parâmetros:
   //Id	Variável	Tipo	Tam.	Descrição
   //1	sParametro	A	6	Variável string no qual você devera informar os parâmetros no qual o comando irá executar, sendo ele "TRUE" ou "FALSE".
   //Observações:
   //Esta chave deve estar habilitada como "TRUE" para executar a função antes do aplicativo inicializar.
   //Retornos:
   //Modem está projetada junta a nossa DarumaFramework.dll para retornar os possíveis erros inteiros demonstrados abaixo:
   //0: Erro de comunicação, não foi possível enviar o método.
   //1: OK, Sucesso ao enviar o método.
   //-1: Erro de atualização de Chave.
 
   dll32 Function regPorta_MODEM_DarumaFramework(sParametro AS STRING)AS LONG PASCAL LIB hDllDaruma
   //Definição:
   //Permite ao desenvolvedor configurar a Porta Serial, no qual ira executar a comunicação com o modem, esta chave por padrão esta configurada como DEFAULT, necessitando no atual momento que seja realizado a configuração da porta serial, para haver comunicação com o periférico.
   //Sintaxe:
   //regPorta_MODEM_DarumaFramework(char *pszParametro)
   //Parâmetros:
   //Id	Variável	Tipo	Tam.	Descrição
   //1	sParametro	A	5	Variável string no qual você devera informar o valor que será usado no parametro, no caso, a porta de comunicação no qual estará o modem.
   //Retornos:

   //0: Erro de comunicação, não foi possível enviar o método.
   //1: OK, Sucesso ao enviar o método.
   //-1: Erro de atualização de Chave.
   dll32 Function regThread_MODEM_DarumaFramework(sParametro AS STRING)AS LONG PASCAL LIB hDllDaruma
   //Definição:
   //Modifica o valor da chave <Thread> no arquivo DarumaFrameWork.xml. Essa chave, quando configurada com o valor "TRUE", habilita a busca frequente por nova mensagens SMS não lidas no MODEM. Essa operação é realizada através de uma thread criada pela DarumaFrameWork.dll.
   //A chave <Thread> é utilizada juntamente com as chaves <TempoAlertar>, <CaptionWinAPP> e <Tecla>, também presentes no arquivo DarumaFrameWork.xml .
   //A chave <TempoAlertar> determina o tempo em que as notificações sobre novas mensagens recebidas no MODEM irão acontecer. E a chave <CaptionWinAPP> informa o título da janela em que as notificações serão exibidas. Para saber mais sobre essas chaves e como alterar seus valores, consulte os tópicos regTempoAlertar_MODEM_DarumaFramework e regCaptionWinAPP_MODEM_DarumaFramework.
   //A chave <Tecla> armazena a string de uma tecla, por padrão F10. Quando a thread encontra mensagens não lidas no MODEM chama a função, caso exista, que é acionada pela tecla armazenada.
   //Para entender melhor o processo de recebimento e notificação de mensagens consulte Recebendo Mensagens do Modem - Thread.
   //Observações:
   //Está chave deve estar acionada como "TRUE" antes do aplicativo iniciar.
   //Parâmetros:
   //Id	Variável	Tipo	Tam.	Descrição	Exemplo
   //1	pszParametro	A	4	Variável string com o novo valor da chave.	 TRUE
   //Sintaxe:
   //regThread_MODEM_DarumaFramework(char *pszParametro)
   //Retornos:
   //0: Erro de comunicação, não foi possível enviar o método.
   //1: OK, Sucesso ao enviar o método.
   //-1: Erro de atualização de Chave.
   dll32 Function regVelocidade_MODEM_DarumaFramework(sParametro AS STRING)AS LONG PASCAL LIB hDllDaruma
   //Definição:
   //Permite ao desenvolvedor configurar a velocidade no qual a sua porta de comunicação ira trabalhar, sendo ela 9600, 38400 ou 115200, por padrão o modem esta inicialmente configurado para 9600, onde através deste registro você poderá alterar a velocidade conforme a sua necessidade.
   //Parâmetros:
   //Id	Variável	Tipo	Tam.	Descrição
   //1	sParametro	A	9	Variável string no qual você devera informar o valor que será usado no parametro, no caso, a velocidade no qual estará o modem.
   //Observações:
   //O modem trabalha com as velocidades em BPS, disponível na porta serial, lembrando que está configuração não diz respeito a velocidade no qual a mensagem será enviada até seu destinatário e sim a velocidade de comunicação com a porta serial e o Modem.
   //Devemos sempre observar a velocidade que o Modem estará configurado, pois caso a velocidade da sua porta não estiver igual a velocidade do Modem, não haverá comunicação.
   //Retornos:
   //0: Erro de comunicação, não foi possível enviar o método.
   //1: OK, Sucesso ao enviar o método.
   //-1: Erro de atualização de Chave.
   dll32 Function eDefinirProduto_Daruma(szProduto AS STRING)AS LONG PASCAL FROM "eDefinirProduto_Daruma" LIB hDllDaruma
   //Definição:
   //Este método permite indicar para a DarumaFramework.dll qual produto está sendo utilizado no momento, assim a dll realiza o startup do produto, já carregando em memória as informações relativas ao mesmo, que estão preenchidas no arquivo .XML ou Registry.
   //Atualmente (a partir da versão 07.14.04 da DarumaFramework.dll) não é mais obrigatória a indicação do produto, então você não precisa mais se preocupar em configurar o produto que seu aplicativo está utilizando. Em outras palavras consegue utilizar vários produtos com as chamadas de seus métodos intercaladas, sem precisar fazer a chamada deste comando aqui.
   //Caso seu sistema trabalhe com um produto apenas, recomendamos que sempre deixe esta informação pré-configurada.
   //Sintaxe:
   //eDefinirProduto(char*pszProduto);
    //Parâmetros:
   //Id	Variável	Tipo	Tam.	Descrição
   //1	pszProduto	A	20	Nome Produto: DUAL- ECF - MODEM - DSP - TA2000
   //Saídas:
   //Não possui.
   //Retornos:
   //0: Erro de comunicação, não foi possível enviar o método.
   //1: OK, Sucesso ao enviar o método.

   dll32 Function eInicializar_MODEM_DarumaFramework()AS LONG PASCAL LIB hDllDaruma
   //Definição:
   //Permite ao desenvolvedor iniciar o modem e dar inicio a suas funções.
   //Neste método estaremos inicializando os comandos e abrindo a porta serial do modem para assim ser executados todos os comandos no qual você desenvolvedor ira enviar para o modem.
   //O método alem de inicializar o modem executa os primeiros comandos universais para este tipo de plataforma que seriam os comandos AT, onde o mesmo ira iniciar com o comando AT que ira abrir a comunicação com o modem, seguindo dos comandos AT+CMGF e ATE0, alem de abrir a comunicação com a porta serial programada em seu registro.
   //Sintaxe:
   //eInicializar_MODEM_DarumaFramework(void)
   //Parâmetros:
   //Não possui.
   //Observações:
   //Devemos executar este comando quando carregado o FORM(Formulário) de sua aplicação, no qual quando inicializado seu aplicado a função já ira inicializar automaticamente seguindo os padrões do seu registro e abrindo a comunicação com o modem.
   //A função por si verifica todas as chaves de registros configuradas pelo desenvolvedor executando elas no inicio de sua aplicação, sendo elas:
   //Auditoria
   //Apagar;
    //LerApagar;
    //Porta;
    //Thread;
    //Velocidade;
    //TempoAlertar;
    //CaptionWinAPP.
   //Retornos:
   //0: Erro de comunicação, não foi possível enviar o método.
   //1: OK, Sucesso ao enviar o método.
   //-1: Erro na comunicação da serial.
   //-2: Modem retornou erro.
   //-3: Modem retornou caractere(s) invalido(s)
   //-4: Modem não conectado na rede GSM
 
   dll32 Function regTempoAlertar_MODEM_DarumaFramework(sParametro AS STRING)AS LONG PASCAL LIB hDllDaruma
   //Definição:
   //Permite ao desenvolvedor determinar em quantos segundos  thread, ativada através do método regThread_MODEM_DarumaFramework, deverá retornar ao usuário que tem um novo SMS não lido, por meio de uma janela da aplicação informada por regCaptionWinAPP_MODEM_DarumaFramework.
   //Sintaxe:
   //regTempoAlertar_MODEM(char *pszParametro)
   //Parâmetros:
   //Id	Variável	Tipo	Tam.	Descrição
   //1	sParametro	A	6	Variável string no qual você devera informar o valor do tempo que a thread irá enviar o alerta de novo SMS.
   //Observações:
   //Esta chave deve estar habilitada como "TRUE" para executar a função antes do aplicativo inicializar.
   //Chaves-Interligadas:
   //Está chave esta interligada com a utilização das chaves abaixo:
   //Thread;
    //CaptionWinAPP.
   //Retornos:
   //0: Erro de comunicação, não foi possível enviar o método.
   //1: OK, Sucesso ao enviar o método.
   //-1: Erro de atualização de Chave.
   dll32 Function regCaptionWinAPP_MODEM_DarumaFramework(sParametro AS STRING)AS LONG PASCAL LIB hDllDaruma
   //Definição:
   //Permite ao desenvolvedor configurar o nome da janela no qual ira receber o alerta da existência de novas SMS não lidas.
   //Sintaxe:
   //regCaptionWinAPP_MODEM_DarumaFramework(char *pszParametro)
   //Parâmetros:
   //Id	Variável	Tipo	Tam.	Descrição
   //1	sParametro	A	29	Variável string no qual você devera informar os parametros no qual o comando irá executar, sendo ele "TRUE" ou "FALSE".
   //Observações:
   //Esta chave deve conter o nome da janela no qual ira receber o alerta. Exemplo "MODEM DARUMA".
   //Chaves-Interligadas:
   //Está chave esta interligada com a utilização das chaves abaixo:
   //Thread;
    //TempoAlertar.
   //Retornos:
   //Modem está projetada junta a nossa DarumaFramework.dll para retornar os possíveis erros inteiros demonstrados abaixo:
   //0: Erro de comunicação, não foi possível enviar o método.
   //1: OK, Sucesso ao enviar o método.
   //-1: Erro de atualização de Chave.
   dll32 Function eTrocarBandeja_MODEM_DarumaFramework()AS LONG PASCAL LIB hDllDaruma
   //Definição:
   //Permite ao desenvolvedor a troca de bandeja do modem, indicando se o modem está conectado a rede GSM(timeout de 30 segundos).
   //Sintaxe:
   //eTrocarBandeja_MODEM_DarumaFramework(void)
   //Parâmetros:
   //Não possui.
   //Observações:
   //Devemos executar este comando quando toda vez que houver necessidade de trocar a chip a ser utilizando (SIM1 ou SIM2). Esse comando está disponível para os modelos (MIN200D e MIN200E).
   //Para que ocorra a troca sem erros o Modem deve estar na velocidade de comunicação de: 115200 Bits/ segundo.
   //Retornos:
   //0: Erro de comunicação, não foi possível enviar o método.
   //1: OK, Sucesso ao enviar o método.
   //-1: Erro na comunicação da serial.
   //-2: Modem retornou erro.
   //-3: Modem retornou caractere(s) invalido(s)
   //-4: Modem não conectado na rede GSM
   dll32 Function regBandejaInicio_MODEM_DarumaFramework(sParametro AS STRING)AS LONG PASCAL LIB hDllDaruma
   //Definição:
   //Permite ao desenvolvedor configurar a bandeja que o modem irá iniciar com o CardSim(chip), SIM1 ou SIM2.
   //Sintaxe:
   //regBandejaInicio_MODEM(char *pszParametro)
   //Parâmetros:
   //Id	Variável	Tipo	Tam.	Descrição
   //1	pszParametro	    A	9	Variável string no qual você devera informar os parâmetros no qual o comando irá executar, sendo ele "SIM1" ou "SIM2"
   //Observações:
   //Esta chave só tem efeito para o modelo de modem (MIN200D e MIN200E)
   //Retornos:
   //0: Erro de comunicação, não foi possível enviar o método.
   //1: OK, Sucesso ao enviar o método.
   //-1: Erro de atualização de Chave.
 
   dll32 Function eReiniciar_MODEM_DarumaFramework()AS LONG PASCAL LIB hDllDaruma
   //Definição:
   //Este método reinicia o modem para a configuração padrão
   //Sintaxe:
   // eReiniciar_MODEM_DarumaFramework();
    //Parâmetros:
   //Não possui.
   //Saídas:
   //Não possui.
   //Retornos:
   //0: Erro de comunicação, não foi possível enviar o método.
   //1: OK, Sucesso ao enviar o método.
   //Para obter todos os possíveis retornos consulte a Tabela Retornos Métodos.
   dll32 Function tEnviarSmsOperadora_MODEM_DarumaFramework(Str_Numero AS STRING, Str_Msg AS STRING, Str_SIM AS STRING)AS LONG PASCAL LIB hDllDaruma
   //Definição:
   //Método que permite enviar a mensagem para um celular de destino através do modem selecionando qual o chip desejado, chip da bandeja 1 ou 2 (SIM1 ou SIM2)
   //Existem diversos modos no qual você poderá aplicar esta função, como por exemplo: enviar para apenas um número ou enviar para uma lista com vários números, basta separar os números utilizando o caractere '|'.
   //O método é  geralmente usado quando o desenvolvedor deseja que a DarumaFramework, envie uma determinada informação ao seu destinatário final.
   //Exemplos para Envio de Mensagens:
   //Os exemplos abaixo, ajudaram você desenvolvedor a entender como enviar mensagens:
   //stNumeroTelefone.
   //Variável string no qual você devera informar o numero do destinario.
   //Ex.: 01292289860, informando o DDD para o envio da mensagem;
    //Ex.2: 89457852, caso o numero no qual a mensagem será enviada, esteja na mesma localidade do seu CHIP, como por exemplo, estou usando um CHIP do estado de São Paulo(interior), no qual seria 012, sendo assim não necessito informar o DDD para enviar mensagens para os celulares presentes no Código de Ãrea.
   //stMensagem. Variável string no qual você devera inserir a informação a ser enviada pelo modem, respeitando o limite de 140 caracteres.
   //Ex.: Ola! Desenvolvedor Daruma!
   //stBandeja. Bandeja que o será utilizada para enviar o SMS
   //Ex.: SIM1
   //Sintaxe:
   //tEnviarSmsOperadora_MODEM_DarumaFramework( char *pszNumTels, char *pszMsg,char *pszBandeja);
    //Parâmetros:
   //Id	Variável	Tipo	Tam.	Descrição
   //1	stNumeroTelefone	A	11	Variável string no qual você devera informar o(s) número(s) do(s) destinario(s), separe-os com o caractere '|'.
   //2	stMensagem	A	140	Variável string no qual você devera inserir a informação a ser enviada pelo modem.
   //3	stBandeja	A	10	Variável string no qual você devera informar qual a bandeja será utilizada para enviar a mensagem, SIM1 ou SIM2
   //Retornos:
   //Modem está projetada junta a nossa DarumaFramework.dll para retornar os possíveis erros inteiros demonstrados abaixo:
   //0: Erro de comunicação, não foi possível enviar o método.
   //1: OK, Sucesso ao enviar o método.
   //-1: Erro na comunicação da serial.
   //-2: Modem retornou erro.
   //-3: Modem retornou caractere(s) invalido(s)
   //Observação:
   //- Separando os números por '|' você pode enviar quantos números quiser, não há limite estabelecido;
    //- Caso queira enviar SMS sem selecionar o SIM Card, e utilizar o que está atualmente sincronizado, utilize o método tEnviarSms_MODEM_DarumaFramework;
    //- Este método tenta enviar o sms uma única vez, caso queira que a DLL automaticamente faça mais tentativas de envio, caso seja retornado erro, altere a configuração <NúmeroTentativas> presente no XML/ Registry.
   //- Para o funcionamento total deste método o modem deve estar na velocidade de comunicação: 115200 Bits/ segundo, pois é nesta velocidade que a troca de bandeja (de um SIM Card para o outro) ocorre.
   dll32 Function eBuscarPortaVelocidade_MODEM_DarumaFramework()AS LONG PASCAL LIB hDllDaruma
   //Definição:
   //Realiza a busca da porta e velocidade em que o Modem está conectado, modificando os valores  das chaves <Velocidade> e <Porta> no DarumaFrameWork.xml se necessário.
   //Sintaxe:
   //eBuscarPortaVelocidade_MODEM_DarumaFramework(void)
   //Parâmetros:
   //Não possui.
   //Saídas:
   //Não possui.
   //Retornos:
   //0: Erro de comunicação, não foi possível enviar o método.
   //1: OK, Sucesso ao enviar o método.
   //Para obter todos os possíveis retornos consulte a Tabela Retornos Métodos.

   dll32 Function rInfoEstendida_MODEM_DarumaFramework(Str_InfoEstendida AS STRING)AS LONG PASCAL LIB hDllDaruma
   //Definição:
   //Método que retorna o índice da mensagem se chamado logo após o seu envio. Ãndice que é utilizado para ler a Confirmação de Mensagem.
   //Sintaxe:
   //rInfoEstendida_MODEM_DarumaFramework(byRef char* pszInfoEstendida);
    //Parâmetros:
   //Id	Variável	Tipo	Tam.	Descrição
   //1	pszInfoEstendida	A
   //até 10
   //Variável string por referência para receber o índice da mensagem.
   //Observações:
   //Para utilizar a confirmação de entrega da mensagem, não esqueça de habilitar o serviço, no xml altere o valor da chave ConfirmaEntregaSMS para 1. O valor da chave pode ser alterado pelo método regAlterarValor_Daruma.
   //Retornos:
   //O método poderá retornar os possíveis erros inteiros demonstrados abaixo:
   // 0: Erro de comunicação, não foi possível enviar o método.
   // 1: OK, Sucesso ao enviar o método.
   //-1: Erro na comunicação da serial.
   //-2: Modem retornou erro.
   //-8: Comando inválido.
   dll32 Function rRetornarNumeroChamada_MODEM_DarumaFramework(Str_Resposta AS STRING)AS LONG PASCAL LIB hDllDaruma
   //Definição:
   //Método que possibilita saber o número que está ligando para o SIM Card usado no modem, ou seja,  identificar de qual a origem da ligação que está sendo recebida, através de uma variável string passada por referência.
   //Para que o método funcione corretamente é necessário ativar a configuração MODEM\ReceberNumeroChamada no XML, alterando seu valor para 1.
   //Sintaxe:
   //rRetornarNumeroChamada_DarumaFramework( char *pszNumero ) ;
    //Parâmetros:
   //Id	Variável	Tipo	Tam.	Descrição
   //1	pszNumero A	   14     Variável string passada por referência que retorna o número que está ligando para o Modem (SIM Card)
   //Retornos:
   //Este método pode retornar os seguintes valores:
   // 0: Erro de comunicação, não foi possível enviar o método.
   // 1: OK, Sucesso ao enviar o método.
   //-1: Erro da Comunicação Serial;
    //-2: Modem retornou Erro;
    //-3: Modem retornou caracteres inválidos;
    //-8: Modem retornou resposta incompleta (sem "OK" ou "ERRO").
    
   dll32 Function regRetornaValorChave_DarumaFramework(pszProduto AS STRING,pszChave AS STRING,pszValor AS STRING)AS LONG PASCAL LIB hDllDaruma
   dll32 Function rListarSMSTelefone_MODEM_DarumaFramework(Str_NumTelefone AS STRING)AS LONG PASCAL LIB hDllDaruma
   //Permite ao desenvolvedor listar todas as mensagens contidas no CHIP do modem em um arquivo no formato Texto, de apenas um determinado número de telefone.
   //O método possui um parâmetro, para informar o número de telefone do qual deseja que as mensagens sejam listadas.
   //E as mensagens que serão lidas podem ser definidas através da chave de configuração localizada no Registro/ XML (MODEM\ListarSms). Os valores aceitos são:  0 -  para Todas as mensagens; 1 - para mensagens Lidas; 2 - para mensagens Não Lidas. O valor padrão é 0, então se a chave não for alterada, serão lidas todas as mensagens do número indicado.
    //Sintaxe:
   //rListarSMSTelefone_MODEM_DarumaFramework( char* pszTelefone)
   //Parâmetros:
   //Id	Variável	Tipo	Tam.	Descrição
   //1	pszTelefone A	14    String que informa qual o número de telefone que deseja listar as mensagens no arquivo.
   //Observações:
   //A lista será criada no local especificado pelo desenvolvedor na chave chamada <LocalArquivos> do Registro/ XML, e vai conter apenas as mensagens do número especificado.
   //O número informado para listagem, deve estar exatamente igual ao que é armazenado pelo chip. (Exemplos: 012987654321 ou +5512987654321)
   //Retornos:
   //Abaixo os possíveis valores para o retorno do método:
   // 0: Erro de comunicação, não foi possível enviar o método.
   // 1: OK, Sucesso ao enviar o método.
   //-1: Erro da Comunicação Serial;
    //-2: Modem retornou Erro;
    //-3: Modem retornou caracteres inválidos;
    //-8: Modem retornou resposta incompleta (sem "OK" ou "ERRO").
   dll32 function rNivelSinalRecebido_MODEM_DarumaFramework()AS LONG PASCAL LIB hDllDaruma
   //Definição:
   //Permite ao desenvolvedor verificar a disponibilidade do sinal presente no Modem.
   //Sintaxe:
   //rNivelSinalRecebido_MODEM_DarumaFramework(void)
   //Observações:
   //Para executar esta funcionalidade, necessitamos acionar o método Inicializar_MODEM_DarumaFramework.
   //Definições dos Níveis de Sinais:
   //Os valores abaixo, serão demonstrado a você desenvolvedor, para a verificação do nível de sinal:
   //0 = -113dBm ou menor;
    //1 = -111dBm;
    //2.30 = -109... -53 dBm;
    //31 = -59dBm ou maior;
    //99 = desconhecido ou não detectado.
   //Parâmetros:
   //Não possui.
   //Retornos:
   //0: Erro de comunicação, não foi possível enviar o método.
   //1: OK, Sucesso ao enviar o método.
   //-1: Erro na comunicação da serial.
   //-2: Modem retornou erro.
   //-3: Modem retornou caractere(s) invalido(s).
   //-x: Valor referente ao nível de sinal.
 
   dll32 function rListarSms_MODEM_DarumaFramework()AS LONG PASCAL LIB hDllDaruma
   //Definição:
   //Permite ao desenvolvedor listar todas as mensagens contidas no CHIP do modem em um arquivo no formato Texto. O método não possui parâmetros, porém as mensagens que serão lidas podem ser definidas através de uma chave de configuração localizada no Registro/ XML (MODEM\ListarSms). Os valores aceitos são:
   //0 -  para Todas as mensagens
   //1 - para mensagens Lidas
   //2 - para mensagens Não Lidas
   //O valor padrão é 0, então se a chave não for alterada, serão lidas todas as mensagens.
   //Além desta função disponibilizamos uma chave no registro chamada Thread no qual através dela o modem ficará num LOOP questionando se houve ou não recebimento de mensagem (clique aqui para saber mais).
   //Sintaxe:
   //rListarSms_MODEM_DarumaFramework( void )
   //Observações:
   //A lista será criada no local especificado pelo desenvolvedor na chave chamada <LocalArquivos> do Registro/ XML
   //HKEY_LOCAL_MACHINE\SOFTWARE\DarumaFramework \LocalArquivos
   //Parâmetros:
   //Não possui.
   //Retornos:
   //Abaixo os possíveis valores para o retorno do método:
   // 0: Erro de comunicação, não foi possível enviar o método.
   // 1: OK, Sucesso ao enviar o método.
   //-1: Erro da Comunicação Serial;
    //-2: Modem retornou Erro;
    //-3: Modem retornou caracteres inválidos;
    //-8: Modem retornou resposta incompleta (sem "OK" ou "ERRO").

   dll32 function tEnviarSms_MODEM_DarumaFramework(sNumeroTelefone AS STRING,sMensagem AS STRING )AS LONG PASCAL LIB hDllDaruma
   //Definição:
   //Permite enviar a mensagem para um celular de destino através do modem.
   //Existem diversos modos no qual você poderá aplicar esta função, como por exemplo: enviar para apenas um número ou enviar para uma lista com vários números, basta separar os números por '|'.
   //O método é  geralmente usado quando o desenvolvedor deseja que a DarumaFramework, envie uma determinada informação ao seu destinatário final.
   //Exemplos para Envio de Mensagens:
   //Os exemplos abaixo, ajudaram você desenvolvedor a entender como enviar mensagens:
   //stNumeroTelefone: Variável string no qual você devera informar o numero do destinatário.
   //Ex.: 01292289860, informando o DDD para o envio da mensagem;
    //Ex.2: 89457852, caso o numero no qual a mensagem será enviada, esteja na mesma localidade do seu CHIP, como por exemplo, estou usando um CHIP do estado de São Paulo(interior), no qual seria 012, sendo assim não necessito informar o DDD para enviar mensagens para os celulares presentes no Código de Ãrea.
   //stMensagem: Variável string no qual você devera inserir a informação a ser enviada pelo modem, respeitando o limite de 140 caracteres.
   //Ex.: Ola! Desenvolvedor Daruma!
   //Observações:
   //Caracteres especiais aceitos para o envio de SMS:
   //! " # % & ( ) * : + ; , < > | = . / ?
   //Parâmetros:
   //Id	Variável	Tipo	Tam.	Descrição
   //1	stNumeroTelefone	A	11	Variável string no qual você devera informar o numero do destinario. Utilize o caractere '|' para separar os números, caso tenha mais de um.
   //2	stMensagem	A	140	Variável string no qual você devera inserir a informação a ser enviada pelo modem.
   //Retornos:
   //Modem está projetada junta a nossa DarumaFramework.dll para retornar os possíveis erros inteiros demonstrados abaixo:
   //0: Erro de comunicação, não foi possível enviar o método.
   //1: OK, Sucesso ao enviar o método.
   //-1: Erro na comunicação da serial.
   //-2: Modem retornou erro.
   //-3: Modem retornou caractere(s) invalido(s)
   //Observação:
   //- Separando os números por '|' você pode enviar quantos números quiser, não há limite estabelecido;
    //- Com este método o SMS será enviado através do chip que está atualmente sincronizado, para escolher se quer utilizar SIM1 ou SIM2, utilize o métdo tEnviarSmsOperadora_MODEM_DarumaFramework;
    //- Este método tenta enviar o sms uma única vez, caso queira que a DLL automaticamente faça mais tentativas de envio, caso seja retornado erro, altere a configuração <NúmeroTentativas> presente no XML/ Registry.
Link to comment
Share on other sites


cString := Space(200) //-- O tamanho do retorno esperado

nResult := GetAbastecimento( @cString )

If nResult = 1 //-- O valor que indique sucesso, algumas é 0 outras é 1

   ? "Sucesso?"

   ? cString

else

   ? nResult

  ? cString

end

DLL32 FUNCTION GetAbastecimento(@Dado as STRING) AS _INT PASCAL LIB DllPosto

 

Link to comment
Share on other sites

cString := Space(200) //-- O tamanho do retorno esperado
nResult := GetAbastecimento( @cString )

If nResult = 1 //-- O valor que indique sucesso, algumas é 0 outras é 1
   ? "Sucesso?"
   ? cString
else
   ? nResult
   ? cString
end

DLL32 FUNCTION GetAbastecimento(@Dado as STRING) AS _INT PASCAL LIB DllPosto
 

ola...

 

obrigado pela ajuda, na veia.... deu certo.. estava soh faltando o tamanho da variavel na declaracao (space=200), estava vazia ("")

 

 

Funtion Teste()

Local cDll       := "CompanyTec.Dll"

//Private DllPosto ,  cContem  := ""

Private DllPosto ,  cContem  := Space(200)

If File( cDll)
    DllPosto := LoadLibrary(cDll)
    If InicializaSocket("localhost") 
         nRetorno := GetAbastecimento(@cContem)

         If nRetorno = 1 // 1=tem abastecimento

               MsgAlert("Informacoes do abastecimento: "+cContem

         Else            // 0-nao teve abastecimento

               MsgAlert("nao teve abastecimento.")

         Endif

         FreeLibrary(DllPosto)

    Else

         MsgAlert("Falha na conexao")

     Endif

Else

    MsgAlert("Arquivo CompanyTec.Dll nao Existe.")

Endif

Return(Nil)

 

 

DLL32 FUNCTION InicializaSocket(cIP as STRING)  AS BOOL PASCAL LIB DllPosto

DLL32 FUNCTION GetAbastecimento(@Dado as PTR) AS _INT PASCAL LIB DllPosto

 

muitissimo obrigado pela ajuda !!!!!

Link to comment
Share on other sites

  • 1 year later...

Amiguinhos,

Quanta incoerência de resultados esta DLL retorna. O sucesso é 0 ou 1?. Parece que é só pra complicar a vida da gente.

Verifique o manual a relação destes valores de retorno e se 0 e 1 são o mesmo resultado saneie suas funções para que o trecho de retorno seja:

...
if nResult <= 1 //-- Pronto, assim resolve a balbúrdia
   ? "Sucesso: " + cString
else
   ? FuncaoQueRetorneUmaStringDeErro( nResult )
end

FUNCTION FuncaoQueRetorneUmaStringDeErro( nResult )
   do case
      case nResult = 0
           return "Sucesso(0):"
      case nResult = 1
           return "Sucesso(1):"
      case nResult = 2
           return "Erro(2): blablabla..."
      // outros cases
   endcase
   return "Mensagem indefinida"
Link to comment
Share on other sites

Amiguinhos,

Quanta incoerência de resultados esta DLL retorna. O sucesso é 0 ou 1?. Parece que é só pra complicar a vida da gente.

Verifique o manual a relação destes valores de retorno e se 0 e 1 são o mesmo resultado saneie suas funções para que o trecho de retorno seja:

...
if nResult <= 1 //-- Pronto, assim resolve a balbúrdia
   ? "Sucesso: " + cString
else
   ? FuncaoQueRetorneUmaStringDeErro( nResult )
end

FUNCTION FuncaoQueRetorneUmaStringDeErro( nResult )
   do case
      case nResult = 0
           return "Sucesso(0):"
      case nResult = 1
           return "Sucesso(1):"
      case nResult = 2
           return "Erro(2): blablabla..."
      // outros cases
   endcase
   return "Mensagem indefinida"

Rochinha, algumas dlls indicam sucesso com 1 e erro com 0, outras sucesso com 0 e erro com -1, entre infinitas combinações possíveis, até mesmo o código do erro já pode vir diretamente nesse retorno.

Exemplo:

1 = Sucesso

0 = Sem comunicação

-1 = Parâmetro inválido

-2 = Erro aleatório de exemplo

-3 = Outro exemplo

Então nem sempre pode por <= 1, vai de caso a caso ;)

E no caso dele o retorno válido é o 1:

If nRetorno = 1 // 1=tem abastecimento

MsgAlert("Informacoes do abastecimento: "+cContem)

Else // 0-nao teve abastecimento

MsgAlert("nao teve abastecimento.")

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...