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


2 participantes

    [Resolvido]Dúvida em trabalho, Visual Basic

    doracenzi1
    doracenzi1
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 20/11/2012

    [Resolvido]Dúvida em trabalho, Visual Basic Empty [Resolvido]Dúvida em trabalho, Visual Basic

    Mensagem  doracenzi1 20/11/2012, 02:20

    Olá pessoal, estou com uma dúvida de como implementar uma parte de um projeto que estou realizando.

    É o seguinte, eu recebo um pacote de dados de 4 temperaturas distintas e eu preciso separar esse pacote e colocar as reapectivas temperaturas em Labels difetenres, por exemplo:

    Eu recebo o seguinte pacote tipo string pela RS232, "A31.2B27.0C55.5D60.0"

    O que eu preciso fazer é separar as temperaturas e coloca-las nos respectivos lugares
    Se "A" entao colocar a temperatura 31.2 na Label.Temp1

    Se "B" entao colocar a temperatura 27.0 na Label.Temp2

    Se "C" entao colocar a temperatura 55.5 na Label.Temp3

    Se "D" entao colocar a temperatura 60.0 naa Label.Temp4


    Eu parei nesse problema no projeto e nao estou conseguindo resolver, se alguem puder me ajudar eu agradeço

    Obrigado desde já!
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Dúvida em trabalho, Visual Basic Empty Re: [Resolvido]Dúvida em trabalho, Visual Basic

    Mensagem  Avelino Sampaio 20/11/2012, 06:59

    Benvindo, Guilherme!

    Segue um procedimento para o seu caso.

    Sub fncExtrairTemp()
    Dim k
    k = "A31.2B27.0C55.5D60.0"
    k = Replace(k, "A", "")
    k = Replace(k, "B", "A")
    k = Replace(k, "C", "A")
    k = Replace(k, "D", "A")
    k = Split(k, "A")
    Me!temp1.Caption = k(0)
    Me!temp2.Caption = k(1)
    Me!temp3.Caption = k(2)
    Me!temp4.Caption = k(3)
    End Sub

    É só chamar pelo procedimento em botão ou em qualquer outro evento

    call fncExtrairTemp

    A função Replace foi usada para substituir as letras A,B,C e D por um sequencia padrão com a letra A, ficando assim como resultado:

    31.2A27.0A55.5A60.0

    Com esta referencia "A" podemos separar os valores com a função split()

    k(0) ::> posição zero (0) representa o valor 31.2
    k(1) ::> posição Um (1) representa o valor 27.0
    e assim vai na sequencia

    Sucesso!


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


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 20/11/2012

    [Resolvido]Dúvida em trabalho, Visual Basic Empty Re: [Resolvido]Dúvida em trabalho, Visual Basic

    Mensagem  doracenzi1 20/11/2012, 16:39

    Olá. muito obrigado pela resposta, eu consegui entender como implementar. Só uma coisa, nesse caso eu consigo enviar o pacote com uma sequencia padrão com a letra A por exemplo assim eu nao precisaria usar a Replace para substituir as letras ?

    O meu código para escrever apenas uma temperatura recebida pela porta serial em uma Label ficou assim:

    Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived

    temp = SerialPort1.ReadLine()
    Me.Invoke(New EventHandler(AddressOf DoUpdate))

    End Sub

    Public Sub DoUpdate(ByVal sender As Object, ByVal e As System.EventArgs)

    temp2.Text = temp & " °C"

    End Sub


    Como ficaria o código com o procedimento que voce escreveu para 4 temperaturas, separando-as ?

    Obrigado desde já!
    doracenzi1
    doracenzi1
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 20/11/2012

    [Resolvido]Dúvida em trabalho, Visual Basic Empty Re: [Resolvido]Dúvida em trabalho, Visual Basic

    Mensagem  doracenzi1 20/11/2012, 16:53

    Eu tentei implementar esse procedimento ficando desse jeito:

    Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived

    temp = SerialPort1.ReadLine()
    Me.Invoke(New EventHandler(AddressOf DoUpdate))


    End Sub



    Public Sub DoUpdate(ByVal sender As Object, ByVal e As System.EventArgs)

    Dim temp As String
    temp = Replace(temp, "A", "")
    temp = Replace(temp, "B", "A")
    temp = Replace(temp, "C", "A")
    temp = Replace(temp, "D", "A")
    temp = Split(temp, "A")
    temp1.Text = temp(0)
    temp2.Text = temp(1)
    temp3.Text = temp(2)
    temp4.Text = temp(3)


    End Sub


    Mas na função Split deu o seguite erro: "Error 1: Value of type '1-dimensional array of String' cannot be converted to 'String'."


    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Dúvida em trabalho, Visual Basic Empty Re: [Resolvido]Dúvida em trabalho, Visual Basic

    Mensagem  Avelino Sampaio 20/11/2012, 18:23

    Coloque uma caixa de mensagem na posição indicada e escreva aqui extamente como a sintaxe está montada.

    Dim temp As String
    msgbox temp
    temp = Replace(temp, "A", "")
    ...


    No aguardo


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


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 20/11/2012

    [Resolvido]Dúvida em trabalho, Visual Basic Empty Re: [Resolvido]Dúvida em trabalho, Visual Basic

    Mensagem  doracenzi1 20/11/2012, 20:48

    Obrigado, deu certo implementar como voce mandou, só fiz alguns pequenos ajustes. Obrigado. Problema Resolvido
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Dúvida em trabalho, Visual Basic Empty Re: [Resolvido]Dúvida em trabalho, Visual Basic

    Mensagem  Avelino Sampaio 21/11/2012, 07:49

    Obrigado pelo feedback.

    Altere a variavel temp para o tipo Variant

    Dim temp As Variant

    Sucesso!


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

    Conteúdo patrocinado


    [Resolvido]Dúvida em trabalho, Visual Basic Empty Re: [Resolvido]Dúvida em trabalho, Visual Basic

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/11/2024, 16:39