none
Integração em arquivos ASC II através do VB.

    Pergunta

  • Buenas galera.
    Estou aqui com um novo projeto e preciso desenvolver um aplicativo windows form em VB que integra com um painel digital (letreiro) que "interpreta" somente linguágem ASC II.
    Pra isso já entrei em contato com o fabricante e o mesmo me passou um exemplo de código que ele utiliza pra uma comunicação através de cabo serial. A minha comunicação é através de cabos Ethernet.
    Mas não acredito que essa seja a minha limitação. Confio na possibilidade de conseguir com a ajuda de vcs resolver este problema.

    Abaixo vou colocar o código que o fornecedor me mandou cm o exemplo de comunicação e dados atualizados.

    Fico no aguardo de um retorno de vocês o quanto antes. Desde já muito obrigado.

    Código exemplo:
    Option Strict Off
    Option Explicit On
    Friend Class Form1
        Inherits System.Windows.Forms.Form
        Private Sub Command1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command1.Click
            Dim dados_tx As String
           
            Winsock1.RemoteHost = Text1.Text
            Winsock1.RemotePort = CInt(Text2.Text)
            Winsock1.LocalPort = "2001"
            Winsock1.Connect()
           
            Delay_Programado((1))
           
            'UPGRADE_NOTE: State was upgraded to CtlState. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="A9E4979A-37FA-4718-9994-97DD76ED70A7"'
            If Winsock1.CtlState <> 7 Then
                Label4.Text = "Erro : Não Conecta com o Painel..."
                Winsock1.Close()
                Delay_Programado((3))
                Label4.Text = ""
                Command1.Enabled = True
               
                Exit Sub
            End If
           
            Try

                'UPGRADE_NOTE: State was upgraded to CtlState. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="A9E4979A-37FA-4718-9994-97DD76ED70A7"'
                If Winsock1.CtlState = 7 Then
                    dados_tx = Chr(2) & Trim(Text4.Text) & Mid(Text3.Text, 6, 1) & Mid(Text3.Text, 5, 1) & Mid(Text3.Text, 4, 1) & Mid(Text3.Text, 3, 1) & Mid(Text3.Text, 2, 1) & Mid(Text3.Text, 1, 1) & Chr(3)
                    'dados_tx = Chr(1) & Chr(2) & "48" & "49" & "48" & "49" & "79" & "65" & Chr(3) & 14
                    Winsock1.SendData(dados_tx)
                    Delay_Programado((1))
                    Label4.Text = ""
                    Command1.Enabled = True


                Else
                    Label4.Text = "Erro : Falha de conexão..."
                    Delay_Programado((3))
                    Label4.Text = ""
                    Command1.Enabled = True


                    Exit Sub
                End If
                Winsock1.Close()       

            Catch ex As Exception

            End Try       
           
        End Sub
       
        Private Sub Command2_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command2.Click
            End
        End Sub
    End Class
    mOi
    segunda-feira, 15 de junho de 2009 17:24

