Linux下接收处理GPS数据

Linux下接收处理GPS数据

开发板平台:FL2440

Linux内核版本: 3.0

 

话不多少,开始干活,对于linux下接收并处理gps数据,那么对于新手的我来讲,一开始把这个项目分成两块,这个也是这个项目的整体方向,第一,接收数据;第二处理数据,下面咱们一块一块的进行。

1接收数据

这个名字有点笼统,确切讲是串口接收gps模块的原始数据,在fl2440开发板左侧大家可以看到有两个母头串口(如图1

 

在开发板上 ls /dev 你会发现

 

ttyS0(这个是连接到电脑的串口,也是图一中上面的那个串口)

ttyS1(这个就是图一中下面的串口,也是连接gps模块,我们需要监听的串口)

由于gps模块也是母头,所以需要自己制作一个公头线,首先进行硬件上的联通,下面看一下RS_232db9线每一个引脚的作用

 

--------------下图为引脚顺序图------------

 

Db9中有效的通信引脚2(RXD),3(TXD),5(GND)。在公头和母头进行连接时,公头2连接母头3,公头3连接母头2。5接5。这样硬件实现了连接。如下,

 

gps模块接上电,此时可以监听串口了,

监听串口命令 microcom -s 4800 /dev/ttyS1

 

有了上述结果。说明接收数据是可以实现的。看到这里不知道有没有人有疑问,这样就可以直接收到数据么,gps,串口都是设备,不需要对gps和串口进行驱动使能么?是这样的,在一开始内核中就已经对串口驱动进行了使能,而gps模块中有gps模块的驱动,这个模块通过自身的串口不断的发送数据开发板需要做的就是读取然后处理就够了,

以上步骤成功,说明硬件上的连通性没的问题,可以说只是准备工作,接下来的才是重点,

 

 

串口编程!!!

数据分析!!!

重要的事情要说三个感叹号

其实编写GPS数据解析程序就是ARM+linux串口编程,串口编程是嵌入式应用程序开发中最基础也是最重要的部分,如何从一个串口设备获取数据并将这些数据做一定的解析呢?OK,串口编程大致可以分为以下几个步骤:

 

至于串口编程的详细介绍,如何设置波特率,如何设置停止位等等,以下给出两个linux

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
要在C语言接收GPS数据,你需要使用串口通信来与GPS设备进行数据交换。下面是一个基本的串口通信代码示例,可以用来接收GPS数据: ``` #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <fcntl.h> #include <termios.h> int main() { int fd; struct termios options; char buffer[255]; fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY); if (fd == -1) { printf("Error opening serial port\n"); return -1; } fcntl(fd, F_SETFL, 0); tcgetattr(fd, &options); cfsetispeed(&options, B9600); cfsetospeed(&options, B9600); options.c_cflag |= (CLOCAL | CREAD); options.c_cflag &= ~PARENB; options.c_cflag &= ~CSTOPB; options.c_cflag &= ~CSIZE; options.c_cflag |= CS8; options.c_cflag &= ~CRTSCTS; options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); options.c_oflag &= ~OPOST; tcsetattr(fd, TCSANOW, &options); while (1) { int bytes_read = read(fd, buffer, sizeof(buffer)); if (bytes_read > 0) { buffer[bytes_read] = '\0'; printf("%s", buffer); } } close(fd); return 0; } ``` 在这个示例,我们使用了Linux系统上的串口通信库。打开串口设备时,我们指定了设备名称 `/dev/ttyUSB0`,这是Linux系统GPS设备串口的默认名称。要确保你的GPS设备连接到了正确的串口,并且串口的波特率设置正确。在本例,我们将波特率设置为9600。 在 `while` 循环,我们使用 `read` 函数从串口读取数据。如果读取到了数据,就将其打印到控制台上。你可以将此代码作为起点,根据你的具体需求进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值