You are on page 1of 18

control VBHIDCOMM.

OCX
un par de linck's con informacion:
http://.us!.or"/home #las espesificaciones$
http://.id".es/pcorld/%ho%ol.asp&ID'())*
http://.!e+ondlo"ic.or"/us!/us!hard.htm
http://.ak,modul,!us.de/technik/clus!-!.html #mu+ !uena$
.n esta direccion encontraran e/emplos0 api + codi"o para leer + escri!ir en el puerto
1%B:
http://.intel.com/intelpress/us!/...-!o-er-ie.htm
otras con relacion al tema:
http://.codepro/ect.com/csharp/csppleds.asp #es de puertos paralelos$
22222222222222222222222222222222222222222222222222 22222222222222222222
http://home.t,online.de/home/hol"er....us!/us!pic.htm #so!re el control 3ue encontraste
VBHIDCOMM.OCX$
.... si encuentro mas informacion te edito el post + te la de/o aca.
suerte !+e
.DI4:
#a"re"ado de e!s$
http://.alecmcnamara.freeser-e.co.uk/piccalc/ #tutorial de coneccion 5IC to 5C$
http://.alanmacek.com/us!/inde6.html
para lo 3ue tu 3uieres hacer0 te recomiendo 3ue controles el puerto paralelo0 es mucho
mas facil0 mira estos e/emplos te pueden dar una idea...#cual idea esta practicamente
hecho$
Notas Antes de Empezar
---------
1.- Este tema permanecer cerrado para manterer la
consecutividad en el tema, pero si tienen dudas comentarios,
crticas o sugerencias, pueden hacerlas en.
Comentarios Tuto Puerto Paralelo
--------
2.- En el caso de "Controlar 1 Bit" y "CONTROAR TO!O" O" B#T"
!E "A#!A" "e $a $ec$o un e%emplo en Tur&o c'' ()* a&+ie, ( -.1
y +isual Basic Pro.esional (/
Pero a Partir del )0 "!#"PA1 - "E23ENTO" " "er4 con +isual Basic
+5 Tur&o c'' () y a&+ie, -.1
El 6nico 7ue cam&ia es +B* la raz8n es 7ue me 9usta m4s esta
(ersi8n
"i 7uieren pueden se9uir $aci:ndolos en (&/* solo $ay 7ue modi.icar
un par de cosillas.
Adem4s +isual Basic Puede !escar9arse 2ratuitamente
+isual Basic 2;;< E=press Edition
En esta (ersi8n se pueden a&rir y con(ertir proyectos de +&/
--------
).- >asta $ace d?as solo sa&?a usar C* as? 7ue aprend? +isual Basic
para poder $acer este tuto. "i al9uien esta interesado en aprender
+isual Basic este tutorial me sir(i8 muc$o.
Curso +isual Basic
--------
@.- >ar: lo posi&le por $acer un e%emplo en C* en +isual Basic y a&
+ie,.
--------
<.- Tomen todas las precauciones posi&les con el puerto* compren
opto acopladores @n2/ para tra&a%ar con C! o moc);1; para CA* si
lle9aran a 7uemar su puerto o necesitan otro* pueden comprarlos* los
(enden por A);; para PC#.
--------
_________________________________________________
_ ______________
CONTROLAR !"T
Para empezar solo controlaremos un &it de salida para
apa9arBencender un dispositi(o de CA desde el puerto Paralelo del PC*
ya entendiendo esto se pueden controlar los dem4s Bits.
#aterial Necesario
1 Puerto paralelo li&re
1 3oc);1;m
1 Triac CA los Amperes 7ue tra&a%e el dispositi(o #DPB+E
1 Resistencia </; O$ms
1 Resistencia 22; O$ms
1 ed
1 Conector !&2< 3ac$o
Ca&le para intercone=iones CPuede ser del de Red de 5 >ilosE
1 Fusi&le CAl ampera%e del dispositi(oE
1 Cla(i%a CA con ca&le
"i 7uieren pueden $acer sus propios pro9ramas o &a%ar el 7ue yo $e
$ec$o.
El circuito es &astante sencillo* aun7ue si 7uieren primero pueden
pro&ar con un E! ' 2 resistencias y un @n2/.
$uncionamiento%
a R1* se encar9a de limitar la corriente del puerto paralelo e(itando
7ue este se daGe* esta conectada al pin2 del puerto paralelo 7ue es el
Bit 3enos "i9ni.icati(o C"BDess "i9ni.icati(e BitE del dato de salida
del Puerto.
!el puerto paralelo podemos utilizar desde el pin 2 $asta el H* para
escri&ir un dato de 5 &its el pin 2 es el 7ue utilizaremos y
corresponde al &it1 o "B.
"i 7uisi:ramos controlar m4s dispositi(os podemos utilizar los dem4s
&its.
Puede (erse 7ue R1 se conecta al pin1 de un 3oc);1;m* este es un
dispositi(o de / patas 7ue esta sir(iendo como aislante entre la etapa
de control CPCE y la de potencia C!ispositi(o de CA* motor* .oco*
la(adora* tele(isi8n.E.
El moc* contiene en su interior un acoplamiento 8ptico entre un E! y
un .otodiac* cuando ponemos a 1 l89ico* el &it1 del puerto paralelo*
lle9a corriente al ed interno del moc y .luye corriente a tra(:s de
este $asta a tierra del puerto Paralelo 7ue (a desde el pin15 $asta el
2<.
3ientras el Bit1 se manten9a en 1* el led esta encendido Cpero no se
(e pues esta adentroE* .rente al ed del 3oc* e=iste un .otodiac* 7ue
es un dispositi(o t?pico de disparo* act6a cuando entre sus 2
terminales $ay cierto potencial llamado (olta%e de disparo
Cre9ularmente son )<(E. Pero este disparo no ocurre si el ed no le
proporciona luz.
Por tanto mientras no $aya pulso por parte del puerto PT* el led no
enciende y el .otodiac no se dispara* la $a&er pulso* el led enciende y
el .otodiac esta $a&ilitado para $acer los disparos.
El triac es un dispositi(o semiconductor* el cu4l conduce corriente en
am&os sentidos por tanto puede conducir durante los )/;0 de una
seGal de CA.
"u conducci8n esta controlada por la compuerta* en la cu4l es
reci&ido el disparo proporcionado por el .otodiac* cuando este manda
un pulso a la compuerta del triac* este se comporta como un
interruptor cerrado* $aciendo 7ue la corriente .luya $acia la Car9a
7ue puede ser cual7uier cosa como un .oco* motor* tele(isi8n.
"i no $ay disparo del Fotodiac* el Triac se comporta como un aislante
o interruptor a&ierto y no lle9a corriente a la car9a por lo cu4l no
enciende.
A$ora* en la lista aparece un ed* este puede ponerse en serie con el
interno del moc solo para tener un indicador (isual del estado del
puerto. El .usi&le ser?a solo si el aparato no lo incluye ya* se pondr?a
en serie con la car9a.
1 eso ser?a todo en cuanto a $ard,are se re.iere.
&o't(are
&O$T)ARE *ARA C
En C ser?a de esta manera.
NotasI
JAd%unto el linK para descar9ar el compilado
JNo lo e=plicar: para e(itar en.adar* pero si al9uien tiene dudas
respecto al c8di9o* puede $ac:rmelas sa&er.
JComo estamos usando dos.$ solo puede correr en !O"* no $e
podido $acerlo .uncionar en LP por 7ue tiene los puertos Blo7ueados*
si al9uien me dice como se lo a9radecer: muc$o.
JEmpezamos con las li&rer?as necesarias
Ja .unci8n PARAEO pueden o no a9re9arla* yo la pon9o para 7ue
el pro9rama solito &us7ue la direcci8n del puerto casi siempre es la
misma pero &ueno . "i lo 7uitan tendr4n 7ue declararla o
introducirla manualmente.
C8di9oI
#include <conio.h>
#include <dos.h>
#include <stdio.h>
#include <string.h>
int paralelo(), para, opc=0, contador, estado=0;
unsigned int _far *puntero_a_direccion;
char *uno="1", *dos="2", *tres="3", *letra;
main()
{
paralelo();
outportb(para,0);
while(opc!=3)
{
clrscr();
*letra=getch();
opc=strcmp(letra,uno);
if(opc==0)
{
outportb(para,1);
estado=1;
}
else
{
opc=strcmp(letra,dos);
if(opc==0)
{
outportb(para,0);
estado=0;
}
else
{
opc=strcmp(letra,tres);
if(opc==0)
{
gotoxy(30,20);
printf("Aplicacin Finalizada");
delay(1000);
opc=3;
}
else
{
gotoxy(30,20);
printf("Presiona una opcin v*lida");
delay(1000);
}
}
}
}
outportb(para,0);
}
paralelo()
{
clrscr();
busqueda:
puntero_a_direccion=(unsigned int _far *)0x00000408;
printf("Rastreando Direccin de Puerto Paralelo");
while(contador<40)
{
printf(".");
contador++;
delay(35);
}
clrscr();
para=*puntero_a_direccion;
outportb(para, 0);
}
+escargas
"o.t,are en C "olo Funciona Para MinH= Raz8nI En Lp de&en
des&lo7uearse los puertos
&O$T)ARE *ARA ,"&-AL !A&"C
En +isual Basic es m4s sencillo* podemos solo a9re9ar 2 &otones y lo
dem4s es cosa de presentaci8n.
El comando es Out Ndirecci8n.dato
El c8di9o ser?a as?I
NotasI
>ay 7ue a9re9ar un .dll 7ue esta ad%unto en el 1&itlpt.(isual.zip* a la
carpeta del sistema* yo lo pe9u: en Mindo,s* system y system)2.
Ad%unto el compilado por si lo 7uieres ya $ec$o* no lo e=plicar: por
7ue esta muy sencillo* pero si al9uien tiene dudas respecto al c8di9o*
puede $ac:rmelas sa&er
Para el Form
C8di9oI
Private Sub Command1_Click()
Out &H378, 0
End Sub
Private Sub Command2_Click()
Out &H378, 1
End Sub
Adem4s de&emos a9re9ar un 38dulo par ala !ll
C8di9oI
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)
+escargas
"o.t,are en +isual Basic
&O$T)ARE EN LA!,"E)
"i creyeron 7ue en +isual Basic es .4cil* pues esperen tra&a%ar con
a& +ie,* en < min* se puede $acer lo 7ue $icimos con los anteriores
pro9ramas.
as (ersiones superiores a a& +ie, < permiten utilizar el puerto
paralelo. 1o estoy usando la -.1 y permite compilar las simulaciones*
pero no $e podido compro&ar si .unciona en PcOs sin a& +ie,* de%ar:
un instaler por si al9uien "PQE NO" ten9a instalado a& +ie,* me
$ace .a(or de pro&arlo.
Para empezar* ocupamos poner un #nterruptor Bolean* un con(ertidor
de Bolean "trin9 a Num&er * una constante num:rica en la 7ue
pondremos la direcci8n del puerto en decimal D555 y un Out Port
Tal como en la ima9en si9uienteI
No ol(iden meterlo dentro de un ciclo ,$ile
+escargas
"o.t,are a&+ie, "e Necesita tener #nstalado a&+ie, O El +isor !e
a&+ie, Para Poder E%ecutarlo.
center7CONTROLAR TO+O& LO& !"T& +E &AL"+ARBcenterS
1a (imos como controlar un solo Bit* pues el proceso para $acerlo con
todos es similar.
!isponemos de 5 &its de salida o lo 7ue es i9ual a 1&yte.
En .in* para encender el primer &it de&?amos en(iar un 1* para
encender los dem4s de&emos pensar en el puerto como un n6mero
&inario* los 1 representan un estado "alto" y los ; un estado "&a%o".
"i 7uieremos* encender todos los 5 &its* entonces de&emos mandar
un 11111111* podemos mandarlo en decimal y el mismo pro9rama lo
pasa a &inario* en(iaremos entonces un 2<<.
1 as? es para cada n6mero.
;;;D;;;;;;;;
;;1D;;;;;;;1
;;2D;;;;;;1;
...
2<<D11111111
En este caso no e=plicar: el >ard,are e=terno* ya 7ue no $ay
nin9uno * simplemente estamos (iendo como controlar los &its sin
nada conectado.
As? 7ue nos pasamos directo al "o.t,are.
RcenterS&O$T)ARE EN CRBcenterS
En C* puede ser de esta maneraI
a .unci8n paralelo* lo 7ue $ace es &uscar la direcci8n del puerto y
almacenarla.
"i 7ueremos 7ue al salir del pro9rama se apa9uen todos los &its
de&emos mandar un
C8di9oI
outport(para,0);
!e lo contrario al salir del pro9rama se 7uedar4n tal cu4l los $ayamos
de%ado.
a e=plicaci8n del pro9rama es un poc e=tensa* as? 7ue me la
a$orrar:* si al9uien no lo entiende* me a(isa y entonces lo e=plico.
C8di9oI
#include <conio.h>
#include <graphics.h>
#include <dos.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
int paralelo(), para, contador=2, stop=0, opci, arreglo[8],
salida(), datum[8];
unsigned int _far *puntero_a_direccion;
char *letra, *stopo="*", *n0="0", *n1="1", *n2="2",
*n3="3", *n4="4", *n5="5", *n6="6", *n7="7", *n8="8";
long dato=0;
float resultado;
main()
{
paralelo();
outportb(para,0);
contador=0;
while(contador<8)
{
arreglo[contador]=0;
contador++;
}
while(stop==0)
{
clrscr();
printf("Presiona una nmero del 0-7\nPara Salir Presiona
*");
*letra=getch();
opci=strcmp(letra, n0);
if(opci==0)
arreglo[0]=arreglo[0]+1;
opci=strcmp(letra, n1);
if(opci==0)
arreglo[1]=arreglo[1]+1;
opci=strcmp(letra, n2);
if(opci==0)
arreglo[2]=arreglo[2]+1;
opci=strcmp(letra, n3);
if(opci==0)
arreglo[3]=arreglo[3]+1;
opci=strcmp(letra, n4);
if(opci==0)
arreglo[4]=arreglo[4]+1;
opci=strcmp(letra, n5);
if(opci==0)
arreglo[5]=arreglo[5]+1;
opci=strcmp(letra, n6);
if(opci==0)
arreglo[6]=arreglo[6]+1;
opci=strcmp(letra, n7);
if(opci==0)
arreglo[7]=arreglo[7]+1;
opci=strcmp(letra,stopo);
if(opci==0)
stop=1;
salida();
}
}
salida()
{
contador=0;
clrscr();
dato=0;
while(contador<8)
{
datum[contador]=((arreglo[contador])%2)*(pow(2,contador));
dato=dato+datum[contador];
contador++;
}
outportb(para,dato);
}
paralelo()
{
clrscr();
busqueda:
puntero_a_direccion=(unsigned int _far *)0x00000408;
printf("Rastreando Direccin de Puerto Paralelo");
while(contador<40)
{
printf(".");
contador++;
delay(30);
}
clrscr();
para=*puntero_a_direccion;
outportb(para, 0);
}
RcenterS
RBcenterS
"i 7uieren* pueden descar9ar el 7ue yo $e compilado.
+escargas
"o.t,are en C
RcenterS&O$T)ARE EN ,"&-AL !A&"C
RBcenterS
a ocasi8n anterior* el pro9rama en (isual .ue m4s sencillo* pero en
esta* la (erdad es 7ue me $a costado m4s por los arre9los 7ue $e
$ec$o con los c$ecK&o=.
RcenterS RBcenterS
os Bits pueden encenderse o apa9arse desde los 5 c$ecK&o= o puede
in9resarse el dato en el te=&o=.
Para $acerlo* $u&o 7ue a9re9ar 1 c$ecK&o= y copiarlo y pe9arlo -
(eces para $acer una matriz* entonces se simpli.ica el tra&a%o pues
solo damos la instrucci8n una (ez y solo de&emos inde=arlos para
$acer re.erencia a cada uno.
Para empezar* ocuparemos un m8dulo para la dll
C8di9oI
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)
El c8di9o para $acer 7ue re(ise los c$ecK&o= es as?
C8di9oI
Private Sub revisa()
contador = 0
dato = 0
While contador < 8
If Check1(contador).Value = 1 Then arreglo(contador + 1) =
1 Else arreglo(contador + 1) = 0
dato = dato + (arreglo(contador + 1) * (2 ^ contador))
contador = contador + 1
Wend
Text1 = dato
Out &H378, dato
End Sub
Private Sub Check1_Click(Index As Integer)
revisa
End Sub
o de poder in9resar el dato desde el te=&o= es adiciona y no es
necesario para el .uncionamiento del pro9rama.
+escargas
"o.t,are +isual &asic
RcenterS&O$T)ARE EN LA!,"E)RBcenterS
Como la ocasi8n anterior* en a&+ie, la pro9ramaci8n result8 m4s
sencilla* el 6nico detalle es 7ue no pude $acer 7ue los c$eK &uttons
se selccionen solos cuando el dato es in9resado* por ello a9re9u:
E!"
Empezamos aGadiendo 5 c$ecK&uttons y les a9re9amos un
con(ertidor de Boleano a N6mero.
RcenterS RBcenterS
!espu:s* ocupamos darle un peso a cada salida* de&en de estar en
&ase 2* el primero se ele(a C2T;Emultiplicado por ; o 1 dependiendo
del estado del c$ecK &utton. "i esta presionado tendr?amos C2T;E
C1ED1
Para el se9undo c$ecK C2T1ECc$ecKE "i el c$ecK esta presionado
C2T1EC1ED2 si no esta acti(o C2T1EC;ED;
RcenterS RBcenterS
as salidas de cada &it ele(ado a su potencia* al .inal las sumaremos
para sacar el dato completo y como son muc$as* a9re9amos una
suma Um6ltiple* le $acemos de 5 y listo .
a salida de la suma* la mandamos a un indicador num:rico o si no
7uieren (isualisarlo* simplemente lo mandan al outport
RcenterS RBcenterS
Finalmente* metemos todo dentro de un ciclo ,$ile y le ponemos un
&olean true para 7ue se repita siempre y 7uedar?a as?I
RcenterS
RB
centerS
Este Es E Pue 1o >e Compilado* "i Puieren Pueden !escar9arlo En
El inK !e A&a%o
RcenterS RBcenterS
+escargas
"o.t,are a&+ie, "e Necesita tener #nstalado a&+ie, O El +isor !e
a&+ie, Para Poder E%ecutarlo.
+isor a&+ie, "i No tiene a&+ie,* Puede #nstalar Este Pro9rama Pue
e "er(ir4 Para Poder E%ecutarlo. Ocupa Lp.
Res.men +escargas
"o.t,are +isual &asic
"o.t,are en C "olo Funciona en MinH=* en Lp se de&en des&lo7uear
los puertos.
"o.t,are a&+ie, "e Necesita tener #nstalado a&+ie, O El +isor !e
a&+ie, Para Poder E%ecutarlo.
+isor a&+ie, "i No tiene a&+ie,* Puede #nstalar Este Pro9rama Pue
e "er(ir4 Para Poder E%ecutarlo. Ocupa Lp.

You might also like