Jump to content
Blick

Visual Basic com DB9/RS232-Ajuda! - Resolvido

Recommended Posts

Blick

Boa tarde, tenho um programa feito em visual basic para comunicar pela porta série com um microprocessador.

Neste momento consigo clicar em vários botões e enviar diferentes caracteres, e consoante os caracteres recebido o microprocessador fazer coisas diferentes.

O meu problema está no receber dados do microprocessador.

O programa do microprocessador também fui eu que o fiz e o problema não estará lá porque eu se fizer ligação com o hyperterminal recebo tudo correctamente.

Fiz então o seguinte código para receber as strings e as mostrar numa  textbox:

Dim valor As String

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        If (SerialPort1.IsOpen = True) Then
            Do
                SerialPort1.DiscardNull = True
                valor = SerialPort1.ReadExisting()
                TextBox1.Text = valor
                SerialPort1.DiscardInBuffer()
            Loop
        ElseIf (SerialPort1.IsOpen = False) Then
            TextBox1.Text = "Não existe comunicação!"
        End If

O que acontece é que se do microprocessador fizer um printf apenas de um caracter, eu recebo o valor decimal desse caracter da tabela ascii.

Se eu enviar mais que um caracter o programa não crasha não dá erro nada, simplesmente empanca e tenho de ir ao taskmanager obriga-lo a fechar.

Já fiz milhões de testes não sei mais que fazer :P

Share this post


Link to post
Share on other sites
gadelhas

Viva;

Uma das coisas que deverias ter nesse loop, era um DoEvents().

Outra coisa que podes experimentar, é isto;

TextBox1.Text = valor.ToString()

em vez do

TextBox1.Text = valor

Também não era mau colocares aqui o código do micro!


Abraço Gadelhas

Share this post


Link to post
Share on other sites
jpaulino

PS:Pensei que este forum tinha mais participação.

Nem todos têm conhecimentos em determinados temas ... mas vê a participação em outras questões ;)

Ainda por cima a questão é de .NET e colocaste em Visual Basic Classico (VB6 ou versões anteriores), e tiveste uma resposta no mesmo dia, em menos de duas horas, à qual nada disseste.

Não estás a ser ingrato? Eu acho que estás a ser MUITO ingrato.


Mas já agora, podes partilhar com os outros qual a solução do problema, que deve ser algo relacionado com a saida do ciclo infinito que criaste (Do ... Loop)

Share this post


Link to post
Share on other sites
Blick

Sim, o erro foi meu então pela má colocação do tópico.

Peço desculpa.

Mas é que eu andava á volta daquilo e não conseguia resolver, estava um bocado chateado, e possivelmente fui injusto.

A solução foi retirar o loop, e coloquei um botão especifico apenas para fazer a leitura.

Agora aquilo lê é tudo, agora tenho de arranjar maneira de restringir o que lê, e o tamanho.

Eu sempre programei C, ando a aprender Basic por necessidade de apresentar um ambiente mais gráfico, qualquer ajuda é bem vinda ;)

Share this post


Link to post
Share on other sites
jpaulino

Sim, o erro foi meu então pela má colocação do tópico.

Peço desculpa.

Na boa ;)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.