資源簡介
自己寫的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;
- 上一篇:中文latex教程-Ishort-cn
- 下一篇:微機原理課程設計壓力測控系統
評論
共有 條評論