| |  |  | Miembros: Mensajes: Temas: Online: Ultimo Miembro: | | |  | | |
 | 
19-11-2007, 08:14:26
| | Junior Member Site Admin | | Registrado: nov 2007 Posts: 8
| | Problema comunicacion puerto serie Buenos dias, estoy realizando una aplicacion para enviar una trama a un dispositivo electronico y capturar la respuesta en una celda de excel.
Por algun motivo me esta fallando, me podeis ayudar?. Esto lo realizo con el visualBasic de excel. Con hyperterminal funciona perfectamente la trama que envío y recibo la respuesta correctamente.
Private Sub CommandButton1_Click()
Dim recibido As String
Dim ContadorBuffer, sinleer As String
MSComm1.CommPort = 6
MSComm1.Settings = "9600,e,7,2"
MSComm1.InputLen = 0
MSComm1.RThreshold = 1
MSComm1.PortOpen = True
MSComm1.Output = Chr(2) & "010000101C00002000001" & Chr(3) & Chr(66)
'Enviar trama por el puerto serie
recibido = MSComm1.Input
Cells(2, 1) = recibido
ContadorBuffer = MSComm1.OutBufferCount
sinleer = MSComm1.InBufferCount
Cells(3, 3) = sinleer
Cells(3, 1) = ContadorBuffer
MSComm1.PortOpen = False
'Cierra el puerto
End Sub
Un saludo.
Gracias | 
19-11-2007, 10:49:53
|  | Buena Participación en el Foro | | Registrado: nov 2007 Ubicación: Investigación y Desarrollo (I+D) Posts: 70
| | Hola y bienvenido bihos2003,
Veo que no nos especificas en que parte del código reproduce el error.
Saludiños | 
19-11-2007, 11:56:26
|  | Moderador | | Registrado: dic 2002 Ubicación: Madrid Posts: 4.308
| | Tienes que utilizar el evento del MSComm que se activa cuando recibe datos (DSR), porque si nada mas abrirlo esperas recibir información, seguramente no le das tiempo a sincronizar. Por otra parte solamente recibirás una trama de datos.
Espero te resulte útil. | 
19-11-2007, 14:21:32
| | Junior Member Site Admin | | Registrado: nov 2007 Posts: 8
| | Hola,
Gracias y muy amables por las respuestas y vuestro interés.
Realmente el código no muestra ningun mensaje de error, simplemente no puedo capturar la trama de respuesta.
Cuando hablas de los eventos, imagino te refieres a MSComm1_OnComm(), pero la verdad no sé realmente como usarlo. Solamente quiero enviar una trama, para recibir una respuesta mediante un boton. Comentar que las señales CTS, DTR, etc. estan puenteadas porque el dispositivo no lleva estas señales.
Es posible el error sea por no utilizar los eventos, pero realmente no sé como utilizarlo, me podeis ayudar?
Gracias y muy amables. | 
19-11-2007, 15:47:50
|  | Moderador | | Registrado: dic 2002 Ubicación: Madrid Posts: 4.308
| | El evento OnComm se activa cuando el puerto tiene algún dato en buffer pendiente de entregar. Es en este evento en el que tienes que poner la sentencia INPUT para pasar los datos a una variable dimensionada en el formulario o pública.
También tendrás que controlar si la longitud de datos recibida se corresponde con la esperada; tienes que pensar que los puertos (todos) no tienen porqué entregar la trama de datos en un único envío, depende de su tamaño pueden enviarla en uno, dos o más paquetes de datos. Esto has de controlarlo. | 
19-11-2007, 16:09:37
| | Junior Member Site Admin | | Registrado: nov 2007 Posts: 8
| | Hola,
OK, voy a probar a poner el input en el evento OnComm1.
Un saludo y gracias. | 
19-11-2007, 17:26:12
| | Junior Member Site Admin | | Registrado: nov 2007 Posts: 8
| | Ok, entendido voy a probar.
Lo unico no entiendo muy bien que ocurre, porque he usado un programa para enviar la trama o el hyperterminal y inmediatamente me responde el dispositivo.
Pero usando este programa se envia correctamente la trama, pero no responde nada. He conseguido un software pare monitorear el puerto Com y he podido comprabarlo, envió exactamente lo mismo, pero no recibo nada.
No se que mas puedo hacer. He probado a poner el INPUT en el evento y tampoco me funciona.
Un saludo | 
19-11-2007, 18:03:52
| | Junior Member Site Admin | | Registrado: nov 2007 Posts: 8
| | Hola,
Por fin lo he resuelto. El problema que cerraba el puerto demasiado rapido. Simplemente con otro botón se soluciono el problema.
Lo único ahora me encuentro que en Excel es ilegible lo que recibo, recibo algo asi "〰〰〰〰̱", aunque monitoreando el puerto recibo los valores en hexadecimal correctamente.
Cual puede ser el problema ahora?
Un saludo | 
20-11-2007, 07:16:55
|  | Moderador | | Registrado: dic 2002 Ubicación: Madrid Posts: 4.308
| | Verifica que en SETTINGS del MsComm tienes la velocidad, paridad y bit de stop configurados de la misma forma que el puerto que emite. | 
22-11-2007, 16:59:38
| | Junior Member Site Admin | | Registrado: nov 2007 Posts: 8
| | Hola,
Gracias por tu respuesta.
He verificado que la velocidad, etc, estan iguales en las dos partes, tambien confirmar que mediante un programa para monitorear la comunicación, los datos que devuelve el dispositivo se ven correctamente. Por lo tanto no debe ser este el problema, mas bien entiendo un fallo del programa.
Ojala que alguien me pudiese ayudar.
De todos modos gracias.
Un saludo | | Herramientas | | | | Desplegado | Mode Lineal |
Normas de Publicación
| no Puedes crear nuevos temas no Puedes responder a temas no Puedes adjuntar archivos no Puedes editar tus mensajes Código [IMG] está habilitado Código HTML está deshabilitado | | | La franja horaria es GMT. Ahora son las 06:54:12.
Powered by vBulletin® Version 3.6.8 Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
A vBSkinworks Design
|  |