jueves, 9 de diciembre de 2010

Activar DTR RTS Visual Basic

Muy buenas a todos y todas!!!

Si has intentado hacer funcionar el convertidor de RS232 a RF te habrás dado cuenta que ya no basta solo con enchufarlo, sino que hay que configurarlas en el mismo programa que estés utilizando.

Creo que se pueden activar mediante algún software para control del puerto, pero aquí voy a poner un ejemplo de como activarlo en Visual Basic 6.

En concreto los apartados DTREnable y RTSEnable del control MScomm1.

Además de como utilizar el CTSHolding y DSRHolding para que nos indique si esta activado o no.


Aquí os dejo un ejemplo en Visual Basic 6 para activar DTR y RST:


activar DTR y RST Visual Basic 6



VERSION 5.00
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
Begin VB.Form Form1 
   Caption         =   "Activa DTR y RTS"
   ClientHeight    =   3165
   ClientLeft      =   60
   ClientTop       =   405
   ClientWidth     =   7065
   LinkTopic       =   "Form1"
   ScaleHeight     =   3165
   ScaleWidth      =   7065
   StartUpPosition =   3  'Windows Default
   Begin VB.CommandButton Command8 
      Caption         =   "Cerrar Puerto COM"
      Height          =   375
      Left            =   480
      TabIndex        =   8
      Top             =   840
      Width           =   1575
   End
   Begin VB.CommandButton Command7 
      Caption         =   "Apagar RTS"
      Height          =   375
      Left            =   5160
      TabIndex        =   7
      Top             =   840
      Width           =   1335
   End
   Begin VB.CommandButton Command6 
      Caption         =   "Apagar DTR"
      Height          =   375
      Left            =   5160
      TabIndex        =   6
      Top             =   240
      Width           =   1335
   End
   Begin MSCommLib.MSComm MSComm1 
      Left            =   2160
      Top             =   480
      _ExtentX        =   1005
      _ExtentY        =   1005
      _Version        =   393216
      DTREnable       =   -1  'True
   End
   Begin VB.CommandButton Command5 
      Caption         =   "Limpiar"
      Height          =   375
      Left            =   1800
      TabIndex        =   5
      Top             =   2640
      Width           =   1095
   End
   Begin VB.CommandButton Command4 
      Caption         =   "Abrir Puerto COM"
      Height          =   375
      Left            =   480
      TabIndex        =   4
      Top             =   240
      Width           =   1575
   End
   Begin VB.CommandButton Command3 
      Caption         =   "Enviar"
      Height          =   375
      Left            =   480
      TabIndex        =   3
      Top             =   2640
      Width           =   1095
   End
   Begin VB.CommandButton Command2 
      Caption         =   "Activar RTS"
      Height          =   375
      Left            =   3120
      TabIndex        =   2
      Top             =   840
      Width           =   1335
   End
   Begin VB.CommandButton Command1 
      Caption         =   "Activar DTR"
      Height          =   375
      Left            =   3120
      TabIndex        =   1
      Top             =   240
      Width           =   1335
   End
   Begin VB.TextBox Text1 
      Height          =   975
      Left            =   480
      TabIndex        =   0
      Top             =   1560
      Width           =   6015
   End
   Begin VB.Shape Shape2 
      BackStyle       =   1  'Opaque
      Height          =   375
      Left            =   4560
      Shape           =   3  'Circle
      Top             =   840
      Width           =   495
   End
   Begin VB.Shape Shape1 
      BackStyle       =   1  'Opaque
      Height          =   375
      Left            =   4560
      Shape           =   3  'Circle
      Top             =   240
      Width           =   495
   End
End

Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False

Private Sub Command1_Click()
  If MSComm1.PortOpen = True Then
    MSComm1.DTREnable = True      'Activa la linea DTR
    Command6.Enabled = True
    Command1.Enabled = False
  End If
End Sub

Private Sub Command2_Click()
  If MSComm1.PortOpen = True Then
    MSComm1.RTSEnable = True      'Aactiva la linea RTS
    Command7.Enabled = True
    Command2.Enabled = False
  End If
End Sub

Private Sub Command3_Click()
  If MSComm1.PortOpen Then
    MSComm1.Output = Text1.Text + Chr$(13) + Chr$(10)
  Else
    MsgBox ("Se debe abrir el puerto")
  End If
  Text1.SetFocus
End Sub

Private Sub Command4_Click()
  On Error Resume Next
  MSComm1.PortOpen = True
  If MSComm1.PortOpen Then
    Command1.Enabled = True
    Command2.Enabled = True
    Command3.Enabled = True
    Command4.Enabled = False
    Command5.Enabled = True
    Command8.Enabled = True
  End If
End Sub

Private Sub Command5_Click()
  Text1.Text = ""
  Text1.SetFocus
End Sub

Private Sub Command6_Click()
  If MSComm1.PortOpen = True Then
    MSComm1.DTREnable = False         'Desactiva la linea DTR
    Command1.Enabled = True
    Command6.Enabled = False
  End If
End Sub

Private Sub Command7_Click()
  If MSComm1.PortOpen = True Then
    MSComm1.RTSEnable = False         'Desactiva la linea RTS
    Command2.Enabled = True
    Command7.Enabled = False
  End If
End Sub

Private Sub Command8_Click()
  MSComm1.PortOpen = False
  Command1.Enabled = False
  Command2.Enabled = False
  Command3.Enabled = False
  Command4.Enabled = True
  Command5.Enabled = False
  Command6.Enabled = False
  Command7.Enabled = False
  Command8.Enabled = False
End Sub

Private Sub Form_Load()
  Command1.Enabled = False             'Defino los botones, esto se puede hacer directamente
  Command2.Enabled = False             'Esto se puede hacer mucho más limpio, pero es que hice en
  Command3.Enabled = False             'En plan rápido
  Command5.Enabled = False
  Command6.Enabled = False
  Command7.Enabled = False
  Command8.Enabled = False
  Shape1.BackColor = &H8000000F
  Shape2.BackColor = &H8000000F


 'Definimos los parámetros del puerto COM
  MSComm1.CommPort = 1
  MSComm1.Settings = "2400,N,8,1"
  MSComm1.DTREnable = False 'Desactivamos el DTREnable
  MSComm1.RTSEnable = False 'Desactivamos el RTSEnable
End Sub

Private Sub Form_Unload(Cancel As Integer)
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
End Sub

Private Sub MSComm1_OnComm()

  Select Case MSComm1.CommEvent

    Case comEvCTS
      If MSComm1.CTSHolding Then        'Esto muestra que la linea esta activa y corresponde
        Shape2.BackColor = vbRed             ' al pin 8 del db9 (CLEAR TO SEND)
      Else
        Shape2.BackColor = &H8000000F
     End If

    Case comEvDSR
      If MSComm1.DSRHolding Then      'Esto muestra que la linea esta activa y corresponde
        Shape1.BackColor = vbRed            'al pin 6 del db9 (DATA SET READY)
      Else
        Shape1.BackColor = &H8000000F
      End If

  End Select
End Sub


Fuente:

https://toyscaos.tripod.com/serial2.html Donde podéis encontrar otro ejemplo en Visual Basic 6 relacionado con DTR y RTS.


Otros artículos sobre Visual Basic 6.0 que te pueden interesar:


Saludos a todos y todas, nos vemos en la próxima entrada!!!

No hay comentarios :

Publicar un comentario