多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > 互聯(lián)網(wǎng) > 從串口設置、讀取、并分析um220模塊的數(shù)據(jù)

從串口設置、讀取、并分析um220模塊的數(shù)據(jù)

來源:程序員人生   發(fā)布時間:2014-10-03 08:00:01 閱讀次數(shù):4058次

好久沒有寫博客了,先從一個小小的程序開始一段新的歷程吧;

最近的項目主要還是用的的是linux系統(tǒng),這篇文章主要介紹如何從設置、讀取BD+gps模塊(um220),實際上主要是對串口(UART)的操作。

/* * gps.c * * um220 test * * Author: Wang Zhengkai <449811900@qq.com> * */ #include <stdio.h> #include <termios.h> #include <strings.h> #include <string.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h>
/*我用的是ubuntu的電腦測試的,使用的串口是ttyS0*/ #define DEV_NODE "/dev/ttyS0" #define MAX_PACKET_SIZE 1024 /* Initialize serial port options */ static void setTermios(struct termios * pNewtio, int uBaudRate) { bzero(pNewtio, sizeof(struct termios)); /* clear struct for new port settings */ //8N1 pNewtio->c_cflag = uBaudRate | CS8 | CREAD | CLOCAL; pNewtio->c_iflag = IGNPAR; pNewtio->c_oflag = 0; pNewtio->c_lflag = 0; //non ICANON } /*設置um220串口的波特率9600,并刷新使其立即生效*/ void um220_uart_init(int ttyFd,struct termios *oldtio,struct termios *newtio) { tcgetattr(ttyFd, oldtio); /* save current serial port settings */ setTermios(newtio, B9600); tcflush(ttyFd, TCIFLUSH); tcsetattr(ttyFd, TCSANOW, newtio); } /*Analysis Data of um220*/ void parseData(char *buf) { int nQ, nN, nB, nC; char cX, cY, cM1, cM2; float fTime, fX, fY, fP, fH, fB, fD; if (buf == NULL) { printf("error: Can't get buf! "); return; } sscanf(buf,"$GNGGA,%f,%f,%c,%f,%c,%d,%02d,%f,%f,%c,%f,%c,%f,%04d%02x",&fTime,&fX,&cX,&fY,&cY,&nQ,&nN,&fP,&fH,&cM1,&fB,&cM2, &fD, &nB, &nC); printf("x: %c %f, y: %c %f, h %f, satellite: %d ",cX, fX, cY, fY, fH, nN);
/*cX:N or S;fX:緯度;cY:E or W;fY:經(jīng)度;fH:height;nN:衛(wèi)星個數(shù)*/ } int main(void) { int nb,command; int um220_fd = -1; char newbuf[MAX_PACKET_SIZE]; char msg[20],*ret=NULL; struct termios oldtio, newtio; /*Open Um220 Module*/ if ((um220_fd = open(DEV_NODE, O_RDWR)) < 0) { printf("error: Can't open serial port %s! ", DEV_NODE); return -1; } /*Init Uart for Um220*/ um220_uart_init(um220_fd,&oldtio,&newtio); /*Set Um220 options*/ printf("Please select modules of um220 "); printf("1.BD module "); printf("2.GPS module "); printf("3.BD+GPS module "); if(scanf("%d",&command) != 1) { printf("error:input is wrong! "); } switch(command) { case 1: memset(msg, 0, sizeof(msg)); strcpy(msg,"$cfgsys,h01"); if(write(um220_fd,msg,sizeof(msg)) < 0) printf("Failed to set BD modules! "); break; case 2: memset(msg, 0, sizeof(msg)); strcpy(msg,"$cfgsys,h10"); if(write(um220_fd,msg,sizeof(msg)) < 0) printf("Failed to set GPS modules! "); break; case 3: memset(msg, 0, sizeof(msg)); strcpy(msg,"$cfgsys,h11"); if(write(um220_fd,msg,sizeof(msg)) < 0) printf("Failed to set BD+GPS modules! "); break; default: printf("Can't identify command,set BD+GPS modules! "); memset(msg, 0, sizeof(msg)); strcpy(msg,"$cfgsys,h11"); if(write(um220_fd,msg,sizeof(msg)) < 0) printf("Failed to set BD+GPS modules! "); } for(;;) { /*Read Data from Um220*/ memset(newbuf, 0, 1024); nb = read(um220_fd, newbuf, MAX_PACKET_SIZE); if (nb == -1) { perror("read uart error"); return -1; } if ((ret=strstr(newbuf, "$GNGGA")) != NULL) { /*Analysis Data*/ parseData(ret); } sleep(1); } /*Recover Settings Of Serial Port*/ tcsetattr(um220_fd,TCSANOW,&oldtio); /*Close Um220_fd*/ close(um220_fd);
return 0; }


生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 偷拍区自拍区 | 91精品国产一区二区三区四区 | jizzzz欧美| 香港一级a毛片在线播放 | 黄色天堂在线 | 成人看片又黄又爽 | 国产mv在线观看 | 中文字幕一二三区乱码老 | 欧美日韩a | 欧美性xxx久久 | 99re热久久精品这里都是精品 | 日韩一级片免费看 | a级爱爱视频 | 精品国产第一页 | 91精品国产美女福到在线不卡 | 被弄出白浆喷水了视频 | 女人天堂网在线观看2019 | 午夜视频高清在线aaa | 视频一区色眯眯视频在线 | 日韩福利网站 | 一二三四视频在线观看免费高清 | 亚洲最大视频网 | 中文字幕欧美亚洲 | 亚洲成人天堂网 | 精品免费久久久久久久 | 精品理论片一区二区三区 | 国产精品视频分类一区 | 成人亚洲欧美综合 | japanese欧美| 午夜啪啪免费视频 | 欧美艾v福利视频在线观看 欧美爱爱爽爽视频在线观看 | 亚洲video| 久久免费国产精品一区二区 | 免费网站h | 亚洲性69影院在线观看 | 性欧美孕妇xxxx | 亚洲精品亚洲九十七页 | 秋霞一级黄色片 | 欧美日韩国产片 | 欧美777 | 特级毛片女人18毛片 |