• 大小: 13KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: 其他
  • 标签: NMEA  C语言  

资源简介

自己写的C代码GPS数据解析程序/正在进行的是基于MINIGUI的GPS导航项目。。。完成后将续传。。。eeweifeng111@q63.com

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define GPS_RECV_CMD_MAX_BUF  256 

struct termios newtio oldtio;

int set_opt(int fdint nSpeed int nBits char nEvent int nStop)
{
if  (tcgetattr(fd &oldtio) != 0) { 
perror(“SetupSerial 1“);
return -1;
}

        newtio = oldtio;

newtio.c_cflag &= ~CSIZE; 
switch(nBits)
{
case 7:
newtio.c_cflag |= CS7;
break;
case 8:
newtio.c_cflag |= CS8;
break;
}

switch(nEvent)
{
case ‘O‘:
newtio.c_cflag |= PARENB;
newtio.c_cflag |= PARODD;
newtio.c_iflag |= (INPCK | ISTRIP);
break;
case ‘E‘: 
newtio.c_iflag |= (INPCK | ISTRIP);
newtio.c_cflag |= PARENB;
newtio.c_cflag &= ~PARODD;
break;
case ‘N‘:  
newtio.c_cflag &= ~PARENB;
break;
}

switch(nSpeed)
{
case 2400:
cfsetispeed(&newtio B2400);
cfsetospeed(&newtio B2400);
break;
case 4800:
cfsetispeed(&newtio B4800);
cfsetospeed(&newtio B4800);
break;
case 9600:
cfsetispeed(&newtio B9600);
cfsetospeed(&newtio B9600);
break;
case 115200:
cfsetispeed(&newtio B115200);
cfsetospeed(&newtio B115200);
break;
default:
cfsetispeed(&newtio B9600);
cfsetospeed(&newtio B9600);
break;
}

if(nStop == 1)
newtio.c_cflag &= ~CSTOPB;
else if (nStop == 2)
        newtio.c_cflag |= CSTOPB;

newtio.c_cflag |= CLOCAL | CREAD; 
newtio.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);// raw mode output no echo.
        newtio.c_oflag &= ~OPOST;//turn off out control bits

newtio.c_cc[VTIME] = 0;
newtio.c_cc[VMIN] = 1;

tcflush(fd TCIOFLUSH);
if((tcsetattr(fd TCSANOW &newtio)) != 0)
{
perror(“com set error“);
return -1;
}
printf(“set done!\n“);
return 0;
}

int open_port(int fdint comport)
{

if (comport == 1)
{ fd = open( “/dev/ttyS0“ O_RDWR | O_NOCTTY | O_NDELAY);
if (-1 == fd){
perror(“Can‘t Open Serial Port“);
return(-1);
}
else 
printf(“open ttyS0 .....\n“);
}
else if(comport == 2)
{ fd = open( “/dev/ttyUSB0“ O_RDWR | O_NOCTTY | O_NDELAY);// | O_NONBLOCK
if (-1 == fd){
perror(“Can‘t Open Serial Port“);
return(-1);
}
else 
printf(“open ttyS1 .....\n“);
}
else if (comport == 3)
{
fd = open( “/dev/ttyS2“ O_RDWR | O_NOCTTY | O_NDELAY);
if (-1 == fd){
perror(“Can‘t Open Serial Port“);
return(-1);
}
else 
printf(“open ttyS2 .....\n“);
}

if(fcntl(fd F_SETFL 0) < 0)//fcntl(fd F_GETFL 0) & ~O_NONBLOCK
printf(“fcntl failed!\n“);
else
printf(“fcntl=%d\n“ fcntl(fd F_GETFL 0));

if(isatty(STDIN_FILENO) == 0)
printf(“standard input is not a terminal device\n“);
else
printf(“isatty success!\n“);

printf(“fd-open=%d\n“ fd);
return fd;
}

typedef struct GGAINFO {
int    bIsGPGGA;
  unsigned char  hour bjhour min sec secFrac;

评论

共有 条评论