C/Visual C - encontre el problema...

 
Vista:

encontre el problema...

Publicado por chelo (3 intervenciones) el 07/05/2006 21:45:45
chicos, encontre la solución del problema. efectivamente hay que usar el puerto paralelo bidireccional. lo que hay que hacer es poner el bit 5 del registro de control a 1 (nota 1 del programa). esto hace que el buffer de salida del bus de datos (d0...d7) quede en alta impedancia impidiendo la salida pero no la lectura. es como en el buffer bidireccional 74HC245, el cual precisamente se usa como buffer para prevenir accidentes con el puerto paralelo en un programa de analizador logico disponible en :http://www.xs4all.nl/~jwasys/old/diy2.html
aclaracion: si buscan el pin correspondiente al bit 5 de control no lo van a encontrar, es interno se programa por sofware como en el programa de ejemplo que doy a continuacion:
(recuerden ponerle un valor al objeto timer1 en la propiedad timer.interval por ej.:100)
'---------------ejemplo en VB5---------------------------'
Option Explicit
Dim temp As Integer
Dim dato As Integer
Dim s As Integer
Private Sub Form1_Load()
Call Timer1_Timer
End Sub
Private Sub Form1_Unload()
vbOut &H37A, temp 'restituye el estado anterior del registro de control por si acaso
End Sub
Private Sub Timer1_Timer()
temp = vbInp(&H37A)
vbOut &H37A, temp Or 32 ' nota 1: 32=100000 en binario, el 1 activa el bit 5 de control
dato = vbInp(&H378) ' toma el dato en d0...d7
txtSend0.Text = (dato And 1)
txtSend1.Text = (dato And 2) / 2 'para que muestre un 1 y no 2
txtSend2.Text = (dato And 4) / 4
txtSend3.Text = (dato And 8) / 8
txtSend4.Text = (dato And 16) / 16
txtSend5.Text = (dato And 32) / 32
txtSend6.Text = (dato And 64) / 64
txtSend7.Text = (dato And 128) / 128
End Sub
'---------------------------------------------------
dentro del proyecto, crear un modulo con las siguientes declaraciones:
Declare Sub vbOut Lib "WIN95IO.DLL" (ByVal nPort As Integer, ByVal nData As Integer)
Declare Sub vbOutw Lib "WIN95IO.DLL" (ByVal nPort As Integer, ByVal nData As Integer)
Declare Function vbInp Lib "WIN95IO.DLL" (ByVal nPort As Integer) As Integer
Declare Function vbInpw Lib "WIN95IO.DLL" (ByVal nPort As Integer) As Integer
**********************************************
luego, agregar win95io.dll (se la encuentra facil en internet) en la carpeta windows/system
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