在线等,请教linux下读取gps信息问题,读不出gps信息,看一下下面代码有什么问题:

在线等,请教linux下读取gps信息问题,读不出gps信息,看一下下面代码有什么问题:,第1张

1.代码没贴全,main之外呢?

2.openport的函数我不太清楚,认为基本和你注释掉的open函数功能相同.那么openport的第一个参数fd的值是否正确?

3.fcntl(fd, F_SETFL, 0),为什么还要去设置参数为0,openport时应该已经设置了参数吧.

4.上面是打开端口的问题,后面应该是读数据了.如果仍然没有数据的话,先看看读取函数的返回值,不能解决的话你可以考虑换一个端口试试.

你的这个串口设备在打开(也就是调用open函数获取设备描述符)的时候设置的是非阻塞方式。导致串口上没数据的时候read也立即返回,但是你的while已经把有效的数据读走了,if里面读到的一定是空的,所以什么也不打印。

建议

1. 在打开串口设备时使用阻塞方式,不会设置的话查查open系统调用的帮助,它有个flag;

2. 把while循环内的if语句去掉。

权威《unix网络编程》。

做这个事情大概分这么几步。

一:gps设备先通过某种手段上网(可以是拨号上网,wifi。。。。)

二:gps设备向服务器(就是你运行程序的机器)申请连接。可以用域名或者IP找到你的服务器。

三:服务器接受连接。

四:你跟这个gps设备提前预定好。你们的通信形式。

常用的大概也就是,一问一答。你可以通过tcp连接发请求指令给设备,设备收到以后给你回复。然后你只要分析回复指令就就行了。

具体怎么监听连接,怎么收发。书上说的很清楚。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7191915.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存