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, sin necesidad de utilizar un microcontrolador.
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.
Vamos ha tener en cuenta un conector RS232 DB9, que es un estándar en las Pc, aunque ahora ya prácticamente en desuso.
Las entradas son:
CD (Carrier Detect) pin 1
DSR (Data Set Ready) pin 6
CTS (Clear to Send) pin 8
Y 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 (que es el lenguaje que manejo para PC) es el siguiente:
El código está escrito para que trabaje en el COM3, porque allí tengo instalado mi conversor USB-RS232.Código: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:
Y poner el número de puerto que deseen en lugar del "3".Código: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.
Adjunto el ejecutable para el puerto COM3
Serial_in_out.rar
Con esto finalizamos el primer circuito de prueba.
Continuará...


LinkBack URL
About LinkBacks
Citar

