Hola gente. estoy armando una aplicacion con la que controlo el puerto paralelo para prender unas luces.
por ahora va todo bien tengo 8 botones con los cuales manejo los 8 pines del puerto.
y les cambio el color dependiendo de si la luz esta prendida o apagada.
pero cuando cierro el programa y vuelvo a abrirlo me aparecen (en la aplicacion) todas apagadas otra ves, por mas que est no sea asi ya que las luces estan prondidas.
me gustaria poder leyendo el estado del puerto el decimal pasarlo a binario y poder asignarle los valores de 0 o 1 a 8 variables para poder detectar si esa luz esta prendida o apagada y que el programa refleje el estado real de puerto al iniciarlo.
podran ayudarme?.
se me ocurre que tambien podria guardar el estado del puerto en un txt para despues leerlo pero no se como hacerlo.
si a alguno le interesa la aplicacion puedo poner aca el codigo fuente.
gracias.
Este es un conversor online, que podría serte útil:
http://www.disfrutalasmatematicas.com/numeros/binario-decimal-hexadecimal-conversor.html (http://www.disfrutalasmatematicas.com/numeros/binario-decimal-hexadecimal-conversor.html)
.
Ojla compartas ese codigo algun dia.
Operaciones aritmeticas con Hex, Oct, Binario y Decimal (http://infrangelux.hostei.com/index.php?option=com_content&view=article&id=3:operatearimetic&catid=2:catprocmanager&Itemid=8)
Base Decimal a Base N (http://infrangelux.hostei.com/index.php?option=com_content&view=article&id=20:bdec2basen&catid=11:catencriptacioncodificacion&Itemid=23)
Dulces Lunas!¡.
Hola:
Pues, suponiendo que:
- Tienes un vector de 8 shapes, llamados luces(0), luces(1), ..., luces(7).
- Ya has leído el puerto y el valor lo almacenaste en una variable de tipo entero (Integer) llamada ValorPuerto, podemos hacer:
Dim i As Integer, j As Integer
j=1
For i=0 to 7 'Recorrerá las 8 luces
If ValorPuerto And j Then 'Si está en '1' el bit...
luces(i).BackColor=vbYellow 'visualiza amarillo (encendido).
Else 'De lo contrario...
luces(i).BackColor=vbBlack 'visualiza negro (apagado).
Endif
j=j*2
Next
Buen día.
BlackZeroX Te comparto lo que tengo armado hoy dia depues puedo actualizarlo.
primero descargate la inpout.dll si la buscas en google la encontras por todos lados.
despues en el proyecto pones un modulo y le copias este codigo.
Option Explicit
Public Declare Function Inp Lib "inpout32.dll" _
Alias "Inp32" (ByVal PortAddress As Integer) As Integer
Public Declare Sub Out Lib "inpout32.dll" _
Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)
una ves echo esto desde un formulario le asignas los valores que quieras al puerto.
con esta instruccion
Out &H378, 0
El CERO es el valor que le asignas al puerto puede ser de 0 a 255.
por las dudas fijate en el administrador de dispositivos si la direccion del puerto esta correcta ya que dependiendo de la configuracion de tu pc podria ser otra.
la direccion del puerto es &H378 y la de entrada es &H379 por lo general es asi pero confirmalo si queres leer el puerto pones algo como esto.
Text3.Text = Str(Inp(Val(&H379)))
Con ese codigo le asignas al text3 el valor actual del puerto.
despues tengo una interface de potencia con la cual controlo las luces que si quieren comparto el circuito.
Tokes
tu codigo me sirve pero jeje perdon por mi ignorancia pero en vb2010
no se como crear una matris de objetos en vb6 al copiar y pegar pregunta si queres armarla pero aca no y no tengo idea de como hacerlo.
mas alla de eso me gustaria asignar el valo a 8 variables y desde las variables trabajar.
gracias..
Cita de: scrngs en 7 Febrero 2011, 03:17 AM
tu codigo me sirve pero jeje perdon por mi ignorancia pero en vb2010
no se como crear una matris de objetos en vb6 al copiar y pegar pregunta si queres armarla pero aca no y no tengo idea de como hacerlo.
Entonces este tema va en .net
Para crear una matriz de controles en .net tienes que hacerlo por codigo o para simular solo en partes de eventos, haz que todos los eventos que quieras apunten al mismo procedimiento, e identificas al control transformando el sender en un control (Dim boton As Button = (Button)sender)
Gente logre resolver mi problema y me gustaria compartirlo ya que es posible que a alguno le venga bien.
estoy cargando los datos en cajas de texto para poder verlos pero la idea es usar los datos de las variables para trabajarlos no hace falta que los vea en pantalla.
les paso el codigo.
Con el modulo cargado y un formulario con 10 Texbox y 2 Button ponemos este codigo.
Dim DatosLPT1(7) As VariantType 'Es el valor del puerto con el que calculo los pines activos
Dim Datos As String 'Es el resultado despues de cada calculo
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Datos = Str(Inp(Val(&H378))) 'El valor inicial del puerto
TextBox9.Text = Datos
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Calculo el estado del pin 8
If Datos >= 128 Then
DatosLPT1(7) = 128
Datos = (Datos - 128)
TextBox8.Text = 128
TextBox9.Text = Datos
Else
TextBox8.Text = ""
End If
'Calculo el estado del pin 7
If Datos >= 64 Then
DatosLPT1(6) = 64
Datos = (Datos - 64)
TextBox7.Text = 64
TextBox9.Text = Datos
Else
TextBox7.Text = ""
End If
'Calculo el estado del pin 6
If Datos >= 32 Then
DatosLPT1(5) = 32
Datos = Datos - 32
TextBox6.Text = 32
TextBox9.Text = Datos
Else
TextBox6.Text = ""
End If
'Calculo el estado del pin 5
If Datos >= 16 Then
DatosLPT1(4) = 16
Datos = Datos - 16
TextBox5.Text = 16
TextBox9.Text = Datos
Else
TextBox5.Text = ""
End If
'Calculo el estado del pin 4
If Datos >= 8 Then
DatosLPT1(3) = 8
Datos = Datos - 8
TextBox4.Text = 8
TextBox9.Text = Datos
Else
TextBox4.Text = ""
End If
'Calculo el estado del pin 3
If Datos >= 4 Then
DatosLPT1(2) = 4
Datos = Datos - 4
TextBox3.Text = 4
TextBox9.Text = Datos
Else
TextBox3.Text = ""
End If
'Calculo el estado del pin 2
If Datos >= 2 Then
DatosLPT1(1) = 2
Datos = Datos - 2
TextBox2.Text = 2
TextBox9.Text = Datos
Else
TextBox2.Text = ""
End If
'Calculo el estado del pin 1
If Datos >= 1 Then
DatosLPT1(0) = 1
Datos = Datos - 1
TextBox1.Text = 1
TextBox9.Text = Datos
Else
TextBox1.Text = ""
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Out(&H378, (Val(TextBox10.Text))) 'Le doy un nuevo valor al puerto
Datos = Str(Inp(Val(&H378))) 'Cargo el valor del puerto en la variable para poder calcularlo
TextBox9.Text = Datos 'Le asigno el valor del puerto a un Text para poder verlo
End Sub
Lo comente todo asi se entiende lo que intente hacer.
Seguramente a alguno que sepa mas que yo de esto se le ocurrira alguna forma de hacerlo en muchas menos lineas. si es asi agradeceria me lo comparta.
con esto logro identificar cual es el estado del puerto al momento de iniciar la aplicacion y asi poder mantenerlo despues de un cierre o salida.
Gracias a todos lo que me dieron una mano!!!
Salu2