Compañeros,estoy usando un aplicacion que tiene que acceder al puerto COM1 y no puedo en ninguno de los puertos. Debo configurar algo en mi maquina ?. Desde ya muchas gracias.
Saludos
#include "hbcom.ch"
PROCEDURE Main( cPortName )
LOCAL cString := "ATE0" + Chr( 13 ) + "ATI3" + Chr( 13 )
LOCAL nTimeOut := 3000 // 3000 miliseconds = 3 sec.
LOCAL nResult
LOCAL nPort := 1
cPortName := "COM1"
IF ! Empty( cPortName )
hb_comSetDevice( nPort, cPortName )
ENDIF
IF ! hb_comOpen( nPort )
? "Cannot open port:", nPort, hb_comGetDevice( nPort ), ;
"error: " + hb_ntos( hb_comGetError( nPort ) )
ELSE
? "port:", hb_comGetDevice( nPort ), "opened"
IF ! hb_comInit( nPort, 9600, "N", 8, 1 )
? "Cannot initialize port to: 9600:N:8:1", ;
"error: " + hb_ntos( hb_comGetError( nPort ) )
ELSE
nResult := hb_comSend( nPort, cString, hb_BLen( cString ), nTimeOut )
IF nResult != hb_BLen( cString )
? "SEND() failed,", nResult, "bytes sent in", nTimeOut / 1000, ;
"sec., expected:", hb_BLen( cString ), "bytes."
? "error: " + hb_ntos( hb_comGetError( nPort ) )
ELSE
? "SEND() succeeded."
ENDIF
WAIT "Press any key to begin reading..."
cString := Space( 32 )
nTimeOut := 500 // 500 milliseconds = 0.5 sec.
nResult := hb_comRecv( nPort, @cString, hb_BLen( cString ), nTimeOut )
IF nResult == -1
? "RECV() failed,", ;
"error: " + hb_ntos( hb_comGetError( nPort ) )
ELSE
? nResult, "bytes read in", nTimeOut / 1000, "sec."
ENDIF
ENDIF
? "CLOSE:", hb_comClose( nPort )
ENDIF
RETURN
#include "hbcom.ch" //?? -> HCOMM.LIB
// Esto es para LECTOR de CODIGOS DE BARRAS
STATIC cPorta // := "COM1" - Porta de Onde vem os Bits da Memoria.
STATIC nBaudios := 9600 //-> nBaudios - Velocidade do Bit - Numerico.
STATIC nBits := 8 //-> Tratamento de Bits - Digito Binario.
STATIC cParidad := "n" //-> <1,2,3> Paridade do Bit - Analogia - Numerico.
STATIC nStops := 0 //-> 0 Protocolo de Parada e Espera do Bit.
STATIC cBuffer := 8000 //-> Controle do Buffer Default Antigo era 1024
STATIC nComm //-> Controle de Abertura da Porta Serial
PROCEDURE Main( cPortName )
LOCAL cString := "ATE0" + Chr( 13 ) + "ATI3" + Chr( 13 )
LOCAL nTimeOut := 3000 // 3000 miliseconds = 3 sec.
LOCAL nResult
LOCAL nPort := 1
cPortName := "COM1"
IF ! Empty( cPortName )
hb_comSetDevice( nPort, cPortName )
ENDIF
IF ! hb_comOpen( nPort )
? "Cannot open port:", nPort, hb_comGetDevice( nPort ), ;
"error: " + hb_ntos( hb_comGetError( nPort ) )
ELSE
? "port:", hb_comGetDevice( nPort ), "opened"
IF ! hb_comInit( nPort, 9600, "N", 8, 1 )
? "Cannot initialize port to: 9600:N:8:1", ;
"error: " + hb_ntos( hb_comGetError( nPort ) )
ELSE
nResult := hb_comSend( nPort, cString, hb_BLen( cString ), nTimeOut )
IF nResult != hb_BLen( cString )
? "SEND() failed,", nResult, "bytes sent in", nTimeOut / 1000, ;
"sec., expected:", hb_BLen( cString ), "bytes."
? "error: " + hb_ntos( hb_comGetError( nPort ) )
ELSE
? "SEND() succeeded."
ENDIF
WAIT "Press any key to begin reading..."
cString := Space( 32 )
nTimeOut := 500 // 500 milliseconds = 0.5 sec.
nResult := hb_comRecv( nPort, @cString, hb_BLen( cString ), nTimeOut )
IF nResult == -1
? "RECV() failed,", ;
"error: " + hb_ntos( hb_comGetError( nPort ) )
ELSE
? nResult, "bytes read in", nTimeOut / 1000, "sec."
ENDIF
ENDIF
? "CLOSE:", hb_comClose( nPort )
ENDIF
RETURN
// ejemplos, usando HBCOMM para Lector de codigos de barras.
//-Leitura da Porta Serial, Desde HBCOMM.LIB em [x]Harbour-------------------//
FUNCTION LER_PORTA( oLbx, oDbfpedf, oDbfestoque, oDbfNumNf, ;
oDbfVendedor )
LOCAL nBytes := 15
LOCAL cCodigo := SPACE(15), xresto
PUBLIC cCod, xCod, XTPV
DEFAULT cCod := SPACE(15)
DEFAULT xCod := SPACE(15)
IF EMPTY(nComm)
//-> Chama a Funcao de Ativar a Porta Serial.
Ativar_Porta()
//-> Chama a Funcao de Ativar a Porta Serial.
ENDIF
nBytes := InbufSize(nComm) // Pega Dados do Buffer.
nBitReceb += nBytes
IF nBytes > 0
cCodigo = SPACE(nBytes)
//->nBytesRead - Ler os Bytes do Handle da Porta. o Conteudo do Codigo.
InChr( nComm, nBytes, @cCodigo ) //-> Leitura dos Dados do Buffer.
IF ASC(RIGHT(CCODIGO,1))#13
XRESTO:=cCodigo
CCODIGO = SPACE(15)
//->nBytesRead - Ler os Bytes do Handle da Porta. o Conteudo do Codigo.
InChr( nComm, nBytes, @cCodigo ) //-> Leitura dos Dados do Buffer.
CCODIGO:=ALLTRIM(XRESTO)+ALLTRIM(CCODIGO)
ENDIF
CCODIGO := ALLTRIM(CCODIGO)
IF LEN(CCODIGO)>13
CCODIGO:=LEFT(CCODIGO,13)
ENDIF
IF ASC(RIGHT(CCODIGO,1))=13
CCODIGO:=LEFT(CCODIGO,LEN(CCODIGO)-1)
ENDIF
//-------------------------------------------------
//-> Tratamento do C¢digo de Barras.
If LEN( ALLTRIM( cCodigo ) ) > 0
//-> Area dos Leitores Seal
xCod := SubStr( cCodigo, 1, 15 ) // Original do Edvaldo NÆo Mexi
// Os Leitores Metrologic, Al‚m do C¢digo de Barras, Geram
// Dois <Enter-CRLF> Ap¢s o C¢digo de Barras. Retir -los Assim:
// Lˆ C¢digos de Barras Com 15 Digitos -> Metrogic MS700i
// Para Leitores At&T Tipo o da Sapataria
If Left( cCodigo, 1 ) = "A" // Leitor At&T
xCod := Substr( cCodigo, 2, 13 )
Endif
cCod := ALLTRIM( xCod )
while right(cCod,1)#"0".and.right(cCod,1)#"1".and.right(cCod,1)#"2".and.;
right(cCod,1)#"3".and.right(cCod,1)#"4".and.right(cCod,1)#"5".and.;
right(cCod,1)#"6".and.right(cCod,1)#"7".and.right(cCod,1)#"8".and.right(cCod,1)#"9".and.len(cCod)>0
sysrefresh()
cCod:=alltrim(left(cCod,len(cCod)-1))
enddo
cCod:=left(cCod+space(15),15)
VER_PRODUTOS( cCod, Aget, oLbx, oDbfPedf, oDbfEstoque, ;
oDbfNumNf, oDbfClientes, ;
oDbfVendedor, oDbfAreceber, ;
oDbfRetirada, lAppend )
ENDIF
ELSEIF nBytes > 15
MsgInfo( "Leitura Não Realizada!!!", "Erro na Porta Serial" )
Fechar_Porta()
Ler_Porta( oLbx, oDbfpedf, oDbfestoque, oDbfVendedor )
ENDIF
//-> Limpeza da Vari vel e do Buffer do Leitor Serial
nBitReceb := 0
nBytes := OutBufClr(nComm) // Limpa o Buffer de Sa¡da do Leitor Serial.
cCod := SPACE(15)
cCodigo := SPACE(15)
RETURN NIL
//-> Funcao Para Fechar a Porta Definitivamente.-----------------------------//
FUNCTION Fechar_Porta()
//->Fechar a Porta Serial, na Saida do Modulo.
Fechar_Leitura()
RETURN NIL
//-> Funcao Para Ativar a Porta Serial do Micro Computador.------------------//
STATIC FUNCTION Ativar_Porta() //-> Continha Erros... J Era!
LOCAL nError
LOCAL nHandle
PUBLIC BUFFER := SPACE(4000)
//-> Vai Iniciar a Porta, Se Houver ConexÆo Remota Correta.
IF (nComm:=Init_Port(cPorta,nBaudios,nBits,cParidad,nStops,cBuffer)) == -1
IF !ISWORKING(nComm)
MsgStop( "Porta do Leitor Desconectada! ", ;
"Erro Ao Tentar Abrir a Porta Serial " )
RETURN( .T. )
ENDIF
ENDIF
RETURN( .T. )
//-> Funcao Para Encerrar a Leitura da Porta Definitivamente. Saida Geral.---//
STATIC FUNCTION Fechar_Leitura()
//-> Comando Para Desativar a Porta Serial Definitivamente
RETURN UNINT_PORT(nComm)
//-> Fechar o Leitor de Códigos de Barras Temporariamente
FUNCTION FECHA_LEITOR()
PUBLIC XULS
//-> Fecho a Porta Temporariamente Para Alterar Um Produto
If Val( xUls ) > 0
//-> Desativa o Timer do Leitor de C¢digos de Barras
oTimerVendas:Deactivate()
//-> Funcao Para Fechar a Porta Serial
Fechar_Porta()
Endif
RETURN( .T. )
//-> Reabrir o Leitor de Códigos de Barras Temporariamente
FUNCTION ABRE_LEITOR()
PUBLIC XULS
//-> Reabro a Porta do Leitor Novamente, Depois de Alterar.
If Val( xUls ) > 0
//-> Ativa o Timer do Leitor de C¢digos de Barras
oTimerVendas:Activate()
//-> Funcao Para Fechar a Porta Serial
Ativar_Porta()
Endif
RETURN( .T. )
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: Google [Bot], Horizon and 97 guests