Visual Basic para Aplicaciones - Como controlar solo un bit sin afectar los otros Vb

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Como controlar solo un bit sin afectar los otros Vb

Publicado por Mathias (4 intervenciones) el 19/02/2015 00:15:13
Hola amigos del foro soy nuevo en esto y me gusta mucho la programación, estoy con un programa de vb que controla el puerto paralelo con la librería inpout32 pero no se como controlar solo un bit sin afectar los otros si están activados porque logro prender y apagar pero cuando prende y tengo otro prendido me lo apaga, quisiera saber como mandar el dato del bit que quiero prender pero que al mismo tiempo tenga como un tipo estatus que lea como este el puerto y le agregue el dato del bit que quiero prender gracias espero sus respuestas.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Como controlar solo un bit sin afectar los otros Vb

Publicado por MMan (4 intervenciones) el 19/02/2015 01:01:47
usas AND, OR, XOR, NOT

nunca he manejado puertos,, pero mas o menos esta es la idea

----------
si quieres invertir sus valores.. usarias el operador NOT

dato = 00001010
nuevodato = NOT dato <-- devolveria lo inverso...
-- resultado 11110101

si quieres "activar" todos los ultimos 4 digitos usarias OR

dato = 00001010
nuevodato = dato OR 00001111
--> resultado 00001111

si quieres revisar si el ultimo digito esta activado usas AND

dato = 00001111
nuevodato = dato AND 00000001
--resultado 00000001

----------
entonces... si quieres activar un estado sin deactivar los otros

primero lees el estado del puerto... este devuelve 00001010 (en binario )
le metes un OR pa activar un bit
y lo envias

dato = leepuerto()
nuevodato = dato OR 00001111 <--- activa los 4 ultimos bits
enviadatosalpuerto(nuevodato)

---------
y por ultimo.. si tu lenguaje de programacion no soporta calculos numericos en binario...
agarras la calculadora y lo conviertes en decimal .
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como controlar solo un bit sin afectar los otros Vb

Publicado por Mathias (4 intervenciones) el 19/02/2015 01:51:33
Hola gracias por la respuesta me sirve bastante pero no se como usar or en el programa la linea son estas en el form porque se activa y se cierra el programa

out &h378, y el bit que activo
despues esta el modulo para el inpout32
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como controlar solo un bit sin afectar los otros Vb

Publicado por MMan (4 intervenciones) el 19/02/2015 02:25:20
ok buscando en la red...

supongo que tendras unas declaraciones parecidas...

function Inp(PortAddress: Integer): Integer; stdcall; external 'inpout32.dll' name 'Inp32';
procedure Out(PortAddress, Value: Integer); stdcall; external 'inpout32.dll' name 'Out32';


&H378 es el puerto paralelo

para leer datos... en alguna parte tendras

dato = Inp ( &H378 )

y para enviar datos al puerto... tendras
Out ( &H378, dato )


--------
pues como te decia.. si quieres modificar solo 1 bit.. sin cambiar el resto

primero lees el estado.. modificas y envias

dato = Inp ( &H378 )
nuevodato = dato OR 1
Out ( &H378, nuevodato )


si quieres modificar el segundo bit... pues... buscas una calculadora para convertir binario a decimal o hexadecimal


el 3bit de la derecha.. por ejemplo
00000100 --> en decimal = 4

dato = Inp ( &H378 )
nuevodato = dato OR 4
Out ( &H378, nuevodato )

y metes ese codigo en un boton.. por ejemplo
--------

si buscas en google ejemplos con la libreria inpout32.dll
hay monton (muchos en ingles) pero si no entiendes para eso esta el traductor

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como controlar solo un bit sin afectar los otros Vb

Publicado por Mathias (4 intervenciones) el 19/02/2015 02:50:43
Impecable ya puse el código pero en la ultima linea cuando pongo Out ( &H378, nuevodato ) me pone un error que se esperaba = sera que tengo que declarar nuevodato en un modulo o algo? tambien lnp me tira error procedimiento sub o funcion no definido, gracias x la ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como controlar solo un bit sin afectar los otros Vb

Publicado por MMan (4 intervenciones) el 19/02/2015 18:32:44
en tu post anterior mencionaste

1
despues esta el modulo para el inpout32

.....ahi puedes revisar como esta declarado la funcion para input.. con que nombre tiene,

.....el programador le puede asignar CUALQUIER nombre que se le ocurra,

.....tienes que mirar el codigo para SABER el nombre que usaras en el resto de tu programa

function .............¿¿que nombre ??............. (PortAddress: Integer): Integer; stdcall; external 'inpout32.dll' name 'Inp32';
procedure ..........¿¿que nombre ??............. (PortAddress, Value: Integer); stdcall; external 'inpout32.dll' name 'Out32';
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como controlar solo un bit sin afectar los otros Vb

Publicado por Mathias (4 intervenciones) el 19/02/2015 19:31:37
Muchísimas gracias!! lo logre era que en ves de poner inp ponía lnp ajja ahora entendí todo y para apagar los mismos bits sin modificar el estado de otro use xor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar