MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


5 participantes

    Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"

    Joaquim Leal
    Joaquim Leal
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 26/08/2014

    Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"  Empty Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"

    Mensagem  Joaquim Leal 12/5/2016, 17:47

    Boa tarde!

    Pessoal, já há algum tempo estou com um problema em um código para capturar o peso de uma balança para um campo dentro de um FORM!

    Se eu adiciono um ponto de interrupção e executo passo a passo, funciona, mas ao fechar o form e o Banco de Dados, ao retornar o código deixa de funcionar. Não dá nenhuma mensagem de ERRO!

    Estou trabalhando com duas balanças, uma Elgin SA-110 e/ou uma Filizola CS-15 usando a porta COM4 com as configurações de Bitrate e velocidades padrão: 9600,n,8,1 (já tentei com a velocidade 2400) 

    Estou usando o Controle Activex MSComm4 (Sistema Operacional Windows 7 Professional com o MS Access 2010)

    Já tentei de tudo e até agora nada!

    Segue o Banco com o referido código, alguém pode me auxiliar? 

    Muito obrigado!
    Anexos
    Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"  AttachmentCódigo Falha.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (203 Kb) Baixado 70 vez(es)
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3900
    Registrado : 04/04/2010

    Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"  Empty Re: Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"

    Mensagem  Avelino Sampaio 13/5/2016, 10:53

    Olá!

    se funciona com o ponto de interrupção, talvez resolva se vc atrasar a execução do código entre as linhas. Para atrasar a execução de um código, utilize a minha dica 37.

    http://www.usandoaccess.com.br/dicas/dicas-praticas-de-access-parte-4.asp?id=1&idlista=189#inicio

    Sucesso!



    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso vitalício ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    Joaquim Leal
    Joaquim Leal
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 26/08/2014

    Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"  Empty Re: Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"

    Mensagem  Joaquim Leal 13/5/2016, 14:24

    Obrigado Avelino, vou ver se funciona e retorno mais tarde!
    Obrigado mesmo, estou ficando maluco com esse código!
    Joaquim Leal
    Joaquim Leal
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 26/08/2014

    Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"  Empty Re: Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"

    Mensagem  Joaquim Leal 13/5/2016, 18:24

    Meu amigo Avelino

    Fiz como sua sugestão, mas o problema continua, lhe ocorre mais alguma alternativa?
    Obrigado!
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3900
    Registrado : 04/04/2010

    Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"  Empty Re: Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"

    Mensagem  Avelino Sampaio 21/5/2016, 11:42

    Quantos pontos de interrupção na prática vc usa ?

    Ponha o Sleep em vários pontos e aumente bem o tempo.

    Cadê a API sleep no projeto ?

     Private Sub MSComm4_OnComm()
            Dim InBuff As String
            Dim InTenta As Integer
            Dim ValorPego As String
            Dim sMessage As String
            Dim cCadFin As String
            Dim nAux1 As Integer
            Dim cCharVa As String
            Dim cResult As String
           
               sMessage = ""
               InTenta = 0
               cCadFin = vbCr + Chr$(3)
               cCharVa = "+.0123456789"
               Sleep 5000
               MSComm4.Output = "AT" & Chr(5) & Chr$(13)
               'Asc ("ENQ") & Chr$(13)
               Sleep 5000
            If MSComm4.CommEvent = comEvReceive Then
             Do
                 'DoEvents
                 Sleep 5000
                 sMessage = sMessage & MSComm4.Input
             Loop Until InStr(sMessage, cCadFin) Or Len(sMessage) >= 7
             For nAux1 = 1 To 10 'Len(sMessage)
                 If InStr(cCharVa, Mid$(sMessage, nAux1, 1)) > 0 Then
                     cResult = cResult + Mid(sMessage, nAux1, 1)
                 End If
             Next
             Call HandleInput(cResult)
           End If
           
            If MSComm4.PortOpen = True Then
               MSComm4.PortOpen = False
            End If
             
         End Sub


    Aguardamos


    Última edição por Avelino Sampaio em 21/5/2016, 11:48, editado 1 vez(es)


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso vitalício ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3900
    Registrado : 04/04/2010

    Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"  Empty Re: Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"

    Mensagem  Avelino Sampaio 21/5/2016, 11:48

    Veja se este tópico lhe ajuda, seguindo outro caminho de programação:

    https://www.maximoaccess.com/t8624-resolvido-capturar-dados-atraves-da-porta-serial?highlight=porta+serial

    Aguardamos


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso vitalício ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"  Empty Re: Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"

    Mensagem  Alvaro Teixeira 21/5/2016, 12:30

    Olá a todos,
    Vejam se ajuda:
    https://support.microsoft.com/pt-br/kb/118468
    http://forum.baboo.com.br/index.php?/topic/186102-doevents-o-que-%C3%A9-isso/
    Abraço
    Joaquim Leal
    Joaquim Leal
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 26/08/2014

    Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"  Empty Re: Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"

    Mensagem  Joaquim Leal 23/5/2016, 17:59

    Obrigado Avelino e Ahteixeira

    Ainda não obtive êxito! :/ 
    Avelino, quando você pergunta: Cadê a API sleep no projeto?
    Isto quer dizer que falta alguma coisa além de informar no código "Sleep 5000"? 
    Bem, eu fiz como vc indicou, mesmo assim sem resultados!
    Trabalhei com o ponto de interrupção em vários locais, notei que se eu coloco este "Ponto de interrupção" após o "Do" (figura anexa) o código não roda.

    O link com outro código que Vc indicou foi o primeiro que usei, mas não consegui nenhum resultado, e nem contato com a pessoa que teve êxito.

    - AhTeixeira
    Olhei o link que Vc me indicou, também usei o "DoEvents" junto com o "Sleep" e em separado, mas acontece a mesma coisa.

    Ou seja, se rodar o código com uma "Parada de Interrupção" o form consegue pegar o valor da balança, após remover o "Ponto" ele para.

    Obrigado pela ajuda Amigos, mas ainda não consegui fazer funcionar, agradeço se puderem continuar nesta busca!

    Cordialmente!

    Joaquim Leal
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3900
    Registrado : 04/04/2010

    Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"  Empty Re: Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"

    Mensagem  Avelino Sampaio 23/5/2016, 19:34

    Veja se encontra informação útil neste tópico abaixo.

    http://www.access-programmers.co.uk/forums/showthread.php?t=220916&highlight=MSComm4.PortOpen

    Analise todas os códigos apresentados

    Aguardamos


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso vitalício ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    Joaquim Leal
    Joaquim Leal
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 26/08/2014

    Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"  Empty Re: Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"

    Mensagem  Joaquim Leal 24/5/2016, 03:16

    Obrigado Avelino!

    Vou estudar e realizar novos testes na 4a feira e com certeza volto para trazer os resultados, espero que agora consiga uma solução definitiva.

    Desde já o meu MUITO OBRIGADO pela atenção!

    Cordialmente

    Joaquim
    Joaquim Leal
    Joaquim Leal
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 26/08/2014

    Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"  Empty Re: Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"

    Mensagem  Joaquim Leal 12/7/2016, 17:54

    Olá Amigos!

    Quero agradecer imensamente pela ajuda que me prestaram, mas infelizmente ainda não obtive êxito com a minha missão, que é capturar o PESO de uma balança conectada a porta serial Com4 e jogar o valor do peso para um campo do meu form.

    Aplicando o "Timer" que o amigo Avelino sugeriu, apliquei em diversos pontos com diversos valores mas não surtiu nenhum efeito.

    Agora consegui determinar que se eu aplicar um "Ponto de Interrupção" abaixo da linha em destaque o código NÃO RODA, assim, deduzo que deve ser algo com o Controle Ativex "MSComm4". No entanto, após executar o código UMA VEZ com o ponto de interrupção e ir seguindo no passo a passo (tecla F8) até o final, o código funciona mesmo após retirar o Ponto e fechar o Form, assim fiz vários testes, abri e fechei o Form várias vezes e funcionou... Maaaaaas após fechar o banco o código novamente para de funcionar ao abrir o Form.

    Poderia ser algum problema de memória?
    Algum problema com o Ativex?
    Algum problema com a Porta Serial?
    Algum problema ou configuração de algum arquivo que deva ser configurado?

    Agradeço imensamente caso alguém possa me ajudar.

    Código:
    Private Sub Comando79_Click()
    Dim intPortID As Integer ' Ex. 1, 2, 3, 4 for COM1 - COM4
    Dim lngStatus As Long
    Dim strData As String
    Dim iPorts As Integer

    On Error GoTo PROC_ERR

      If MSComm4.PortOpen = True Then
            MSComm4.PortOpen = False
      End If

            With MSComm4
                .CommPort = 4
                .RThreshold = 1
                .RTSEnable = True
                .Settings = "9600,N,8,1"
                .SThreshold = 1
                .Handshaking = 1
                .InputLen = 0
                .InBufferCount = 0
                .OutBufferCount = 0
                .PortOpen = True
             End With
            
             Call MSComm4_OnComm
      
    PROC_EXIT:
        If MSComm4.PortOpen = True Then
            MSComm4.PortOpen = False
        End If
      Exit Sub

    PROC_ERR:
      MsgBox "Error: " & Err.Number & ". " & Err.Description, , "modDateTime.WaitSeconds"
      Resume PROC_EXIT
      
    End Sub

     Private Sub MSComm4_OnComm()
             Dim InBuff As String
             Dim InTenta As Integer
             Dim ValorPego As String
             Dim sMessage As String
             Dim cCadFin As String
             Dim nAux1 As Integer
             Dim cCharVa As String
             Dim cResult As String
            
                sMessage = ""
                InTenta = 0
                cCadFin = vbCr + Chr$(3)
                cCharVa = "+.0123456789"
                MSComm4.Output = "AT" & Chr(5) & Chr$(13)
                Asc ("ENQ") & Chr$(13)
           '     Sleep 2000
    <<Ponto de Interrupão>>> [b]If MSComm4.CommEvent = comEvReceive Then[/b]
              Do
                  sMessage = sMessage & MSComm4.Input
              Loop Until InStr(sMessage, cCadFin) Or Len(sMessage) >= 7
              For nAux1 = 1 To Len(sMessage)
                  If InStr(cCharVa, Mid$(sMessage, nAux1, 1)) > 0 Then
                      cResult = cResult + Mid(sMessage, nAux1, 1)
                  End If
              Next
              Call HandleInput(cResult)
            End If
            
             If MSComm4.PortOpen = True Then
                MSComm4.PortOpen = False
             End If
              
          End Sub
    Joaquim Leal
    Joaquim Leal
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 26/08/2014

    Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"  Empty Re: Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"

    Mensagem  Joaquim Leal 23/8/2016, 19:20

    Amigos!

    Continuo com a minha busca por esta solução.
    Isso deve ser mesmo muito complicado, pois até agora não consegui, e vi coisa de todo tipo!
    Alguém tem alguma ideia olhando para a minha última postagem?
    Obrigado!
    Joaquim Leal
    Joaquim Leal
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 26/08/2014

    Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"  Empty Re: Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"

    Mensagem  Joaquim Leal 26/8/2016, 17:37

    Será que este é um caso SEM SOLUÇÃO?
    Não estou encontrando esta solução!
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"  Empty Re: Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"

    Mensagem  Alvaro Teixeira 26/8/2016, 17:48

    Olá, só mesmo com a balança é que se consegue testar.
    Ja experimentou com o HyperTerminal testar diretamente a ligação.
    Apesar de ser um exmeplo para Excel, Veja se ajuda:
    http://www.mrexcel.com/forum/excel-questions/488335-receive-data-com-port.html
    Abraço
    Joaquim Leal
    Joaquim Leal
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 26/08/2014

    Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"  Empty Re: Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"

    Mensagem  Joaquim Leal 26/8/2016, 18:13

    Obrigado Teixeira!
    Vou ver isso!
    Valeu, quem sabe agora achamos a solução!
    bounce
    lukdogdog
    lukdogdog
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 38
    Registrado : 21/06/2012

    Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"  Empty Re: Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"

    Mensagem  lukdogdog 7/9/2016, 21:22

    Olá Joaquim Leal, boa tarde. estou tendo o mesmo problema que você, conseguiu resolver? poderia postar a soluçao para capturar o peso da balança. desde já grato pela atenção
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7996
    Registrado : 15/03/2013

    Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"  Empty Re: Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"

    Mensagem  Alvaro Teixeira 8/9/2016, 00:18

    Olá, quem tiver a balança é "pôr as mãos na massa".
    Acho que com o manual da balança, conhecendo os comandos será possível.
    Acho que será esse o caminho, comunicar diretamente com a impressora.
    Fica o link de um HyperTerminal OpenSource caso seja util para testes:
    https://sourceforge.net/projects/hypeterminal/

    Ficamos aguardar feedback.
    Abraço
    avatar
    HANTHONY
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 22/07/2011

    Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"  Empty Arquivo MSAccess 2007, versão de 32 Bits

    Mensagem  HANTHONY 23/7/2018, 19:37

    Pessoal, boa tarde

    Embora o assunto tenha uma data já ultrapassada, quero deixar minha contribuição através de um arquivo feito no
    MSAccess 2007, versão de 32 Bits.

    Por alguns dias busquei exemplos, revisando e e adaptando a minha necessidade, mas sem sucesso.

    Foi então que conseguimos, eu e outro desenvolvedor, obter o peso de uma balança conectada a porta RS232

    Estou utilizando uma balança da ELGIN, modelo DP15 Plus.

    Acredito que o exemplo pode funcionar com outros modelos.

    Hanthony Carlos
    IPE Sistemas
    Anexos
    Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"  AttachmentElginDP15Plus.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (81 Kb) Baixado 107 vez(es)

    Conteúdo patrocinado


    Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"  Empty Re: Pegar peso de balança - Código VBA só roda ativando um "Ponto de Interrupção"

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/11/2024, 14:59