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连接发请求指令给设备,设备收到以后给你回复。然后你只要分析回复指令就就行了。
具体怎么监听连接,怎么收发。书上说的很清楚。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)