La utilizacion del Control MScomm es muy sencilla aunque parezca algo enredado al principio, lo primero que debes saber es que este control tiene un solo evento que es en
Estas, son declaraciones de constantes ( de eventos):
Estas, son declaraciones de constantes ( de errores):
Estas, son declaraciones de constantes ( de manejo de control de linea ):
Muy bien, ahora explicando un poco para que sirven estos valores comienzo por lo siguiente:
En las comunicaciones seriales existen algunas señales intrinsicas al medio que hay que tener claras para desarrollar una aplicacion. Cuando hablo de señales son indicadores de un estado determinado en una linea del cable físico.( Para saber mas de eso refierase a información sobre Hardware de Puerto serial RS-232)
¿Ahora, como se comporta el Control MsComm ante estos cambios?
El valor
El valor
Importante es aclarar que si se coloca
Estas dos funciones trabajan conjuntamente con las propiedades
Para evitar los problemas de perdida de datos tanto en transmision como en recepcion se usa el control de flujo de informacion que se establece con
Para la mayoría de las aplicaciones no utilizar el control de flujo funciona, sin embargo ya que hables de una balanza, me imagino que la distancia entre el computador y la balanza es considerable, esto implica tener un manejo del flujo de control de error, para ese caso específico sería bueno considerar la utilizacion de casi todas las lineas del puerto serial, para tener una idea de esto debo decir que un puerto serail RS-232 se compone de las siguientes líneas, este es el conector serial detras del PC:
Pin 2 Pin 3 TXD Transmit Data
Pin 3 Pin 2 RXD Receive Data
Pin 4 Pin 7 RTS Request To Send
Pin 5 Pin 8 CTS Clear To Send
Pin 6 Pin 6 DSR Data Set Ready
Pin 7 Pin 5 SG Signal Ground
Pin 8 Pin 1 CD Carrier Detect
Pin 20 Pin 4 DTR Data Terminal Ready
Pin 22 Pin 9 RI Ring Indicator
Según la tabla anterior, puedo decir que para una comunicacion serial el el 90% de los casos se pueden conectar
La forma estandar de conectar dos dispositivos seriales es
Ahora volviendo al control MsComm, y quiere practicar algo, conectando dos PC de la forma anterior descrita es decir
Ayudando a responder a alguien que pregunto en la lista acerca que abría el modem, podía marcar etc pero no sabe como detectar que del otro lado colgaron el telefono, esto se puede hacer simplemente con la señal
Lo último que me falta comentar para el control es el establecimiento de los parametros de velocidad y paridad para la comunicacion entre los dispositivos, estos parametros deben ser iguales entre el PC y la Balanza, en el control MsComm se establece con la propiedad Settings que tiene un formato "
Específicamente hablando del caso de la balanza que deseas conectar debes hacer lo siguiente:
1.- Establecer Settings en el control según los de la Balanza.
2.- Si la balanza envia los datos de forma de un bloque de datos fijo es decir: supongamos que la balanza transmite el siguiente bloque de información cada vez que registra un peso: "CCC999999,999CCC" y suponemos que CCC son caracteres de control de inicio y fin de la secuencia y 999999,999 es el peso registrado, si es asi entonces puedes setear el parametro
3.- Si la balanza no transmite un bloque fijo de datos debes colocar a
4.- Para leer la Balanza debes usar la propiedad Input, la cual es la propiedad que te permite leer los datos en el buffer de recepcion de datos en el PC que llegaron de la Balanza, cada vez que ejecutas
Luego que hagas eso puedes hacer todas las pruebas necesarias, mas informacion puedes conseguir en la ayuda del control que trae el mismo Visual Basic.
Si necesitas mas ayuda puede enviarme un mail a mi direccion directamente para no saturar la lista.
Bien, espero haberte ayudado y a los amigos de la lista poder comprender mejor el funcionamiento del contro MsComm.
quedo a disposicion si se tiene alguna duda.
jmrojas wrote:
Necesito ayuda de alguno de ustedes que haya usado el control MScomm, ya
que me estan ofreciendo desarrollar una aplicación que lea el peso de
unos productos desde una balanza digital ......
Espero la ayuda de ustedes ....
Agradecido de antemano...
Juan Manuel Rojas Bravo
--
Internet: <<
ICQ #:7993678
Packet: yv6esd@yv6esd.#yvnet.poz.ven.sa
Puerto Ordaz - Venezuela
Mensaje enviado por "Juan Carlos Alvarez" <jcarlos.alvarez@abitab.com.uy>
Te mando un ejemplo...
Cuando abras el puerto no deberías recibir automaticamente, solo si es que programas el evento OnComm, aqui te mando un ejemplito...
Private Sub com_OnComm()
Dim EVMsg As String
Dim ERMsg As String
Dim vr As Integer
'Procesar de acuerdo con la propiedad CommEvent
Select Case com.CommEvent
'Mensajes relativos a sucesos
Case comEvReceive
RecibirCom
Case comEvSend
'Por ahora no hago nada
Case comEvCTS
EVMsg = "Cambio detectado en CTS"
Case comEvDSR
EVMsg = "Cambio detectado en DSR"
Case comEvCD
EVMsg = "Cambio detectado en DCD"
Case comEvRing
EVMsg = "El teléfono está sonando"
Case comEvEOF
EVMsg = "Fin de fichero"
'Mensajes de error
Case comBreak
EVMsg = "Interrupción detectada"
Case comCTSTO
ERMsg = "Tiempo para CTS sobrepasado"
Case comDSRTO
ERMsg = "Tiempo para DSR sobrepasado"
Case comFrame
EVMsg = "Error de transmisión (encuadre)"
Case comOverrun
ERMsg = "Error de sobrescritura"
Case comCDTO
ERMsg = "Tiempo para DCD sobrepasado"
Case comRxOver
ERMsg = "Buffer de recepción lleno"
Case comRxParity
EVMsg = "Error de paridad"
Case comTxFull
ERMsg = "Buffer de transmisión lleno"
Case Else
ERMsg = "Error o suceso desconocido"
End Select
If Len(EVMsg) Then
'Visualizar el mensaje EVMsg
MsgBox EVMsg
EVMsg = ""
ElseIf Len(ERMsg) Then
'Visualizar el mensaje de error
Beep
vr = MsgBox(ERMsg, 1, "Pulse Cancelar para salir, Aceptar para ignorar.")
ERMsg = ""
'Si se pulsó Cancelar
If vr = 2 Then
com.PortOpen = False 'Cerrar el puerto y salir
End If
End If
End Sub
Private Sub RecibirCom()
Dim NumCars As Integer
Dim BufferEnt, info As String
If err Then MsgBox err.Description, 48
'Leer datos del puerto
com.InputLen = 0
NumCars = com.InBufferCount
If NumCars Then
BufferEnt = com.Input
info = Mid(BufferEnt, 1, 1)
'Aqui puedes continuar con tu info
End If
End Sub
Saludos y espero que te sirva Juan.
-----Mensaje original-----
De: Honey Hernandez [mailto:honey@tabacuba.com.cu]
Enviado el: martes, 30 de octubre de 2001 17:12
Para: visualbasic-esp@yahoogroups.com
Asunto: (VB-ESP) Puerto serie
Importancia: Alta
Saludos a todos
Tengo que hacer un programa que lea del com1 la información que transmite
una pizarra telefónica y no he podido hacer mucho con la ayuda del MSComm,
si alguien pudiera decirme como hacerlo le agradecería eternamente.
EL problema es que según la ayuda en cuanto abra el puerto debería comenzar
a recibir y no es así, el problema no es la pizarra pues con el
hiperterminal funciona perfectamente.
Desde ya muchas gracias.