Page 1 of 1

AYUDA CON HBCOMM

Posted: Sun Apr 20, 2014 2:07 am
by eljecho24
Hola a todos, por favor podrian audarme con la libreria hbcomm, soy nuevo en esto, gracias

Re: AYUDA CON HBCOMM

Posted: Sun Apr 20, 2014 10:31 am
by danielmaximiliano
eljecho24 wrote:Hola a todos, por favor podrian audarme con la libreria hbcomm, soy nuevo en esto, gracias
Hola :
para una mejor ayuda mecesitariamos saber que necesitas manejar con la libreria HBCOMM, en Harbour hay un pequeño y simple ejemplo para leer un puerto, la cantidad de bits la maneja la variable nBuffer. la funcion fReceive() es la necesaria para leer datos desde el mismo.
yo leo un scanner de barras cada determinado tiempo el puerto y capturo los datos del mismo. eso solamente cuando la aplicacion abre "Ventas" .

Code: Select all

 *    (fixed, adapted to CLI, translated, formatted)
 * Copyright 2006 Marcelo Torres <lichitorres@yahoo.com.ar>
 * www - http://harbour-project.org
 *
 */

#require "hbcomm"

STATIC s_nHandle
STATIC s_lConnected := .F.

PROCEDURE Main()
   LOCAL nOption

   DO WHILE .T.
      ? ""
      ? "Select test:"
      ? "O) Open"
      ? "C) Close"
      ? "S) Send"
      ? "R) Receive"
      ? "Q) Quit"
      ? "> "

      nOption := Inkey( 0 )
      ?? Chr( nOption )

      SWITCH Upper( Chr( nOption ) )
      CASE "O" ; FConnect() ; EXIT
      CASE "C" ; FDisconnect() ; EXIT
      CASE "S" ; FSend() ; EXIT
      CASE "R" ; FReceive() ; EXIT
      CASE "Q" ; RETURN
      ENDSWITCH
   ENDDO

   RETURN

STATIC PROCEDURE FConnect()

   LOCAL cCom       := "COM1"
   LOCAL nBaudeRate := 19200
   LOCAL nDatabits  := 8
   LOCAL nParity    := 0 /* none */
   LOCAL nStopbit   := 1
   LOCAL nBuff      := 8000

   s_nHandle := INIT_PORT( cCom, nBaudeRate, nDatabits, nParity, nStopbit, nBuff )
   IF s_nHandle > 0
      ? "Connecting..."
      s_lConnected := .T.
      OUTBUFCLR( s_nHandle )
   ELSE
      ? "Could not open connection"
      s_lConnected := .F.
   ENDIF

   RETURN

STATIC PROCEDURE FDisconnect()

   s_lConnected := .F.
   UNINT_PORT( s_nHandle )

   RETURN

STATIC PROCEDURE FSend()
   LOCAL cToSend

   ACCEPT "Enter string to send: " TO cToSend

   IF s_lConnected .AND. ! Empty( cToSend ) .AND. ISWORKING( s_nHandle )
      OUTCHR( s_nHandle, cToSend )
   ELSE
      ? "Cannot send data"
   ENDIF

   RETURN

STATIC PROCEDURE FReceive()
   LOCAL cReceive
   LOCAL nSize

   nSize := INBUFSIZE( s_nHandle )

   IF nSize > 0
      cReceive := Space( nSize )
      INCHR( s_nHandle, nSize, @cReceive )
      ? ">>", Left( cReceive, nSize )
   ENDIF

   RETURN