|
Página 1 de 1
|
Leer Parte De La Respuesta Del Puerto Serie
Autor |
Mensaje |
Manuel
Usuario
Registrado: Septiembre 2009
Mensajes: 17
Edad: 64
|
Leer Parte De La Respuesta Del Puerto Serie
Hola.
Estoy intentando leer una parte de la cadena que recibo del puerto serie.
Para ello, hago una petición al puerto serie y con MID$, quiero mostrar parte de la respuesta.
El código es:
El puerto serie me contesta, correctamente, ya que el TextArea1, se muestra la respuesta.
Pero la parte de final de la cadena, no me la muestra en el TextBox2.
En la respuesta, el primer carácter es el código Chr$(2) -> A,?,214A,W
¿en que me equivoco?
Saludos.
|
#1 Martes, 26 Julio 2011, 23:16 |
|
|
soplo
Analista Programador
Registrado: Septiembre 2009
Mensajes: 843
Edad: 44
|
Re: Leer Parte De La Respuesta Del Puerto Serie
vamos a ver ...
Primero que veo que haces esto
TextArea1.Text = TextArea1.Text & s
Cuando también puedes hacer esto
Ahora lo segundo.
Tu primero envías a #Sport un determinado string y esperas una respuesta ¿es eso? La respuesta es lo que lees inmediatemente detŕas con el read ¿no es así? Porque si es así está mal pero no me meto mas en ello porque no estoy seguro que sea eso.
Lo tercero es que si lees una secuencia de bits digamos 1 0 0 1 tu no puedes meter eso así como así en un textbox. Lo que estarías intentando meter es el ascii 1 mas el ascii 0 mas el ascii 0 mas el ascii 1 y luego quizá te sorprendas que lo que lees en el textbox no parece ser correcto. Tampoco estoy nada seguro si te estoy interpretando bien pero lo que es seguro es que no se pueden meter valores binarios así como así en un textbox. Ese 1 tendrías que pasarlo a su valor ascii y la forma mas simple de hacerlo es a cada elemento sumarle el ASCII de 0 y completar el text con ese valor. Por último ten cuidado con las transformaciones porque el string binario 1001 tiene el valor decimal 9, pero si haces un cint o un clong o algo así (por ejemplo para usar la función hex) lo que vas a obtener no es un 9 sino un 1001.
Espero tu respuesta para poder explicarme con mas claridad.
última edición por soplo el Miercoles, 27 Julio 2011, 03:23; editado 1 vez
|
#2 Miercoles, 27 Julio 2011, 03:18 |
|
|
razaAztk
aztk crux
Analista Programador
Registrado: Enero 2010
Mensajes: 340
Edad: 35 Ubicación: Tenochtitlan
|
Re: Leer Parte De La Respuesta Del Puerto Serie
Lo que pasa es que el caracter 0x02 no es imprimible. Lo que te recomiendo es que pongas su representación numérica en decimal o hexadecimal (usa las funciones Asc() y Hex$() ).
Y sigue también las recomendaciones de soplo.
Saludos!
|
#3 Miercoles, 27 Julio 2011, 03:37 |
|
|
Manuel
Usuario
Registrado: Septiembre 2009
Mensajes: 17
Edad: 64
|
Re: Leer Parte De La Respuesta Del Puerto Serie
Hola Soplo.
Gracias por tu respuesta.
Ya he cambiado la linea que me indicas.
Estoy intentando gobernar un carro de una maquina. Este maquina, responde a las preguntas que se le hace, y cuando se mueve el carro que tiene, indica en cada momento, la posición que va tomando.
Con la orden, le interrogo en que posición esta
Con la orden
Ella me responde con la siguiente linea.
A,?,214A,W
el formato de la respuesta es el código Chr$(2) seguido de "A,?,214,W"
Los tres dígitos, es este ejemplo 214, es la posición en la que esta, y "W" que es una lectura fija
Mi problema es que quiero leer los dos últimos valores (en este caso 214,W)
Puse un TextBox, para mostrar que funcionaba, lo que me interesa es el valor, para sino mandar una orden y posicionarlo en el punto exacto.
Si pongo
Me da un mensaje de erro diciendo que el fichero ha llegado al final.
He intentado solucionarlo con:
No da error, pero no me aparece en el TextBox.
He utilizado cint o un clong, pero me da erro de que espera un tipo pero recibo otro.
¿Como debería de hacerlo?
Un cordial saludo.
Manuel
|
#4 Miercoles, 27 Julio 2011, 19:55 |
|
|
Manuel
Usuario
Registrado: Septiembre 2009
Mensajes: 17
Edad: 64
|
Re: Leer Parte De La Respuesta Del Puerto Serie
Hola,
He conseguido algo.
Con el siguiente código:
Funciona, ahora
LineDatos[3], muestra la letra de que la medida es estable
LineDatos[2], muestra el valor de la posición.
Pero:
Cuando le doy un click no me da ningún valor, tengo que darle dos veces al botón para que me muestre el valor.
Por eso le he puesto el IF Len(Datos_Serie) > 0 THEN ' puesto para que no salga el error "Null Object"
para evitar el error
¿alguna idea?
Saludos y gracias.
Manuel.
|
#5 Miercoles, 27 Julio 2011, 22:51 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Leer Parte De La Respuesta Del Puerto Serie
Citar: Pero:
Cuando le doy un click no me da ningún valor, tengo que darle dos veces al botón para que me muestre el valor.
Yo creo que es porque la primera vez que preguntas "IF Sport.Status = Net.Active" es falso. No estoy seguro.
Yo usaría el evento _Read() del puerto serie para leer el buffer de datos del puerto serie, en lugar de hacerlo mediante un botón, y dejaría para dicho botón el envío manual de las órdenes hacia el dispositivo, es decir, la escritura. El evento Read se dispara siempre que haya datos pendientes de leer en el puerto, sólo tienes que trasladar la parte de tu código que se encarga de leerlo.
Si el puerto serie lo has creado desde el IDE de gambas, ya estarán declarados su manejadores de eventos, pero si lo has creado por código deberás hacerlo manualmente de esta forma:
Y luego declarar el manejador:
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#6 Miercoles, 27 Julio 2011, 23:13 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|