Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

enviar cadena string de letra en letra por serial

¡Resuelto!
Ir a solución

Buenas, estoy usando LabView 8.5 (soy principiante) y despues de guerrear y guerrear logré hacer algo de lo que necesito, pero igual necesito su ayuda.

 

Necesidad:

Estoy comunicando un robot CRS directamente desde LabView sin pasar por RobCom (que es el software maestro del robot), y viendo un lector del puerto serial veo que se envíanlas ordenes al controlador así: R E A D od--> Que es un ENTER.

 

Problema:

Logre hacer esto, pero enviando letra a letra, cuando lo que yo necesito es meter una cadena de caracteres y que automaticamente le separe letra a letra, incluyendo espacios, enters y todo eso. ¿Cómo lo hago? Todo tiene que enviarse como ASCII.

 

imagen 1.png

imagen 2.pngimagen 3.png

 

Como ustedes ven estoy enviando a lo malcriado cada letra.

 

Quisiera meter algo como:

 

READ

MOVG1

Z2

FINISH

 

Y que se mande letra a letra, incluidos los ENTERS y todas las lineas....

 

 

Ayuda please

 

 

0 kudos
Mensaje 1 de 11
11.572 Vistas

Lo he leido todo muchas veces pero realmente no entiendo qué quieres decir con "enviar de letra en letra" Emoticono sorprendido

 

No veo en tu código nada de espacios ni de intervalos entre las letras, así que me parece que lo que has creado es igual a esto:

 

     concatenate.PNG

 

 

¿Has probado enviando algo semejante y viendo si el robot lo entiende? Si no, es necesario que nos brinde alguna información más sobre el protocolo que debes de utilizar para que se te pueda guiar en la solución de tu problema.



Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 kudos
Mensaje 2 de 11
11.565 Vistas

Hola y gracias por responder, sí he intentado como me pones y o funka, lo que pasa es que el robot recibe letra a letra, osea:

R

E

A

D

ENTER

 

Una a la vez, no me entiende si le mando la palabra entera, ya lo he intatado, por eso quiero alguna función que de una cadena de caracteres me envie letra a letra, osea:

 

YO ESCRIBO:

READ

MOV G1

OPEN

MOV G2

SPEED 50

FINISH

 

Pero Labview me lo debe convertir a:

R

E

A

D

ENTER

M

O

V

G

1

ENTER

O

P

E

N

ENTER

 

Osea caracter a caracter....

 

 

 

0 kudos
Mensaje 3 de 11
11.555 Vistas
Solución
Aceptado por el autor del tema Vinicio

Yo tampoco veo ninguna diferencia entre como estas mandando los datos y como te dijo Roberto, los dos mandan los mismos datos, pero resolviendo tu duda lo que podrias hacer es algo como esto:

 

Serial.png

 

 

Rodrigo Cuenca
www.cidesi.com

Mensaje 4 de 11
11.552 Vistas

¿Y qué tiene que estar entre letra y letra? ¿Un tiempo de espera? ¿Un espacio (ASCII 32)? ¿Un retorno de carro (ASCII 13)? ¿o qué?

 

No tengo experiencia en los robots de que hablas y tampoco he visto situaciones semejante en mi trabajo, pero una posibilidad es que sea necesario interponer alguna pausa sea entre las letras sea entra una comando y el siguiente. En el primer caso podrías poner un "Wait" con algun milisecundo en el for de la solución de Rodrigo, en el otro debes ponerlo después de enviar la cadena completa (por ej. el "READ\r").

 

Como te comentaba, nunca he visto un caso del primer tipo que he indicado, mientras que sí lo he visto del segundo, ya que algunos controladores necesitan completar el manejo de un comando antes de poder recibir el siguiente y esto comporta la necesidad de un tiempo de pausa. En particular, el comando READ me parece que es un pedido de lecturas, esto es el controlador debe enviar una respuesta con algun dato: esto puede ocupar varios milisegundos (he visto hasta 100-200 mseg), dependiendo del volumen de datos y del tiempo que el controlador necesita para preparar la respuesta. Acaso ¿has visto si tienes alguna contestación del robot?

Message Edited by Roberto Bozzolo on 06-10-2010 04:44 PM


Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 kudos
Mensaje 5 de 11
11.547 Vistas

Haber lo que pasa es que para que el controlador coga o entienda mi instruccion le tengo que dar letra a letra y sin ningun retardo porque es comunicacion asincrona... Osea yo ya me estoy comunicando con el robot, entonces estoy bien en lo que digo; ya lo estoy moviendo y todo....

 

 

Lo unico quiero saber es como escribir caracter a caracter.... Osea quiero saber como uno escribe HOLA, y se escribe en el puerto serial H, O, L, A..... más claro, como cambio un string en un array..... para luego mandar elemento a elemento

0 kudos
Mensaje 6 de 11
11.534 Vistas
Eso es lo que hace el codigo que puse, convierte el string en un arreglo y luego lo escribe uno por uno
Rodrigo Cuenca
www.cidesi.com

0 kudos
Mensaje 7 de 11
11.531 Vistas

Perfecto, ya con eso estoy completamente online con el robot... funciona lindo esto...

 

Muchas gracias por la ayuda y la atención dada!!!

0 kudos
Mensaje 8 de 11
11.495 Vistas

Hola , mi consulta es parecida, como puedo asignarle una letra a un boton y que este la envie por ejemplo ,si pulso el boton que envie la letra A y si lo apago que envie la letra B

0 kudos
Mensaje 9 de 11
10.463 Vistas

Que tal Perman1 Buenas Tardes:

 

Para que podamos contestar tus preguntas de una manera más eficiente te pido que si es una pregunta distinta la pongas un un nuevo foro.

 

Te envío un ejemplo de como lo puedes hacer. Tienes que cambiar primero el texto boleano para que tengas un texto cuando está en On y otro cuando esté en Off. Esto lo puedes hacer desde las propiedades del Botón en el Boolean Text.

 

Para leer este texto y mandarlo a un indicador se puede hacer a través de un Property node llamado Boolean Text>>Text.

 

 

Juan Arguello Director Support Services @NI
0 kudos
Mensaje 10 de 11
10.428 Vistas