conversão decimal em binário VB2010

mysociety

Membro
Viva, :p

Precisa de converter um valor de decimal num valor binário em VB 2010 mas não estou a conseguir talvez porque nunca trabalhei em VB...:confused:
Pelo que andei a ver no help do VB2010 experimentei algo semelhante a isto:

Dim decimal_to_binario As Byte
decimal_to_binario = Convert.ToByte(ProgressBar1.Value)
valor_digital_int.Text = decimal_to_binario.ToString()

O que acontece é que ele imprime exactamente o valor que a ProgressBar1 tem... alguém me consegue ajudar com isto??:confused:

Abraços
 
O que tu queres fazer fazer é mostrar o valor que a ProgressBar1 tem mas em binário? Tipo se Progressbar1 tiver o valor 9 queres mostrar mostrar 1001, é isso?
Não percebi muito bem se era isso que querias... Mas se for, porque é que queres fazer isso? :P
 
Viva

Sim é isso.
A progressbar vai simular o valor analógico (estou usar um potenciómetro) numa entrada entrada analógica de um uC (que faz conversão analógico digital de 10bits).
A questão é que nesta conversão o uC retorna valores de 0 a 1023 (2^n onde n=10bits) e estes são enviados por USB para a VB (progressbar) e queria converter este valor para binário de forma a verificar correctamente a conversão. :P

Esclarecido? haha

Abraço.

José Moreira
 
Última edição:
Muito Obrigado,

Já agora podias me explicar o porque do Convert.ToString(ProgressBar1.Value, 2) e o porque do valor 2?

Abraço
Ora bem, em primeiro lugar, deves saber que TODOS os valores de todas as variáveis que tu tens, são armazenados em binário. Se a tua progressbar tiver o valor 50 não é 50 em decimal que está em memória, mas sim 00000000000000000000000000110010 (O value da progressbar é um inteiro de 32 bits).
Se tiveres uma string com o valor "Ola", o que está em memória são 3 caracteres consecutivos, ou melhor, a *representação* de 3 caracteres. Neste caso serão os valores: 01001111,01101100 e 01100001. Repara que um caracter é um byte (8 bits) e é representado pelo seu valor em ASCII, neste caso 79 corresponde ao 'O' maisculo,
108 ao 'l' e 97 ao 'a', e tudo isto está em binário. Uma coisa é o valor em binário da variável, outra coisa é o que ele representa. Se tiveres um com caracter com o valor 01001111 ele representa a letra 'O', mas se tiveres um inteiro com o mesmo valor então ele representa o número 79.

Neste caso o que tu estás a ver, com o código que te dei, NÃO é o valor em binario da progressbar. É uma string, cujos caracteres, visualmente te mostram o valor binário que queres. Por exemplo se a progress bar tiver o valor 9 (1001), o que tu irás ver é uma string com 4 caracteres: Caracter '1', Caracter '0', etc. Por sua vez
o caracter '1' não é o valor 00000001, mas sim 00110001 (49 em ASCII é o caracter '1'). É tudo uma questão de representação :P Visualmente esta string vai-te permitir ver o que cada bit do valor da progressbar deverá ter.

Quanto ao Convert.ToString(ProgressBar1.Value, 2). O método Convert.ToString(..) recebe 2 argumentos (pode receber só 1, este é apenas um dos, acho 30 e tal overloads), quando o 2º argumento é um inteiro, esse argumento representa a Base para a qual queres converter. Se puseres 16 por exemplo, irá ser hexadecimal. Basicamente o que isso faz é converter o 1º argumento para uma String, cuja representação te mostra o valor dele convertido para a Base escolhida.

Espero que não tenha sido uma explicação muito confusa :P
 
Última edição:
Sim percebi, obrigado mais uma vez.

Olha não estou a conseguir fazer comunicação COM entre o uC e o VB.

A unica coisa que sei fazer e colocar o objecto de serial Port no VB.
Consegues me ajudar nisto?
 
Back
Topo