Previsao do Tempo em XHB Console

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
wanderley.monteiro
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 14 Ago 2008 10:42
Localização: São Bernardo do Campo - São Paulo

Previsao do Tempo em XHB Console

Mensagem por wanderley.monteiro »

Bom dia pessoal

Um cliente meu pediu e achei interesante postar para o pessoal do grupo.
Estou migrando um ERP de um cliente para Xharbour console (por usar telnet)
E ele queria que exibisse na tela com se fosse um gadget com a temperatura, e previsao do dia.

A quem interessar a função está abaixo, precisa fazer um cadastro free em http://www.weather.com/services/xmloap.html para obter o login e a senha para acesso ao webservice.

Abs
--

Wanderley Monteiro
MAMUTE Programação de Software
Americana SP

Código: Selecionar todos

//---------------------------------------
FUNCTION PREVISAO_TEMPO()
LOCAL pCOR_BARRA:= "w+/n"

        oPg := CreateObject("Microsoft.XMLHTTP")
        cLocal:="BRXX0006" // Americana SP
        xComando:="http://xoap.weather.com/weather/local/"+;
                  cLocal+;
                  "?cc=*&dayf=1&ut=C&link=xoap&prod=xoap&par=[SEU LOGIN]&key=[SUA_SENHA]"

        oPg:Open("GET",xComando,.f.)
        oPg:Send()
        cBuf := oPg:responseBody
        if at('<dnam>', cBuf)=0
            cBuf = space(255)
        else
            wtCIDADE:= PegaDados('dnam' , Alltrim(cBuf)  )
            wtSOL   := PegaDados('sunr' , Alltrim(cBuf)  )
            wtPORSOL:= PegaDados('suns' , Alltrim(cBuf)  )
            cBuf2   := PegaDados('cc'   , Alltrim(cBuf)  )
            wtTempC := PegaDados('tmp'  , Alltrim(cBuf2) )
            wtIcon  := PegaDados('icon' , Alltrim(cBuf2) )
            wtTempH := PegaDados('hi'   , Alltrim(cBuf) )
            wtTempL := PegaDados('low'  , Alltrim(cBuf) )

            DO CASE
               CASE wtIcon $ '0,01,02,03,04,17,35'
                    wtDescr:= 'TROVOADAS'

               CASE wtIcon $ '05,41,42,43'
                    wtDescr:= 'NEVE'

               CASE wtIcon $ '06,18'
                    wtDescr:= 'GRANIZO'

               CASE wtIcon $ '08,09,10,11,12,40'
                    wtDescr:= 'CHUVA'

               CASE wtIcon $ '37,38'
                    wtDescr:= 'ABERTO C/ CHUVA'

               CASE wtIcon $ '13,14,15,16'
                    wtDescr:= 'GEADA'

               CASE wtIcon $ '19'
                    wtDescr:= 'INCOBERTO'

               CASE wtIcon $ '20'
                    wtDescr:= 'NEVOEIRO'

               CASE wtIcon $ '21,22'
                    wtDescr:= 'ENTRE NUVENS'

               CASE wtIcon $ '23,24'
                    wtDescr:= 'VENTO FORTE'

               CASE wtIcon $ '25,44'
                    wtDescr:= 'SEM PREVISAO'

               CASE wtIcon $ '26'
                    wtDescr:= 'NUBLADO'

               CASE wtIcon $ '27,28'
                    wtDescr:= 'PARC NUBLADO'

               CASE wtIcon $ '29,30,33,34'
                    wtDescr:= 'POUCAS NUVENS'

               CASE wtIcon $ '31,32,36'
                    wtDescr:= 'TEMPO BOM'

               CASE wtIcon $ '37,38,39,41,45,46,47'
                    wtDescr:= 'CHUVA RAPIDA'
            ENDCASE

            @19,03 say wtCIDADE       COLOR pCOR_BARRA
            @20,03 say "Temp: " + wtTempC +"§C / Min: " + wtTempL +"§C / M x: " + wtTempH +"§C"  COLOR pCOR_BARRA
            @21,03 say "Tempo Agora: " + wtDescr        COLOR pCOR_BARRA
        //    @17,03 say "Nascente: " + wtSOL          COLOR pCOR_BARRA
        //    @18,03 say "Poente..: " + wtPORSOL       COLOR pCOR_BARRA
        endif

RETURN .T.

//-----------------

STATIC FUNCTION PegaDados(cProc,cLinha,cTexto2)

LOCAL InicioDoDado :=Iif(cTexto2==Nil,"<"+cProc+">" , "<"+cProc+" "+cTexto2 )
LOCAL FinalDoDado := "</"+cProc+">"
LOCAL nPosIni     := 0
LOCAL nPosFim     := 0
LOCAL cRet        := ''

nPosIni     := At(InicioDoDado,cLinha)
cLinha      := SUBSTR(cLinha,nPosIni+len(InicioDoDado))
nPosFim     := At(FinalDoDado,cLinha)-1

IF nPosIni==0 .or. nPosFim==0
   RETURN cRet
ENDIF
cRet := Substr(cLinha,1,nPosFim)

RETURN  ( cRet)
Wanderley Monteiro
------------------------
MAMVTH - Customizações ADVPL/Protheus
São Bernardo do Campo SP
wanderley.monteiro@gmail.com
ADVPL, ERP TOTVS (Protheus), SQL, Oracle, Clipper 5.3b, Visual Fox Pro 9, xHarbour
Responder