cyclonet Posted October 27, 2011 Report Share Posted October 27, 2011 Seguem a baixo as funções - A primeira função utiliza a P05.DLL Não está capturando o peso está retornando vazio - Já a segunda função utiliza a HBCOMM.LIB (que foi incorporada ao projeto), apresenta erro na compilação: >Executando: ILINK32 @B32.BC >Turbo Incremental Link 5.65 Copyright © 1997-2002 Borland >Error: Unresolved external 'std::_String_base::_Xran() >const' referenced from HBCOMM\HBCOMM.LIB|COMM >Error: Unresolved external 'std::_String_base::_Xlen() >const' referenced from HBCOMM\HBCOMM.LIB|COMM >#include "FiveWin.ch" STATIC xDllB *----------------------------------------------------------- FUNCTION Le_Peso_1() LOCAL retorno LOCAL Peso := Space(5) IF ! FILE(".\DLL\P05.DLL") MSGINFO("O Arquivo P05.DLL não foi encontrado, solicite a Empresa Desenvolvedora","Atenção" ) RETURN( 1 ) ENDIF xDllB := LoadLibrary( ".\DLL\P05.DLL" ) RETORNO:= ABREPORTA( 1, 2, 0, 2 ) ? RETORNO If Retorno # 1 RETORNO := FECHAPORTA() FreeLibrary( xDllb ) If MsgNoYes( "O Sistema Não Conseguiu Ler o Peso da Balança." + CRLF + ; "Retire o produto da balança e coloque novamente para nova leitura."+ CRLF + ; "Deseja Digitar o Peso do Produto?","Erro na Leitura da Balança" ) oget_quantidade:setfocus() oget_quantidade:refresh() Else RETURN( 0 ) Endif Endif Retorno := PegaPeso( "COM1", @Peso, " " ) xQtd := val(peso) xQtd := Round(xQtd/1000,3) If xQtd <= 0 If MsgNoYes( "O Sistema Não Conseguiu Ler o Peso da Balança." + CRLF + ; "Retire o produto da balança e coloque novamente para nova leitura."+ CRLF + ; "Deseja Digitar o Peso do Produto?","Erro na Leitura da Balança" ) oget_quantidade:setfocus() oget_quantidade:refresh() Else Peso := Space(5) Retorno := PegaPeso( 0, @Peso, "c:\" ) xQtd := val(peso) IF xQtd = 0 xQtd := 1 ENDIF Endif Endif Retorno := FechaPorta() FreeLibrary( xDllb ) Return( xQtd ) ******************************************************************************** FUNCTION Le_Peso_2() NHANDLE:=Init_Port("COM1",9600,8,0,1,8000) OutBufClr(NHANDLE) // Limpa o Buffer de Saida OUTCHR(NHANDLE,CHR(5)) SysWait(0.3) Bytes := InbufSize(NHANDLE) DADOS=SPACE(20) Buffer := InChr( NHANDLE, Bytes, @DADOS) //LER BUFFER DE ENTRADA DA BALANCA UnInt_Port(nHandle) dados=alltrim(dados) QTDE=val(substr(dados,2,5))/1000 IF QTDE=0 PU=1 VLU:=TRANSFORM(PU,"@E 9999.99") oget_quantidade:setfocus() oget_quantidade:refresh() ENDIF RETURN QTDE * Declaração abaixo serve para a 1a. Função DLL32 FUNCTION AbrePorta( Porta AS LONG, BaudRate AS LONG, DataBits AS LONG, Paridade AS LONG ) AS LONG PASCAL lib xDllb DLL32 FUNCTION PegaPeso( OpcaoEscrita AS LONG, Peso AS STRING, Diretorio AS STRING ) AS LONG PASCAL lib xDllb DLL32 FUNCTION FechaPorta() AS LONG PASCAL lib xDllb Agradeceria se alguem ajudasse!!! Niterói - RJ ------------------------- Equipe Desenvolvimento CYCLONET TECNOLÓGICA LTDA sistemas.cyclonet@gmail.com FWH11.09 Editado por - cyclonet on 27/10/2011 16:34:36 Quote Link to comment Share on other sites More sharing options...
cyclonet Posted October 27, 2011 Author Report Share Posted October 27, 2011 Seguem a baixo as funções - A primeira função utiliza a P05.DLL Não está capturando o peso está retornando vazio - Já a segunda função utiliza a HBCOMM.LIB (que foi incorporada ao projeto), apresenta erro na compilação: >Executando: ILINK32 @B32.BC >Turbo Incremental Link 5.65 Copyright © 1997-2002 Borland >Error: Unresolved external 'std::_String_base::_Xran() >const' referenced from HBCOMM\HBCOMM.LIB|COMM >Error: Unresolved external 'std::_String_base::_Xlen() >const' referenced from HBCOMM\HBCOMM.LIB|COMM >#include "FiveWin.ch" STATIC xDllB *----------------------------------------------------------- FUNCTION Le_Peso_1() LOCAL retorno LOCAL Peso := Space(5) IF ! FILE(".\DLL\P05.DLL") MSGINFO("O Arquivo P05.DLL não foi encontrado, solicite a Empresa Desenvolvedora","Atenção" ) RETURN( 1 ) ENDIF xDllB := LoadLibrary( ".\DLL\P05.DLL" ) RETORNO:= ABREPORTA( 1, 2, 0, 2 ) ? RETORNO If Retorno # 1 RETORNO := FECHAPORTA() FreeLibrary( xDllb ) If MsgNoYes( "O Sistema Não Conseguiu Ler o Peso da Balança." + CRLF + ; "Retire o produto da balança e coloque novamente para nova leitura."+ CRLF + ; "Deseja Digitar o Peso do Produto?","Erro na Leitura da Balança" ) oget_quantidade:setfocus() oget_quantidade:refresh() Else RETURN( 0 ) Endif Endif Retorno := PegaPeso( "COM1", @Peso, " " ) xQtd := val(peso) xQtd := Round(xQtd/1000,3) If xQtd <= 0 If MsgNoYes( "O Sistema Não Conseguiu Ler o Peso da Balança." + CRLF + ; "Retire o produto da balança e coloque novamente para nova leitura."+ CRLF + ; "Deseja Digitar o Peso do Produto?","Erro na Leitura da Balança" ) oget_quantidade:setfocus() oget_quantidade:refresh() Else Peso := Space(5) Retorno := PegaPeso( 0, @Peso, "c:\" ) xQtd := val(peso) IF xQtd = 0 xQtd := 1 ENDIF Endif Endif Retorno := FechaPorta() FreeLibrary( xDllb ) Return( xQtd ) ******************************************************************************** FUNCTION Le_Peso_2() NHANDLE:=Init_Port("COM1",9600,8,0,1,8000) OutBufClr(NHANDLE) // Limpa o Buffer de Saida OUTCHR(NHANDLE,CHR(5)) SysWait(0.3) Bytes := InbufSize(NHANDLE) DADOS=SPACE(20) Buffer := InChr( NHANDLE, Bytes, @DADOS) //LER BUFFER DE ENTRADA DA BALANCA UnInt_Port(nHandle) dados=alltrim(dados) QTDE=val(substr(dados,2,5))/1000 IF QTDE=0 PU=1 VLU:=TRANSFORM(PU,"@E 9999.99") oget_quantidade:setfocus() oget_quantidade:refresh() ENDIF RETURN QTDE * Declaração abaixo serve para a 1a. Função DLL32 FUNCTION AbrePorta( Porta AS LONG, BaudRate AS LONG, DataBits AS LONG, Paridade AS LONG ) AS LONG PASCAL lib xDllb DLL32 FUNCTION PegaPeso( OpcaoEscrita AS LONG, Peso AS STRING, Diretorio AS STRING ) AS LONG PASCAL lib xDllb DLL32 FUNCTION FechaPorta() AS LONG PASCAL lib xDllb Agradeceria se alguem ajudasse!!! Niterói - RJ ------------------------- Equipe Desenvolvimento CYCLONET TECNOLÓGICA LTDA sistemas.cyclonet@gmail.com FWH11.09 Editado por - cyclonet on 27/10/2011 16:34:36 Quote Link to comment Share on other sites More sharing options...
Theotokos Posted October 27, 2011 Report Share Posted October 27, 2011 Vc usou Retorno := PegaPeso( "COM1", @Peso, " " )id=red> e depois Retoro := PegaPeso( 0,@Peso, " " ) id=blue> Será que ter haver? citação:Seguem a baixo as funções - A primeira função utiliza a P05.DLL Não está capturando o peso está retornando vazio - Já a segunda função utiliza a HBCOMM.LIB (que foi incorporada ao projeto), apresenta erro na compilação: >Executando: ILINK32 @B32.BC >Turbo Incremental Link 5.65 Copyright © 1997-2002 Borland >Error: Unresolved external 'std::_String_base::_Xran() >const' referenced from HBCOMM\HBCOMM.LIB|COMM >Error: Unresolved external 'std::_String_base::_Xlen() >const' referenced from HBCOMM\HBCOMM.LIB|COMM >#include "FiveWin.ch" STATIC xDllB *----------------------------------------------------------- FUNCTION Le_Peso_1() LOCAL retorno LOCAL Peso := Space(5) IF ! FILE(".\DLL\P05.DLL") MSGINFO("O Arquivo P05.DLL não foi encontrado, solicite a Empresa Desenvolvedora","Atenção" ) RETURN( 1 ) ENDIF xDllB := LoadLibrary( ".\DLL\P05.DLL" ) RETORNO:= ABREPORTA( 1, 2, 0, 2 ) ? RETORNO If Retorno # 1 RETORNO := FECHAPORTA() FreeLibrary( xDllb ) If MsgNoYes( "O Sistema Não Conseguiu Ler o Peso da Balança." + CRLF + ; "Retire o produto da balança e coloque novamente para nova leitura."+ CRLF + ; "Deseja Digitar o Peso do Produto?","Erro na Leitura da Balança" ) oget_quantidade:setfocus() oget_quantidade:refresh() Else RETURN( 0 ) Endif Endif Retorno := PegaPeso( "COM1", @Peso, " " ) xQtd := val(peso) xQtd := Round(xQtd/1000,3) If xQtd <= 0 If MsgNoYes( "O Sistema Não Conseguiu Ler o Peso da Balança." + CRLF + ; "Retire o produto da balança e coloque novamente para nova leitura."+ CRLF + ; "Deseja Digitar o Peso do Produto?","Erro na Leitura da Balança" ) oget_quantidade:setfocus() oget_quantidade:refresh() Else Peso := Space(5) Retorno := PegaPeso( 0, @Peso, "c:\" ) xQtd := val(peso) IF xQtd = 0 xQtd := 1 ENDIF Endif Endif Retorno := FechaPorta() FreeLibrary( xDllb ) Return( xQtd ) ******************************************************************************** FUNCTION Le_Peso_2() NHANDLE:=Init_Port("COM1",9600,8,0,1,8000) OutBufClr(NHANDLE) // Limpa o Buffer de Saida OUTCHR(NHANDLE,CHR(5)) SysWait(0.3) Bytes := InbufSize(NHANDLE) DADOS=SPACE(20) Buffer := InChr( NHANDLE, Bytes, @DADOS) //LER BUFFER DE ENTRADA DA BALANCA UnInt_Port(nHandle) dados=alltrim(dados) QTDE=val(substr(dados,2,5))/1000 IF QTDE=0 PU=1 VLU:=TRANSFORM(PU,"@E 9999.99") oget_quantidade:setfocus() oget_quantidade:refresh() ENDIF RETURN QTDE * Declaração abaixo serve para a 1a. Função DLL32 FUNCTION AbrePorta( Porta AS LONG, BaudRate AS LONG, DataBits AS LONG, Paridade AS LONG ) AS LONG PASCAL lib xDllb DLL32 FUNCTION PegaPeso( OpcaoEscrita AS LONG, Peso AS STRING, Diretorio AS STRING ) AS LONG PASCAL lib xDllb DLL32 FUNCTION FechaPorta() AS LONG PASCAL lib xDllb Agradeceria se alguem ajudasse!!! Niterói - RJ ------------------------- Equipe Desenvolvimento CYCLONET TECNOLÓGICA LTDA sistemas.cyclonet@gmail.com FWH11.09 id=quote>id=quote> Quote Link to comment Share on other sites More sharing options...
Theotokos Posted October 27, 2011 Report Share Posted October 27, 2011 Dê uma olhada nisto tmb. Esta em VB mas dá para entender como funciona Este codigo funcionar para as balanças toledo 9094 prix III toledo 8217 filizola bps 15 Declare Function PegaPeso Lib "P05.DLL" (ByVal OpcaoEscrita As Long, ByVal Peso As String, ByVal Diretorio As String) As Long Declare Function AbrePorta Lib "P05.DLL" (ByVal Porta As Long, ByVal BaudRate As Long, ByVal DataBits As Long, ByVal Paridade As Long) As Long Declare Function FechaPorta Lib "P05.DLL" () As Long Dim porta As integer Dim retornoPorta As integer Dim retornoPegaPeso As String Dim peso As String Dim baudeRate As integer Select Case bal.getPorta Case "COM1" : porta = 1 Case "COM2" : porta = 2 Case "COM3" : porta = 3 Case "COM4" : porta = 4 End Select retornoPorta = AbrePorta(porta,0 ,1 ,0 ) retornoPegaPeso = PegaPeso(0, peso, "C:\") retornoPorta = FechaPorta If retornoPegaPeso = 1 Then pegaPesoProduto(Qtd) Else Msgbox( "Comunicação com a balança em falha", "Aviso") Return False End If If Cdbl(Qtd.Text) = 0 Then MsgBox( "Coloque o peso na balança para continuar.", "Aviso") Return False End If private Sub pegaPesoProduto(ByVal Qtd As TextBox) if dir("C:\peso.txt") <> "" then Dim sLinha As String 'Abrindo arquivo arquivoStream = System.IO.File.OpenText( "C:\peso.txt") Open "C:\Peso.txt" for input as #1 Line Input #1, sLinha Qtd.Text = sLinha close #1 End Sub id=code>id=code> Quote Link to comment Share on other sites More sharing options...
cyclonet Posted October 27, 2011 Author Report Share Posted October 27, 2011 Theotokos Ainda não tive sucesso... Niterói - RJ ------------------------- Equipe Desenvolvimento CYCLONET TECNOLÓGICA LTDA sistemas.cyclonet@gmail.com FWH11.09 Quote Link to comment Share on other sites More sharing options...
Theotokos Posted October 27, 2011 Report Share Posted October 27, 2011 a função retornoPegaPeso = PegaPeso(0, peso, "C:\") grava um arquivo texto na pasta C:\ chamada PESO.TXT, ai vc le este arquivo e pega o peso... citação:Theotokos Ainda não tive sucesso... Niterói - RJ ------------------------- Equipe Desenvolvimento CYCLONET TECNOLÓGICA LTDA sistemas.cyclonet@gmail.com FWH11.09 id=quote>id=quote> Quote Link to comment Share on other sites More sharing options...
cyclonet Posted October 27, 2011 Author Report Share Posted October 27, 2011 Caro Amigo - Theotokos Conseguimos solucionar a captura do peso graças a sua ajuda. O problema era tão simples, mas estava sendo como procurar agulha no palheiro. Acontece né. Agradecemos pela ajuda. Niterói - RJ ------------------------- Equipe Desenvolvimento CYCLONET TECNOLÓGICA LTDA sistemas.cyclonet@gmail.com FWH11.09 Quote Link to comment Share on other sites More sharing options...
sbruni Posted November 21, 2011 Report Share Posted November 21, 2011 Vocês poderiam me enviar a P05.dll? Sabem me informar se funciona com a Toledo 9091? Grata Quote Link to comment Share on other sites More sharing options...
Eduardo Bilato Posted November 23, 2011 Report Share Posted November 23, 2011 Bom dia sbruni Quanto a essa P05.dll não sei dizer... utilizo aqui a HbComm.lib e não tenho problemas com a Toledo 9091 Faça uma busca no Fórum por 'hbcomm', acredito que suas dúvidas serão sanadas att Eduardo de Camargo Bilato FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY email: eduardobilato@gmail.com msn: dunhox@hotmail.com Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.