Página 1 de 1

leitura da porta serial via xhb

Enviado: 06 Nov 2009 07:26
por Mário Isa
Abri este tópico para continuidade deste
viewtopic.php?f=1&t=9827&p=56382#p56382

a pedido do Leonardo.

Mário

Re: leitura da porta serial via xhb

Enviado: 10 Nov 2009 09:42
por frazato
Bom dia!

Uso em meu Pdv dois processo de leitura via serial:

1 - Utilizando Balancao Filizola ( BP 15)
2 - Utilizando Leitor Serial

Segue parte do codigo.

Frazato

sistema_jaf@hotmail.com.

Código: Selecionar todos

@ 29, 58 get mquant picture "@E 9999.999"  ;
                    When LerBalanca(mQuant,xProdePesado)== .t. .or. xPodeMultiplicar== .t.;
                    Valid LerBalanca(mQuant,xPodeMultiplicar)==.t. .and. mQuant > 0
Read

//------------------------------------------------------
Function LerBalanca(nPeso,lFazLeitura)
Local cPesoLido := 0
If lFazLeitura==.f.
   Return .f.
Endif

If nPeso > 0
   Return .t.
Endif
If Empty(cBalPorta)
   Return .t.
Endif

cPort       := cBalPorta
nBaudrate   := nBalVelocidade
nDatabits   := nBalBits
nParity     := nBalParidade
nStopbits   := nBalStopBits
nBuffersize := 1000

nHandle:= Init_Port( cPort, nBaudrate, nDatabits, nParity, nStopbits, nBuffersize )

If nHandle <= 0
   alerta("Erro ao iniciar a porta de comunicacao !")
   Return .f.
Endif

If IsWorking( nHandle )== .F.
   Alerta("Favor configurar a porta serial !")
   Return .f.
Endif
OutBufClr( nHandle )


//-- Enviar comando para iniciar a transmissao de dados para balanca MP
cBytesToWrite := Chr(5)
nCount        := 1
OutChr( nHandle, cBytesToWrite, nCount )

//-- Aguarda um tempinho

Millisec(100)
cBuff := Space(10)
nChar := InBufSize( nHandle )
nLidos:= InChr( nHandle,nChar,@cBuff )

If nLidos > 0
   *cPesoLido  := Val(Substr(cBuff,2,5)) /1000
   cPesoLido  := Val(Substr(cBuff,2,6)) /1000
   mQuant     := cPesoLido
   UnInt_Port( nHandle )
   Return .t.
Endif
UnInt_Port( nHandle )
Return .f.

//---- Leiturade scanner serial SEAL NO CASO

cPort       := cScan_Porta//'COM5 '
nBaudrate   := nScan_Veloc//9600
nDatabits   := nScan_Bists//8
nParity     := nScan_Parid//0
nStopbits   := nScan_BStop// 1

If ! Empty(cPort)
     Set key -38 to LerPorScaner()
     keysec(-38,0.1,-0.1,.t.)  // Programa F10 a cada TEMPO segundos,
Endif

//---------------------------------------------------------
Function LerPorScaner()
         Leitor_R232(@cScanRS232)
Return Nil

//------------------------------------------------------
Function Leitor_R232(cPor)
Local nBuffersize := 1000
Local nTentativa  := 0
Local cString     := ''
Local x           := 0
Local nChar       := 1
Local cBuff       := Space(100) //14

If InBufSize(cPor) <= 0
   Return 
Endif
//OutBufClr( cPor )

While ( x++ <= 50 ) //50
  InChr( cPor,nChar,@cBuff )
  If Asc(cBuff)==13 .or. Asc(cBuff)==10
     Exit
  Else
     cString+= Alltrim(cBuff)
  Endif
  If LastKey()==27
     Exit
  Endif
End While
If Len(cString) > 0
   KeyBoard cString+Chr(13)
Endif
Return .t.

Re: leitura da porta serial via xhb

Enviado: 10 Nov 2009 10:06
por Mário Isa
e qual a LIB que vc está utilizando ?

Re: leitura da porta serial via xhb

Enviado: 10 Nov 2009 10:21
por frazato
Hbcomm.lib ( compilado com o xharbour 99.70 simples )

Frazato

Re: leitura da porta serial via xhb

Enviado: 11 Nov 2009 16:41
por sygecom
E se for com Harbour pode usar a HBWIN, que tem na Contrib do Harbour que funciona que é uma beleza até mesmo pelo Terminal Service. Na pasta CONTRIB do harbour tem exemplos de uso.