Página 1 de 1

Harbour HBWin e a balança Toledo 9094

Enviado: 14 Nov 2010 20:22
por Itamar M. Lins Jr.
Ola!
Veja como resolvi usando o Harbour + HbWin.
Sabemos que os códigos de um supermercado iniciados com o número "2" geralmente é um produto que deve ser pesado, então:

Código: Selecionar todos


   If substr(vPdv02,1,1) = "2" //Verificar se o código digitado/scaneado começa com "2"
      If eq->( dbseek(substr(vPdv02,1,5)) )
         If len(alltrim(vPdv02)) = 13 //Caso comece com 2 e tenha 13 caracteres não precisa de pegar o peso, já vem na etiqueta!
           bValor := val(substr(vPdv02,7,6))/100
           vPdv02 := alltrim(str(val(substr(vPdv02,1,5)),5)) //Codigo
           oPdv02 : Refresh() //Usando Hwgui atualiza na tela com o peso
         Else
           bValor := PegaPeso()
           vPdv02 := alltrim(str(val(substr(vPdv02,1,5)),5))
           oPdv02 : Refresh() //Usando Hwgui atualiza na tela com o peso
           lPegouPeso := .t.
         EndIf
         If Empty(bValor)
            MsgStop('Sem Peso.')
            return .f.
         EndIf
      Else
        If MsgYesNo('Produto não cadastrado. Deseja procurar ?')
           PesquisaPDV(20,10,520,400,'eq',{||vPdv02},"vPdv02","oPdv02",,,"Mercadoria","Cod_Mercad","Avista",,03)
        EndIf
        return .f.
      EndIf
   Else
....

*****************
Function PegaPeso
*****************
*
*
Local oDlg, cTitle := 'Lendo o peso da balança...'
LOCAL cString := Chr( 5 )
LOCAL nResult, nPeso

Do While .t.

   oWinPort := win_Com():Init( "com1:", WIN_CBR_2400, WIN_NOPARITY, 8, WIN_ONESTOPBIT )

   IF ! oWinPort:Open()
      MsgStop("Erro lendo peso: " + oWinPort:ErrorText() )
      return 0
   Else
      IF !oWinPort:SetDTR( .T. )
          MsgInfo ( "SetDTR( .T. ) Falha:"+ oWinPort:ErrorText() )
      ENDIF

      IF ( nResult := oWinPort:Write( cString ) ) <> Len( cString ) //Mando o chr(5)
          msginfo( "Falha na escrita: "+ str(nResult) + " expected " + str(Len(cString)) )
      ENDIF
   EndIf

      oWinPort:Read( @xString,7)
      nPeso := val(substr(xString,2,5))/1000

      IF !oWinPort:Purge( .T., .T. )
         msginfo( "Falha no comando Purge()  :" + oWinPort:ErrorText())
      ENDIF
      oWinPort:Close()

   If empty(nPeso)
      MsgStop('Coloque um peso na balança !')
   Else
      exit
   EndIf

EndDo
Return nPeso

Veja como é simples de enteder, e o código é bem enxuto.
Já testado no XP e no Win7.
Não esquecer do #include "hbwin.ch"

Saudações,
Itamar M. Lins Jr.

Re: Harbour HBWin e a balança Toledo 9094

Enviado: 14 Nov 2010 22:33
por marcos.gurupi
Parabens! O codigo estah bem enxuto mesmo. Eu precisava de um exemplo desde em xhb 1.0.0 Vc teria?

Marcos Roberto.

Re: Harbour HBWin e a balança Toledo 9094

Enviado: 14 Nov 2010 22:52
por Itamar M. Lins Jr.
Infelizmente, o xHarbour não possue uma lib de comunicação serial no seu contrib. Para tal é preciso comprar o xHarbour do xHarbour.com.
Existe uma lib que roda por ai uma tal hbcomm.lib mas não é tão boa quanto a do Harbour e nem é mantida pelo grupo.
Se não usa o SQLRDD pode migrar para o Harbour sem traumas, essas e muitas outras funções te esperam no Harbour e sem precisar pagar.

Saudações,
Itamar M. Lins Jr.

Re: Harbour HBWin e a balança Toledo 9094

Enviado: 20 Nov 2010 12:16
por marcos.gurupi
Com harbour eh possivel usar a hwgui 2.17 por exemplo?

Marcos Roberto.

Re: Harbour HBWin e a balança Toledo 9094

Enviado: 22 Nov 2010 13:28
por Itamar M. Lins Jr.
Ola!
Ue? mas a Hwgui é feita para rodar no Harbour.
Qualquer versão da Hwgui roda inicialmente com o Harbour, repare que as modificações do Pai da Hwgui Alexander Kresin, é para Harbour pois ele usa Harbour e não xHarbour. O Przmek faz as correções e ajustes na Hwgui para Unicode->Harbour, para ela poder ser usada em dispositivos móveis.

Saudações,
Itamar M. Lins Jr.

Re: Harbour HBWin e a balança Toledo 9094

Enviado: 22 Nov 2010 20:52
por marcos.gurupi
Itamar, quer dizer q com harbour + hwgui jah se pode usar em dispositivo movel? Ou ainda eh apenas um projeto ?

Marcos Roberto

Re: Harbour HBWin e a balança Toledo 9094

Enviado: 23 Nov 2010 10:24
por Itamar M. Lins Jr.
Acredito que rode.
Veja:
2010-02-08 10:56 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* hwgui/include/hwingui.h
+ added HBTEXT() definition for xHarbour and older Harbour builds

* hwgui/source/grid.c
! aplied patch from Francesco Perillo

* hwgui/source/hcombo.prg
* hwgui/source/hmonthc.prg
* updated #pragma dump C code to compile in UNICODE mode

* hwgui/source/nice.c
* hwgui/source/shellapi.c
* updated to compile for WinCE

* hwgui/source/window.c
* hwgui/source/winreg.c
* hwgui/source/wprint.c
* hwgui/source/qhtm/hwg_qhtm.c
* updated to compile in UNICODE mode

As usual please test it and thank you very much for your help.
É uma atualização bem velha.

Saudações,
Itamar M. Lins Jr.

Re: Harbour HBWin e a balança Toledo 9094

Enviado: 29 Nov 2010 23:20
por sygecom
Marcos,
Pode usar a Fivewin Free para fazer comunicação serial, depois da HBWIN a da Fivewin é a melhor para comunicação serial, mas tem também a HBCOMM para xHarbour, ambas funcionam, mas umas com algumas particularidades a mais.