www.pudn.com > gps_ucos.rar > gps_main.c


/************************************************
 *  serial communication demo
 *  by Zou jian guo    
 *  2003-12-22
 *
*************************************************/

#include 
#include "../startup/uhal.h"

#include "../gps/gps.h"
#include "../startup/uart.h"

#define FALSE 0
#define TRUE 1

volatile int STOP=FALSE;
GPS_INFO gps_info;
int GET_GPS_OK=FALSE;
char GPS_BUF[1024];

/*--------------------------------------------------------*/
/*void keyboard(void * data)
{
    int c;
	for (;;){
		if((c=(int)GetKey()) == 15){
       		STOP=TRUE;
       		break ;
		}
		Uart_Printf("key=%d\n",c);
	}
//    return NULL;
}
*/

/*--------------------------------------------------------*/
/* modem input handler */
void show_gps_info(void * data)
{
	while(1){
		if(GET_GPS_OK){
			GET_GPS_OK=FALSE;
			gps_parse(GPS_BUF,&gps_info);
			show_gps(&gps_info);
		}
		OSTimeDly(200);
//		if(STOP)break;
	}
}

/*--------------------------------------------------------*/
/* modem input handler */
void receive(void * data)
{
	int i=0, tmp=0;
	u8 c;
	static char buf[1024];
	GPS_INFO GPS;
//  	Uart_Printf("read modem\n");

//	while (STOP==FALSE) 	{
	while (1) {
	  	tmp = OSReadUart1(&c, 1, 0);	/* read from com port */
	    	buf[i++] = c;

		if(c == '\n'){
			buf[i]=0;
			strcpy(GPS_BUF, buf);
			i=0;
			GET_GPS_OK = TRUE;
			Uart_Printf("%s", GPS_BUF);
			OSTimeDly(200);
		}
//		if(STOP)break;
  	}
	
  	Uart_Printf("exit from reading modem\n");
}


/*--------------------------------------------------------*/


/*int main(int argc,char** argv)
{

	struct termios oldtio,newtio,oldstdtio,newstdtio;
	struct sigaction sa;
	int ok;
 	pthread_t th_a, th_b, th_show;
 	void * retval;

   	fd = open(COM2, O_RDWR );
	if (fd <0) {
    	perror(COM2);
    	exit(-1);
  	}
  	tcgetattr(0,&oldstdtio);
  	tcgetattr(fd,&oldtio); //save current modem settings 
  	tcgetattr(fd,&newstdtio); // get working stdtio //
	newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;//ctrol flag//
	newtio.c_iflag = IGNPAR; //*input flag//
	newtio.c_oflag = 0;		//output flag//
 	newtio.c_lflag = 0;
 	newtio.c_cc[VMIN]=1;
	newtio.c_cc[VTIME]=0;
 // now clean the modem line and activate the settings for modem //
 	tcflush(fd, TCIFLUSH);
	tcsetattr(fd,TCSANOW,&newtio);//set attrib	  //

  	pthread_create(&th_a, NULL, keyboard, 0);
  	pthread_create(&th_b, NULL, receive, 0);
  	pthread_create(&th_show, NULL, show_gps_info, 0);

	
	while(!STOP){
		Delay(100000);
	}

	
//		
//  	pthread_join(th_a, &retval);
//  	pthread_join(th_b, &retval);
//  	pthread_join(th_show, &retval);
//
  	tcsetattr(fd,TCSANOW,&oldtio); // restore old modem setings //
  	tcsetattr(0,TCSANOW,&oldstdtio); // restore old tty setings //
  	close(fd);
  	exit(0); 
}
*/