Vlw Jairo pela força, mandei um e-mail pros caras vamos ver se eles retornam.
Meu código ta uma bagunça de tanto teste q fiz, mas segue abaixo se vc entender, eu aproveitei uma função q tenho chamada LerBalanca e modifiquei, ai como não deu certo mais abaixo vc vai ver outra função q usa a HBWinCom mas tb não deu certo. Resumindo ta parado sem sucesso.
Algumas funções são do Xailer como por exemplo a LogDebug q mostra numa janela do Debug.
//------------------------------------------------------------------------------
*****************************************************************
* Funçã Ler peso balança....
*****************************************************************
Function LerBalanca()
LOCAL cPesoLido := 0
LOCAL cPort, nBaudrate, nDatabits, nParity, nStopbits, nBuffersize
LOCAL cBalPorta, nBalVelocidade, nBalBits, nBalParidade, nBalStopBits
LOCAL nHandle, cBytesToWrite, nCount
LOCAL cBuff, nChar, nLidos
LOCAL mQuant, cod, cIniFile
*-- Compatibilização dos Campos
cPort := 'COM2'
nBaudrate := 19200
nDatabits := 8
nParity := 0
nStopbits := 1
nBuffersize := 1000
nHandle:= Init_Port( cPort, nBaudrate, nDatabits, nParity, nStopbits, nBuffersize )
If nHandle <= 0
msgalert("Erro ao iniciar a porta de comunicacao !")
Return 0
Endif
If IsWorking( nHandle )== .F.
MsgAlert("Favor configurar a porta serial !")
Return 0
Endif
OutBufClr( nHandle )
//-- Enviar comando
cBytesToWrite := '&h80, &hD8'
nCount := 1
OutChr( nHandle, cBytesToWrite, nCount )
AltD()
//-- Aguarda um tempinho
Inkey(0.3)
cBuff := Space(100)
nChar := InBufSize( nHandle )
nLidos:= InChr( nHandle, nChar, @cBuff )
LogDebug(cBuff)
cPesoLido := ''
If nLidos > 0
cPesoLido := Substr(cBuff,RAt("+p", cBuff)+3,8) //-- Toledo Cabeça 9091 do corpo 2124
Inkey(0.3)
UnInt_Port( nHandle )
Return cPesoLido
Endif
UnInt_Port( nHandle )
Return cPesoLido
METHOD IniciaPorta( oSender ) CLASS TForm1
*-- Compatibilização dos Campos
cPort := 'COM2'
nBaudrate := 19200
nDatabits := 8
nParity := 0
nStopbits := 1
nBuffersize := 1000
nHandle := Init_Port( cPort, nBaudrate, nDatabits, nParity, nStopbits, nBuffersize )
If nHandle <= 0
msgalert("Erro ao iniciar a porta de comunicacao !")
Return 0
Endif
If IsWorking( nHandle )== .F.
MsgAlert("Favor configurar a porta serial !")
Return 0
Endif
OutBufClr( nHandle )
RETURN Nil
//------------------------------------------------------------------------------
METHOD IniciaBina( oSender ) CLASS TForm1
*-- Compatibilização dos Campos
cPort := 'COM2'
nBaudrate := 19200
nDatabits := 8
nParity := 0
nStopbits := 1
nBuffersize := 1000
nHandle := Init_Port( cPort, nBaudrate, nDatabits, nParity, nStopbits, nBuffersize )
If nHandle <= 0
msgalert("Erro ao iniciar a porta de comunicacao !")
Return 0
Endif
If IsWorking( nHandle )== .F.
MsgAlert("Favor configurar a porta serial !")
Return 0
Endif
OutBufClr( nHandle )
/////////////
LogDebug('Iniciando modem...')
//-- Enviar comando
cBytesToWrite := Chr(HexToNum('85')) +'1' + Chr(HEXTONUM('D2'))
nCount := 1
OutChr( nHandle, cBytesToWrite, nCount )
//-- Aguarda um tempinho
Inkey(0.3)
cBuff := Space(1000)
nChar := InBufSize( nHandle )
nLidos:= InChr( nHandle, nChar, @cBuff )
RETURN Nil
METHOD OpenClick( oSender ) CLASS TForm1
FConnect()
RETURN Nil
//------------------------------------------------------------------------------
METHOD CloseClick( oSender ) CLASS TForm1
FDisconnect()
RETURN Nil
//------------------------------------------------------------------------------
METHOD SendClick( oSender ) CLASS TForm1
FSend()
RETURN Nil
//------------------------------------------------------------------------------
METHOD ReceiveClick( oSender ) CLASS TForm1
FReceive()
RETURN Nil
STATIC PROCEDURE FConnect()
LOCAL cCom := "COM2"
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
LOGDEBUG("Connecting...")
s_lConnected := .T.
OUTBUFCLR( s_nHandle )
ELSE
LOGDEBUG("Could not open connection")
s_lConnected := .F.
ENDIF
RETURN
STATIC PROCEDURE FDisconnect()
s_lConnected := .F.
LogDebug('fechando', UNINT_PORT( s_nHandle ))
RETURN
STATIC PROCEDURE FSend()
LOCAL cToSend := Space(50)
//MsgEdit('Enter string to send:','Comando',@cToSend) ; LogDebug(cToSend)
//cToSend := AllTrim(cToSend) ; LogDebug(cToSend)
c1Byte := '81' //&h80 + 0 //(1linha)
c2Byte := 'C2' // ou D2
//cToSend := Chr(HexToNum(c1Byte)) //+',' +Chr(HexToNum(c2Byte))
cToSend := Chr(129)
LogDebug(cToSend)
IF s_lConnected .AND. ! Empty( cToSend ) .AND. ISWORKING( s_nHandle )
OUTCHR( s_nHandle, cToSend )
ELSE
LOGDEBUG("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 )
Application:oMainForm:oListView1:AddItem(">>", Left( cReceive, nSize ))
LOGDEBUG(">>", Left( cReceive, nSize ))
ENDIF
RETURN
//------------------------------------------------------------------------------
#INCLUDE 'HBWIN.CH'
METHOD TestHBWinCom( oSender ) CLASS TForm1
LOCAL oWinPort
LOCAL cString := '81h' //Chr(129) //"ATE0" + Chr( 13 ) + "ATI3" + Chr( 13 )
LOCAL nResult
LOCAL lCTS, lDSR, lRing, lDCD
LOCAL lCTSHold, lDSRHold, lDCDHold, lXoffHold, lXoffSent, nInQueue, nOutQueue
//AltD()
oWinPort := win_Com():Init( 'COM2', WIN_CBR_9600, WIN_NOPARITY, 8, WIN_ONESTOPBIT )
IF oWinPort:RTSFlow( WIN_RTS_CONTROL_DISABLE )
LOGDEBUG("RTSFlow( WIN_RTS_CONTROL_DISABLE ) succeeded")
ELSE
LOGDEBUG("RTSFlow( WIN_RTS_CONTROL_DISABLE ) failed :", oWinPort:ErrorText())
ENDIF
/*
IF oWinPort:RTSFlow( WIN_RTS_CONTROL_HANDSHAKE )
LOGDEBUG("RTSFlow( WIN_RTS_CONTROL_HANDSHAKE ) succeeded")
ELSE
LOGDEBUG("RTSFlow( WIN_RTS_CONTROL_HANDSHAKE ) failed :", oWinPort:ErrorText())
ENDIF
LOGDEBUG(oWinPort:DebugDCB( HB_WIN_COM_DBGFLOW ))
*/
IF ! oWinPort:Open()
LOGDEBUG("Open() failed")
ELSE
LOGDEBUG("Open() succeeded")
IF oWinPort:Status( @lCTS, @lDSR, @lRing, @lDCD )
LogDebug( "Status() succeeded : CTS ", lCTS, ", DSR ", lDSR, ", Ring ", lRing, ", DCD ", lDCD)
ELSE
LogDebug( "Status() failed :", oWinPort:ErrorText() )
ENDIF
IF oWinPort:SetDTR( .T. )
LOGDEBUG("SetDTR( .T. ) succeeded")
ELSE
LOGDEBUG("SetDTR( .T. ) failed :", oWinPort:ErrorText())
ENDIF
IF oWinPort:SetRTS( .F. )
LOGDEBUG("SetRTS( .F. ) succeeded (it shouldn't according to docs!)")
ELSE
LOGDEBUG("SetRTS( .F. ) failed (it should) :", oWinPort:ErrorText())
ENDIF
IF ( nResult := oWinPort:Write( cString ) ) == Len( cString )
LOGDEBUG("Write() succeeded")
ELSE
LOGDEBUG("Write() failed, returned ", nResult, " expected ", Len(cString))
ENDIF
LOGDEBUG("Scan something... we'll not read it but purge it, press enter" )
Inkey( 1 )
LOGDEBUG("Read() ", oWinPort:Read( @cString, 32 ), Len( cString ), cString)
LOGDEBUG(oWinPort:ErrorText() )
LOGDEBUG("Close", oWinPort:Close())
ENDIF
RETURN Nil