Jump to content
Fivewin Brasil

Captura peso - Balança Toledo Prix 3 (RESOLVIDO)


cyclonet

Recommended Posts

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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>

Perfil.jpg

Link to comment
Share on other sites

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>

Perfil.jpg

Link to comment
Share on other sites

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>

Perfil.jpg

Link to comment
Share on other sites

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

Link to comment
Share on other sites

  • 4 weeks later...

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...