el 09-12-2008 04:48 PM
Antonio, por lo que parece tienes muchas dudas y algunas muy básicas, por lo que sería bien que buscaras algun tutorial sobre este tema.
Te señalo algunos puntos en tu documento que no entiendo bien u que son de aclarar un poco.
Primero: no se entiende la velocidad de comunicación de tu equipo (así se habla de 4800 como de 9600 baudios): te acuerdo que si este parámetro no es igual en los dos lados de del cable nunca se establecerá la comunicación.
Seguidamente se indica que cada mensaje es terminato por el carácter 0xA: eres seguro que el PIC lo va a transmitir? Si no hay este carácter la lectura seguro que termina con un timeout. Te comento de paso que según lo que parece el PIC va a transmitir bytes en binario y no números en claro, por lo que no es buena cosa usar un carácter de terminación puesto que el mismo podría encontrarse dentro del mensaje y no solamente al final.
He notado que siempre indicas que van a leerse muchos caracteres (1000 o 1024) sea en el MAX, en el VISA y en la librería RS232 del CVI: te aconsejo que bajes este valor puesto que PIC va transmitiento dos bytes solamente para cada mensaje y podrías no recibir 1000 caracteres en los 5 segundos precisados como timeout.
Por último me parece que tienes algunas dudas sobre cómo se transmiten los datos por serial: ten en cuenta que no por recibir los mensajes en cadenas debes esperar que estos sean transmitidos en claro. Por lo que entiendo del programa del PIC, éste va transmitiendo solamente una variable en formato compacto de dos bytes, y no un texto como por ejemplo "1.234" que serían 5 caracteres. Esto es: habrá que hacer alguna conversión del mensaje del PIC para obtener el valor real que quieres. Además es posible que lo que se transmite sea el resultato puro de la conversión de analogico a digital, esto es un número intero que corresponde al valor en bit del señal medido (entre 0 y 1024): en este caso se tratará de aplicar el justo coeficiente para obtener el valor real medido.
el 09-12-2008 04:56 PM
Saludos Roberto!
Gracias por la informacion,aplicare lo que me estas diciendo, la comunicacion si es de 9600 y esta tanto ene l pic como en elabwindows, estoy seguro de que el pic no trasmte 0xA, como hhago que lo trasmita solo lo escribo, si no e sasi no se como hacerlo.
el 09-13-2008 03:19 AM
Si quieres añadir un caráctere al mensaje del PIC crelo que sea suficiente utilizar un segunodo SEROUT en su programa: no estoy seguro de esto ya que no uso esa microprocesadora ni tampoco el microbasic.
Pero antes que todo podrías empezar leyendo dos bytes solamente desde el MAX y ver si retorna algo del PIC
el 09-15-2008 05:50 PM
Hola roberto!
Estoy corrigiendo segun los consejos que me distes, pero tengo este error y no entiendo como corregirlo este es el error: VISA: (Hex 0xBFFF0015) Timeout expired before operation completed, ya que en el pic coloque el salto de linea o el 0xA, pero sigue dandome el error ya no entiendo esto y esto trabado aqui en este error.
gracias por tu tiempo nuevamente
el 09-15-2008 11:53 PM
Antonio, debes controlar que los parámetros de comunicación sean iguales en el PIC y en la PC: si quieres trabajar son el carácter de fin de mensaje el PIC debe enviarlo y la serial en CVI va configurada para esperarlo; si no quieres usarlo debes quitarlo del PIC y del CVI. Chequea bien cómo configuras la comuicación serial en el VISA para averiguar que sea igual a la transmisión del PIC.
Después. debes dejar un adecuato tiempo en el CVI para recibir los caracteres: trabajando en 9600 baudios se transmite aproximadamente un carácter cada milisegundo, asó que debes tener un tiempo de timeout suficiente para recibir todos los caracteres que indicas.
el 09-27-2008 12:03 PM
Un saludo !
tengo noticias disculpa mi falta de consistencia en el foro estaba solucionando mi problema de comunicacion y te puedo decir que consegui solucion, antes que todo gracias por tu aydua, te dejo un archivo para que veas lo que paso y lo que hice para solucionarlo, te puedo adelantar que era un problema con mi tarjeta de adquisicion, pero tambien en el documento te digo que tienes que hacer para solventar esto en labview o labwindow es muy sencilla la solucion (claro esto era para mi problema)
el 09-27-2008 12:18 PM
Me alegra saber que has solucionado tu poblema. Nosostros también utilizamos el Max232 como interfaz entre las microprocesadoras que usamos y las computadoras, y siempre hay que poner un poco de cuidado en los componentes que vienen alrededor de él.
Mucha suerte con tu aplicación.
el 10-01-2008 06:57 PM
Un saludo!
tengo una duda de la comunicazion rs232 del labwindows c, es con respecto a un error d erun time mi codigo es el siguiente,
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <rs232.h>
int er3,er2;
int er5;
static unsigned char buffer[10];
int CR;
int main ()
{
OpenComConfig (6, "COM6", 9600, 0, 8, 1, 512, 512);
er5 = ComRdTerm (6, buffer, 10,CR);
printf ("\nData read: %*f\n",&er5 );
CloseCom (6);
}
estoy tratando d ever por pantalla lo que tienen el conRdterm, pero muestra un error No FATAL RUN TIME maximum field has been exceeden, como corrijo esto, o es qu eno puedo mostarar por pantalla el dato que tengo.
el 10-02-2008 02:10 AM
Hola Antonio,
lo primero que se me ocurre es que no has asignad ningun valor a la variable CR que se usa como terminador. Lo que puede pasar en este caso es que CR tenga un valor no válido (es un byte value, o sea debería estar en el rango desde 0 hasta 255) y el ComRdTerm actue de manera inesperada y restituya un error (a lo mejor intenta leer hasta encontrar el terminator, que no va a encontrar nunca, y acaba leyendo más caracteres de los que caben en 'buffer').
Te aconsejo que pongas int CR = 13 si quieres terminar la lectura en el carácter Carriage return.
Secundariamente, te aconsejo que pongas -1 en la dimensión del buffer de salida de la serial, de esta manera: OpenComConfig (6, "COM6", 9600, 0, 8, 1, 512, -1); esto facilita mucho la comunicación puesto que es sistema no va a utilizar ningun buffer de salida sino que escribe directamente sobre el puerto. Mira a la ayuda en línea para mayores detalles.
Saludos
el 10-05-2008 02:48 PM
Hola Roberto!
ya intente hacer lo que me recomendaste la ultima vez pero no funciona, tambien tengo dudas de como puedo manipular los datos que obtengo por el puerto rs232, y luego graficar estos datos, esto es lo que quiero:
poder ver los datos que obtengo por el puerto y poder manipularlo( esdecir poder meter estos datos en una formula y luego obtener un resultado)
estos datos graficarlos
luego mandar una respuesta por el puerto
intente leer los manuales pero no entiendo y no me es de gran claridad de como hacer estas cosa si puedes una vez mas ayudarme gracias