Esto no es un proyecto en sí, lo hice a solo fin de mostrar que uno puede controlar entradas y salidas a través de un puerto serie, o a través de un puerto USB, utilizando un converso comercial USB-RS232.
El puerto serie nos brinda tres entradas y dos salidas que pueden ser manejadas a voluntad por cualquier lenguaje en la PC.
Estas entradas y salidas en realidad fueron pensadas para ser utilizadas en el control de flujo por hardware, pero están ahí y vamos a utilizarlas.
Las entradas son:
CD (Carrier Detect) pin 1
DSR (Data Set Ready) pin 6
CTS (Clear to Send) pin 8
las salidas son:
DTR (Data Terminal Ready) pin 4
RTS (Request to Send) pin 7
1º circuito: Circuito de prueba con 3 entradas y dos salidas
El circuito de prueba es de lo mas sencillo, consta de 3 pulsadores, 2 LED, 5 resistencias, una batería de 9V y el conector DB9
Este circuito lo podemos conectar directamente a un com de la PC o a un puerto USB a través de un conversor USB-RS232, como se vé en la imagen:
Dejo un par de fotos del programa de prueba ejecutándose en la PC.
El código en VB6 es el siguiente:
Código: Seleccionar todo
Option Explicit
Private Sub Command2_Click()
If MSComm1.RTSEnable = True Then
MSComm1.RTSEnable = False
Command2.Caption = "Prender LED2"
Else
MSComm1.RTSEnable = True
Command2.Caption = "Apagar LED2"
End If
End Sub
Private Sub Command1_Click()
If MSComm1.DTREnable = True Then
MSComm1.DTREnable = False
Command1.Caption = "Prender LED1"
Else
MSComm1.DTREnable = True
Command1.Caption = "Apagar LED1"
End If
End Sub
Sub leer_entradas()
Do
DoEvents
If MSComm1.CTSHolding = False Then
Shape1.FillColor = QBColor(2)
Else
Shape1.FillColor = QBColor(10)
End If
If MSComm1.DSRHolding = False Then
Shape2.FillColor = QBColor(2)
Else
Shape2.FillColor = QBColor(10)
End If
If MSComm1.CDHolding = False Then
Shape3.FillColor = QBColor(2)
Else
Shape3.FillColor = QBColor(10)
End If
Loop
End Sub
Private Sub Form_Activate()
If App.PrevInstance = True Then
MsgBox " El programa ya está corriendo ", vbCritical + vbSystemModal
End
End If
Form1.Caption = "On/Off Serial"
MSComm1.CommPort = 3
MSComm1.Settings = "9600,N,8,1"
MSComm1.PortOpen = True
MSComm1.DTREnable = False
MSComm1.RTSEnable = False
Command1.Caption = "Prender LED1"
Command2.Caption = "Prender LED2"
Call leer_entradas
End Sub
Private Sub Form_Unload(Cancel As Integer)
MSComm1.DTREnable = False
MSComm1.RTSEnable = False
MSComm1.PortOpen = False
End
End Sub
Aquellos que deseen utilizar otro COM simplemente deben cambiar la línea:
Código: Seleccionar todo
MSComm1.CommPort = 3
Como pueden observar es muy fácil controlar a través del puerto serie un par de led y leer tres entradas.
A partir de aquí se pueden hacer muchas cosas, siempre teniendo cuidado de no sobrecargar el puerto.