Respostas

  • Bem André, este problema já consegui solucionar, porem tenho outro problema...
    Na verdade este sistema é para escrever em paineis digitais...

    Quero criar um textbox com um botão que irá fazer o seguinte.

    Tenho uns códigos padrões do painel que preciso enviar para eles. exemplo:

    'dados_tx = Chr(1) & Chr(2) & "0101AB+(TEXTO DO TEXTBOX)" & Chr(188) & Chr(RESULTADO DE UM CALCULO DE ACORDO COM OS CARACTERES DIGITADOS NO TEXTBOX)

    Preciso agora de uma função que me faça identificar cada caracter q eu digitar no TEXTBOX e fazer o calculo necessário para cada um deles.

    Capitou?

    braço e muito obrigado
    mOi
    quarta-feira, 17 de junho de 2009 18:54
  • Olá,

    Você pode utilizar um loop como este para percorrer as letras digitadas no TextBox e fazer o tratamento necessário:

    For Each _caractere As Char In textBox1.Text
        MessageBox.Show(_caractere.ToString())
    Next

    André Alves de Lima - http://andrealveslima.spaces.live.com
    quinta-feira, 18 de junho de 2009 17:12
    Moderador
  • Olá,

    Não sei se entendi bem sua pergunta, mas creio que seu objetivo seja obter o código ASCII de cada caracter (ex: A = 65, B = 66, etc...), para então fazer algum cálculo (checksum).

    Se for isso, então você pode aproveitar a sugestão do André, e percorrer todos os caracteres que estão na caixa de texto. Depois, utilize a função ASC, para obter o código ASCII de cada um desses caracteres, para então fazer o cálculo...

    Algo como:

    	Dim resultadoDoCalculo As Decimal = 0
    
            'Percorre todos os caracteres que estão no TextBox
            For Each caracter As Char In textBox1.Text
                'Obtém o código ASCII de cada um dos caracteres
                Dim codigoAscii As Integer
                codigoAscii = Asc(caracter)
    
                'Aqui você faz o cálculo...
                'Por exemplo, vamos somar todos os valores
                resultadoDoCalculo += codigoAscii
            Next
    
    




    Abraços,
    Caio Proiete


    Caio Proiete
    http://www.caioproiete.com
    quarta-feira, 24 de junho de 2009 17:52
    Moderador

Todas as Respostas

  • Prezado,

    Desculpe, mas, não consegui entender a sua dúvida...

    Você postou o exemplo, disse que a comunicação sua não é utilizando a porta serial (como você disse que o exemplo utiliza), mas sim Ethernet...

    Então, você tentou utilizar mesmo código? Teve algum sucesso? Obteve algum erro?

    Enfim, qual a situação do seu problema?
    André Alves de Lima - http://andrealveslima.spaces.live.com
    quarta-feira, 17 de junho de 2009 18:28
    Moderador
  • Bem André, este problema já consegui solucionar, porem tenho outro problema...
    Na verdade este sistema é para escrever em paineis digitais...

    Quero criar um textbox com um botão que irá fazer o seguinte.

    Tenho uns códigos padrões do painel que preciso enviar para eles. exemplo:

    'dados_tx = Chr(1) & Chr(2) & "0101AB+(TEXTO DO TEXTBOX)" & Chr(188) & Chr(RESULTADO DE UM CALCULO DE ACORDO COM OS CARACTERES DIGITADOS NO TEXTBOX)

    Preciso agora de uma função que me faça identificar cada caracter q eu digitar no TEXTBOX e fazer o calculo necessário para cada um deles.

    Capitou?

    braço e muito obrigado
    mOi
    quarta-feira, 17 de junho de 2009 18:54
  • Olá,

    Você pode utilizar um loop como este para percorrer as letras digitadas no TextBox e fazer o tratamento necessário:

    For Each _caractere As Char In textBox1.Text
        MessageBox.Show(_caractere.ToString())
    Next

    André Alves de Lima - http://andrealveslima.spaces.live.com
    quinta-feira, 18 de junho de 2009 17:12
    Moderador
  • Olá,

    Não sei se entendi bem sua pergunta, mas creio que seu objetivo seja obter o código ASCII de cada caracter (ex: A = 65, B = 66, etc...), para então fazer algum cálculo (checksum).

    Se for isso, então você pode aproveitar a sugestão do André, e percorrer todos os caracteres que estão na caixa de texto. Depois, utilize a função ASC, para obter o código ASCII de cada um desses caracteres, para então fazer o cálculo...

    Algo como:

    	Dim resultadoDoCalculo As Decimal = 0
    
            'Percorre todos os caracteres que estão no TextBox
            For Each caracter As Char In textBox1.Text
                'Obtém o código ASCII de cada um dos caracteres
                Dim codigoAscii As Integer
                codigoAscii = Asc(caracter)
    
                'Aqui você faz o cálculo...
                'Por exemplo, vamos somar todos os valores
                resultadoDoCalculo += codigoAscii
            Next
    
    




    Abraços,
    Caio Proiete


    Caio Proiete
    http://www.caioproiete.com
    quarta-feira, 24 de junho de 2009 17:52
    Moderador