3
« en: Miércoles 26 de Mayo de 2010, 01:19 »
buenas como estan miren soy nuevo en el foro estoy comenzando con matlab manejo Basic y un poco de c++, pero he visto que manejar puertos seriales con c++ es bastante complicado, bueno les explico mi problema. tengo que recibir una trama por un puerto CON serial ya eso lo puedo hacer:
>> PS=serial('COM2');
>> set(PS,'Baudrate',4800);
>> set(PS,'StopBits',1);
>> set(PS,'DataBits',8);
>> set(PS,'Parity','none');
>> set(PS,'Terminator','CR/LF');
>> set(PS,'OutputBufferSize',23);
>> set(PS,'InputBufferSize' ,86);
>> set(PS,'Timeout',5);
>> fopen(PS);
>> v = fscanf(PS,'%c',86)
v =
$GPRMC,220640.34,A,1612.809,N,06410.692,W,21.60,81.11,250510,0.0,E*4B
la cosa es la siguiente el aparato del que recibo estas tramas es un gps pero ademas de esta trama '$GPRMC' el manda otras mas todas juntas como por ejemplo la $GPGLL, $GPGSA, $GPGSV, $GMSS, etc. mi problema es que necesito que el programa guarde en la variable v solo cuando el encabezado de la trama sea $GPRMC, en basic para pics hay un comando que es "wait ('$GPRMC')" que espera a que se lea ese encabezado de trama y de alli comienza a leer hasta que llegue el final de la trama que es CR/LF si este encabezado no llega el no guarda nada en la variable. ¿Existe algun comando asi en matlab?¿como podria hacer esto se los agradeceria?
la simulacion la estoy haciendo con un programa que emula un gps "GPS Generator PRO" y la union entre el puerto 2 y el 3 (GPS Generator PRO) lo hago con el Virtual serial port. lo unico malo de el programa que emula gps es que como es gratis solo me muestra un tipo de trama que es la $GPRMC pero un gps verdadero muestra todas las que puse anteriormente.