MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

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

    Compartilhe

    Joaquim Leal
    Novato
    Novato

    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"

    Mensagem  Joaquim Leal em Qui 12 Maio 2016, 13: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
    Código Falha.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (203 Kb) Baixado 18 vez(es)

    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

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

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

    Mensagem  Avelino Sampaio em Sex 13 Maio 2016, 06: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.

    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso!



    .................................................................................
    ============ Quer aprender Access em alta velocidade ? ============

    || [Você precisa estar registrado e conectado para ver esta imagem.] Acesse o site UsandoAccess.com.br e veja um ótimo kit de ensino que tenho para você.

    ===========================================================

    Joaquim Leal
    Novato
    Novato

    Respeito às Regras 100%

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

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

    Mensagem  Joaquim Leal em Sex 13 Maio 2016, 10:24

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

    Joaquim Leal
    Novato
    Novato

    Respeito às Regras 100%

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

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

    Mensagem  Joaquim Leal em Sex 13 Maio 2016, 14:24

    Meu amigo Avelino

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

    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

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

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

    Mensagem  Avelino Sampaio em Sab 21 Maio 2016, 07: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 Sab 21 Maio 2016, 07:48, editado 1 vez(es)


    .................................................................................
    ============ Quer aprender Access em alta velocidade ? ============

    || [Você precisa estar registrado e conectado para ver esta imagem.] Acesse o site UsandoAccess.com.br e veja um ótimo kit de ensino que tenho para você.

    ===========================================================

    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

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

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

    Mensagem  Avelino Sampaio em Sab 21 Maio 2016, 07:48

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

    [Você precisa estar registrado e conectado para ver este link.]

    Aguardamos


    .................................................................................
    ============ Quer aprender Access em alta velocidade ? ============

    || [Você precisa estar registrado e conectado para ver esta imagem.] Acesse o site UsandoAccess.com.br e veja um ótimo kit de ensino que tenho para você.

    ===========================================================

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

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

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

    Mensagem  ahteixeira em Sab 21 Maio 2016, 08:30

    Olá a todos,
    Vejam se ajuda:
    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]
    Abraço

    Joaquim Leal
    Novato
    Novato

    Respeito às Regras 100%

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

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

    Mensagem  Joaquim Leal em Seg 23 Maio 2016, 13: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
    Anexos
    Ponto Interrupção.jpg
    Você não tem permissão para fazer download dos arquivos anexados.
    (58 Kb) Baixado 7 vez(es)

    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

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

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

    Mensagem  Avelino Sampaio em Seg 23 Maio 2016, 15:34

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

    [Você precisa estar registrado e conectado para ver este link.]

    Analise todas os códigos apresentados

    Aguardamos


    .................................................................................
    ============ Quer aprender Access em alta velocidade ? ============

    || [Você precisa estar registrado e conectado para ver esta imagem.] Acesse o site UsandoAccess.com.br e veja um ótimo kit de ensino que tenho para você.

    ===========================================================

    Joaquim Leal
    Novato
    Novato

    Respeito às Regras 100%

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

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

    Mensagem  Joaquim Leal em Seg 23 Maio 2016, 23: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
    Novato
    Novato

    Respeito às Regras 100%

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

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

    Mensagem  Joaquim Leal em Ter 12 Jul 2016, 13: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
    Novato
    Novato

    Respeito às Regras 100%

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

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

    Mensagem  Joaquim Leal em Ter 23 Ago 2016, 15: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
    Novato
    Novato

    Respeito às Regras 100%

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

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

    Mensagem  Joaquim Leal em Sex 26 Ago 2016, 13:37

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

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

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

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

    Mensagem  ahteixeira em Sex 26 Ago 2016, 13: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:
    [Você precisa estar registrado e conectado para ver este link.]
    Abraço

    Joaquim Leal
    Novato
    Novato

    Respeito às Regras 100%

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

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

    Mensagem  Joaquim Leal em Sex 26 Ago 2016, 14:13

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

    lukdogdog
    Novato
    Novato

    Respeito às Regras 100%

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

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

    Mensagem  lukdogdog em Qua 07 Set 2016, 17: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

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

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

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

    Mensagem  ahteixeira em Qua 07 Set 2016, 20: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:
    [Você precisa estar registrado e conectado para ver este link.]

    Ficamos aguardar feedback.
    Abraço

      Data/hora atual: Qui 08 Dez 2016, 12:02