Visual basic y puerto serie

#1
Hola estudio electronica pero ahorita estoy con visual basic... y pues necesito algo mas simple, el "protocolo" lo hice mas por electronica asi que en programacion... mi pregunta es si es posible por ejemplo colocar algun pin (puerto serie) en 1 (10 segundos) y otro pin que me mande un tren de pulsos...



00011111111111110000
00010001000100010000

Si que alguien que sepa y tenga ingenio como colocar eso, y pues decirme si tbm es posible


00011111111111110000
00010001000100010000
00010101010101010000

Eso, la frecuencia me gustaria programarlo, no lo se, tal vez con un for, de encender 10 sec y apagarlo y nuevamente encender 20 algo asi.
 
#2
Hola Strike...
yo utilizo las lineas Mscomm1.DTREnabled = true y Mscomm1.RTSEnabled = true,
y pues la frecuencia la contrar con Timer1.interval = x

Saludos
 
#3
Disculpa la ignorancia recien aprendo esto de interfaces, la cosa, si yo colocase;

Private Sub Command1_Click()
Mscomm1.DTREnabled = true
End Sub
Private Sub Command2_Click()
Mscomm1.DTREnabled = false
End Sub

Funcionaria ? O ahy que agregar algo mas
 
#4
Lo más facil de hacer es usar un timer, que se ejecute cada digamos 1segundo...

En el tick del timer, podés hacer lo que quieras, setear el valor de DTREnabled al que quieras dependiendo del tiempo que haya pasado... Podés hacer una tabla y así dibujar el tren de pulsos que quieras...

Un saludo,
Gonzalo
 
#5
Hola Strike!...
Sería algo así,

'global
Dim nBits As Integer
Dim cBits As Integer
Dim Dato As Integer

Sub Command1_Click ()
Timer1.Interval = 1000
Timer1.Enabled = True
Mscomm1.OpenPort = True
Mscomm1.DTREnabled = True
cBits = 1
nBits = Len(text1.Text)
End Sub

Sub Timer1_Timer ()
Dato = Val(Mid$(text1, cBits, 1))
If Dato = 1 Then
Mscomm1.RTSEnabled = True
Else
Mscomm1.RTSEnabled = False
End If
cBits = cBits + 1
If cBits > nBits Then
Timer1.Enabled = False
Mscomm1.DTREnabled = False
Mscomm1.OpenPort = False
End If
End Sub
 
#6
Hmmm gracias por las respuestas, estube leyendo otro manuales, y mi cuñado dijo que lo intentara no mas, es decir

Private Sub Command1_Click()
Mscomm1.DTREnabled = true
End Sub
Private Sub Command2_Click()
Mscomm1.DTREnabled = false
End Sub

Que primero viera que sucedia con eso y luego me daba a los trenes de pulso y esos.
Pero siento que igual faltara algo... ?

Unikfriend, podrias explicar un poquito tu codigo o decirme si hago primero lo que me dijo mi cuñado
 
#7
Faltaría unicamente que elijas el puerto COM por el que quieres sacar los datos (era alguna propiedad del MSComm, no lo recuerdo ahora...

Un saludo,
Gonzalo
 
#8
Hi, Strike...
el puerto serial lo seleccionas en las propiedades del MSComm1.CommPort

la idea es que la casilla de texto tu coloque el tren de pulsos que deseas transmitir,
segun te entendi un pulso por segundo durante 10 segundos.


Esta prueba ya la he realizado anteriormente y funciona bien, solo necesitas estar seguro
de tener la libreria correcta de la version de VB que este utilizando. puede ser
MSCOMM.VBX para VB3 o MSCOMM.OCX para VB4,VB5,VB6

Que version de VB utilizas?
 

Adjuntos

#10
Hi Strike...
Primero que nada soy tia... no tio..

Ok en la barra de herramientas del VB, debe aparecer un icono de un telefono,
ese el control del MSCOMM. si no aparece tienes que agregar el componente haciendo
click con el boton derecho del mouse y buscar el achivo MSCOMM.OCX en el directorio de
winodws.
Si ya he realizado esta prueba pero fue con VB3,
actualmente uso el Visual C Express para este tipo de interfaces .
Y el problema con los proyectos de VB es que no son 100% transportables entre versiones.
se batalla mucho cuando cambias de version, practicamente tienes que hacer todo otra vez.
por que muchos controles no llaman igual.
Saludos.
 
#11
Hola denuevo

Seguramente todo esto me ayudara, lo siguiente sera para personas que necesiten ayuda en esta parte:

Para colocar el archivo MSCOMM.OCX debemos ir al programa, en la pestaña proyecto -> componentes - Buscar el archivo o el titulo: "Microsoft Comm Control 6.0" si no lo esta debemos colocarnos nosotros, bueno; nos vamos al siguiente enlace:
http://www.nodevice.es/dll/MSCOMM32_OCX/item12152.html
Ahy mas abajo pide colocar el codigo y descargarlo. Una vez abierto el rar, copiar el archivo -> entrar a MI PC -> Al disco duro -> windows - system32 y pegarlo ahy.
Si el VB no lo actualiza, hacemos manualmente, colocamos ahy (En la ventana componente, de la pestaña proyecto) colocamos "Examinar" o "brow.." Y vamos a buscarlo donde lo dejamos, le damos en aplicar y nos saldra la imagen que deja ahy.
 

Adjuntos

#13
Hola, bueno segui viendo y el tio arriba decia que debia ademas elegir el puerto
----
MSComm1.CommPort = 1 'Paso 1: elijo el puerto
MSComm1.Settings = "9600,N,8,1" 'Paso 2:
MSComm1.PortOpen = True
----
MSComm1.CommPort = 1 'Paso 1: elijo el puerto
Eso supongo que sera elegir el puerto... ?
.----
Sera necesario establecer eso? Si no necesito establecer comunicacion solo mandar señales binarias?
MSComm1.Settings = "9600,N,8,1" 'Paso 2:
----------
Private Sub Command1_Click()
Mscomm1.DTREnabled = true
End Sub
Private Sub Command2_Click()
Mscomm1.DTREnabled = false
End Sub

Me ayudan ahora como quedaria dejarlo en un on off?

Si unikfreind pro no que hago dentro de ese codigo ?
 
Última edición:
#14
Hi Strike,

Si tienes que elegir el puerto las PC normalmente tiene dos com1 o com2,

el baud rate no importa por que tu no lo vas a conectar,
solo necesitas el pinout del puerto serial, para saber que lineas vas a monitorear...

Hi, Strike...
Si ya tienes en el formato el MSComm y los dos botones Command1 y Command2
con esto codigo deberia ser suficiente para que enciendas y apagues esas
dos lineas..
'----------------------
Sub Form_Load ()
MSComm1.OpenPort = True
End Sub
Sub Form_UnLoad ()
MSComm1.OpenPort = False
End Sub
Sub Command1_Click ()
MSComm1.DTREnabled = True
MSComm1.RTSEnabled = True
End Sub
Sub Command2_Click ()
MSComm1.DTREnabled = False
MSComm1.RTSEnabled = False
End Sub
'----------------------
Saludos.
 

Adjuntos

Última edición:
#15
Ho mucha gracias, aveces me sucede que a toda gente que pido ayuda poca ayuda es mia, el tema es que nose si hago malas preguntas o no pero ahora gracias , lo probare.
 
#19
Exactamente: Los "1" lógicos son de -12 volts aproximados, mientras que los "0" lógicos son de +12v

Lo mismo con las señales de control.

Un saludo,
Gonzalo
 
Arriba